75
Heloisa Reis Leal Operações Booleanas na Modelagem por Pontos Dissertação de Mestrado Dissertação apresentada como requisito parcial para obtenção do título de Mestre pelo Programa de Pós- Graduação em Informática da PUC-Rio. Orientadores: Prof. Waldemar Celes Filho Prof. Luiz Velho Rio de Janeiro, agosto de 2004

Heloisa Reis Leal profs - visgraf.impa.br · Computação Gráfica Interativa . Abstract Leal, Heloisa Reis; ... 3.5. Aquisição do modelo 23 ... d (d) Resultado de A ∩ B: A d

Embed Size (px)

Citation preview

Heloisa Reis Leal

Operaccedilotildees Booleanas na Modelagem por Pontos

Dissertaccedilatildeo de Mestrado

Dissertaccedilatildeo apresentada como requisito parcial para obtenccedilatildeo do tiacutetulo de Mestre pelo Programa de Poacutes-Graduaccedilatildeo em Informaacutetica da PUC-Rio

Orientadores Prof Waldemar Celes Filho Prof Luiz Velho

Rio de Janeiro agosto de 2004

Heloisa Reis Leal

Operaccedilotildees Booleanas na Modelagem por Pontos

Dissertaccedilatildeo apresentada como requisito parcial para obtenccedilatildeo do tiacutetulo de Mestre pelo Programa de Poacutes-Graduaccedilatildeo em Informaacutetica da PUC-Rio Aprovada pela Comissatildeo Examinadora abaixo assinada

Prof Waldemar Celes Filho Orientador

Departamento de Informaacutetica-PUC-Rio

Prof Luiz Velho Co-orientador

Instituto de Matemaacutetica Pura e Aplicada (IMPA)

Prof Bruno Feijoacute Departamento de Informaacutetica-PUC-Rio

Prof Marcelo Dreux Departamento de Mecacircnica-PUC-Rio

Prof Paulo Cezar Pinto Carvalho Instituto de Matemaacutetica Pura e Aplicada (IMPA)

Prof Joseacute Eugecircnio Leal Coordenador Setorial do Centro Teacutecnico Cientiacutefico - PUC-Rio

Rio de Janeiro 3 de agosto de 2004

Todos os direitos reservados Eacute proibida a reproduccedilatildeo total ou parcial do trabalho sem autorizaccedilatildeo da universidade da autora e do orientador

Heloisa Reis Leal Graduou-se em Ciecircncia da Computaccedilatildeo pela Universidade Federal de Minas Gerais (UFMG) em abril de 1992 Trabalhou como Analista de Sistemas na empresa Telecomunicaccedilotildees de Minas Gerais SA (TELEMIG) entre 1993 e 1997 onde atuou no desenvolvimento de sistemas de controle da rede telefocircnica de Minas Gerais Trabalhou como Analista de Sistemas no Tribunal de Justiccedila do Estado de Minas Gerais (TJMG) entre 1998 e 2001 onde atuou no desenvolvimento de sistemas controle de processos e controle de equipamentos Desde 2002 trabalha no Serviccedilo Federal de Processamento de Dados (SERPRO) desenvolvendo sistema de controle da Malha Fiscal do Imposto de Renda - Pessoa Fiacutesica

Ficha Catalograacutefica

Leal Heloisa Reis

Operaccedilotildees booleanas na modelagem por pontos

Heloisa Reis Leal orientadores Waldemar Celes Filho

Luiz Velho ndash Rio de Janeiro PUC Departamento de

Informaacutetica 2004

75 f il 30 cm

Dissertaccedilatildeo (mestrado) ndash Pontifiacutecia

Universidade Catoacutelica do Rio de Janeiro Departamento de

Informaacutetica

Inclui referecircncias bibliograacuteficas

1 Informaacutetica ndash Teses 2 Computaccedilatildeo graacutefica

interativa 3 Modelagem 3D 4 Modelagem por pontos 5

Operaccedilotildees booleanas I Celes Filho Waldemar II Velho

Luiz III Pontifiacutecia Universidade Catoacutelica do Rio de Janeiro

Departamento de Informaacutetica III Tiacutetulo

CDD 004

Agrave minha matildee Tetecirc Daacutelton e Lucas

Agradecimentos Aos meus orientadores Waldemar Celes e Luiz Velho pelo apoio dedicaccedilatildeo e paciecircncia que tornaram este trabalho possiacutevel Agrave PUC-Rio pelo apoio financeiro Aos membros da banca examinadora pelas correccedilotildees e sugestotildees Agrave Cristina Griner chefe de projeto do SERPRO pelo apoio compreensatildeo e ajuda Aos meus professores de mestrado pelos conhecimentos transmitidos Agrave Mauren Paola Ruthner pela amizade e colaboraccedilatildeo durante todo o mestrado Aos colegas do Departamento de Informaacutetica da PUC-Rio pelos momentos compartilhados Agrave minha matildee pela revisatildeo do texto desta dissertaccedilatildeo e pelo total apoio sem o qual este trabalho natildeo seria possiacutevel Agrave Daacutelton e Tetecirc meus queridos irmatildeos pelo apoio incentivo e colaboraccedilatildeo

Resumo

Leal Heloisa ReisCeles Waldemar (Orientador) Operaccedilotildees Booleanas na Modelagem por Pontos Rio de Janeiro 2004 75p Dissertaccedilatildeo de Mestrado - Departamento de Informaacutetica Pontifiacutecia Universidade Catoacutelica do Rio de Janeiro

Operaccedilotildees booleanas em modelagem 3D satildeo usadas para criar novos

modelos ou para modificaacute-los Na maioria dos tipos de representaccedilatildeo de objetos

3D estas operaccedilotildees satildeo bastante complexas Nos uacuteltimos anos tem sido muito

explorado um novo tipo de modelagem a modelagem por pontos que apresenta

muitas vantagens em relaccedilatildeo agraves outras representaccedilotildees como maior simplicidade

e eficiecircncia Dois trabalhos exploram as operaccedilotildees booleanas na modelagem

por pontos o trabalho de Adams e Dutreacute e o trabalho de Pauly et al Dada a

grande importacircncia deste novo tipo de modelagem e do uso de operaccedilotildees

booleanas esta dissertaccedilatildeo apresenta uma introduccedilatildeo agrave modelagem por pontos

implementa o algoritmo proposto em Adams e Dutreacute com algumas melhorias e o

compara com o meacutetodo de Pauly et al

Palavras-chave

Modelagem 3D Modelagem por pontos Operaccedilotildees Booleanas

Computaccedilatildeo Graacutefica Interativa

Abstract

Leal Heloisa Reis Celes Waldemar(Advisor) Boolean Operations on Point-based models Rio de Janeiro 2004 75p MSc Dissertation - Departamento de Informaacutetica Pontifiacutecia Universidade Catoacutelica do Rio de Janeiro

Boolean operations are used to create or modify models These operations

in the majority of 3D object representations are very complex In the last years a

significant trend in computer graphics has been the shift towards point sampled

3D models due to their advantages over other representations such as simplicity

and efficiency Two recent works present algorithms to perform interactive

boolean operations on point-based models the work by Adams and Dutreacute and

the work by Pauly et Al Due to great importance of this novel representation

and of the use of boolean operations the present work makes an introduction to

point-based representation implements the algorithm proposed by Adams and

Dutreacute with some improvements and compares this implementation with the work

by Pauly et al

Palavras-chave

3D Modeling Point-based Modeling Boolean Operation Interactive

Computer Graphics

Sumaacuterio

1 Introduccedilatildeo 15

2 Trabalhos relacionados 18

3 Modelagem por Pontos 20 31 Ideacuteia da Representaccedilatildeo 20 32 Tipos de distribuiccedilatildeo dos surfels 22 33 Estrutura de multi-resoluccedilatildeo 22 34 Dados que um surfel pode conter 23 35 Aquisiccedilatildeo do modelo 23 351 Aquisiccedilatildeo da geometria 23 352 Aquisiccedilatildeo da textura 24 353 Correccedilatildeo das falhas da aquisiccedilatildeo 25 36 Reconstruccedilatildeo da superfiacutecie (contiacutenua) a partir do modelo (discreto) 25 37 Visualizaccedilatildeo do modelo 26 38 Ediccedilatildeo do modelo 28

4 Operaccedilotildees Booleanas com Pontos 29 41 Meacutetodos para realizar operaccedilotildees booleanas em objetos modelados por

pontos 29 42 Meacutetodo de Adams e Dutreacute 33 421 Modelo por Pontos em Adams e Dutreacute 33 422 Algoritmo de Operaccedilotildees Booleanas 34 43 Meacutetodo de Pauly 39 431 Modelo em Pauly 40 432 Algoritmo de Operaccedilotildees Booleanas 40 44 Validade da Regra 2 43

5 Melhorias Propostas 47 51 Descriccedilatildeo do algoritmo 47 511 Criaccedilatildeo e classificaccedilatildeo de uma octree para cada modelo 48

512 Teste DentroFora 52 513 Criaccedilatildeo do modelo resultado 54 52 Implementaccedilatildeo 55 521 Estruturas de Dados 57

6 Resultados 61 61 Testes 61 62 Comparaccedilatildeo entre os dois meacutetodos que realizam operaccedilotildees booleanas 68

7 Conclusatildeo 71 71 Trabalhos Futuros 72

8 Referecircncias Bibliograacuteficas 73

11

Lista de figuras

Figura 1 Um modelo por pontos e sua visualizaccedilatildeo 21 Figura 2 A superfiacutecie modelada por surfels O surfel em destaque tem raio de

alcance rt e normal n 22 Figura 3 Modelo por pontos e sua renderizaccedilatildeo usando Surface Splatting 26 Figura 4 Trecircs modelos novos foram criados a partir dos quatro iniciais (esfera

cilindro dois cubos) O primeiro eacute a esfera menos um cubo em seguida

retirou-se outro cubo e por uacuteltimo retirou-se o cilindro 29 Figura 5 A partir de dois modelos por pontos uma heacutelice e uma cabeccedila as trecircs

operaccedilotildees booleanas satildeo mostradas da esquerda para a direita uniatildeo

diferenccedila e interseccedilatildeo 30 Figura 6 (a) Dois modelos A e B (b) Posicionados de forma que A tem uma parte

dentro de B eacute mostrado o resultado A U B Af + Bf (c) Resultado de A ndash B Af

+ Bd (d) Resultado de A cap B Ad + Bd 31 Figura 7 Para classificar o ponto x encontra-se o surfel p (com normal np) mais

proacuteximo a x Se o produto interno entre np e (x ndash p) for maior que zero entatildeo

x eacute classificado como fora senatildeo seraacute classificado como dentro 32 Figura 8 Interseccedilatildeo de duas esferas agrave esquerda sem nenhum tratamento de

interseccedilatildeo agrave direita apoacutes o tratamento de interseccedilatildeo 33 Figura 9 Um objeto representado por pontos com suas normais e sua quadtree

correspondente classificada os noacutes cinza claro estatildeo dentro do modelo noacutes

cinza mais escuro estatildeo fora do modelo e noacutes com cinza intermediaacuterio satildeo

noacutes cheios noacutes que conteacutem pontos 35 Figura 10 Divisatildeo de noacute de contorno a parte agrave esquerda estaacute fora do modelo a

parte agrave direita estaacute dentro do modelo e a faixa intermediaacuteria conteacutem os

surfels 36 Figura 11 Interseccedilatildeo do surfel s e do plano que passa pelo surfel t o surfel mais

proacuteximo a s O surfel s eacute substituiacutedo por trecircs surfels menores 38 Figura 12 Agrave direita eacute mostrado o resultado do tratamento de interseccedilatildeo para o

caso de Arestas Vivas do objeto agrave esquerda 39 Figura 13 Os novos surfels satildeo colocados exatamente na curva de interseccedilatildeo e

convergem para o ponto de interseccedilatildeo 42 Figura 14 (a) Suponhamos a reta que eacute a interseccedilatildeo do plano tangente a S1 em

q1 e o plano tangente a S2 em q2 O ponto r eacute o ponto desta reta que estaacute

12

mais proacuteximo a q1 e q2 (b) r eacute projetado sobre S1 e S2 obtendo-se q1acute e q2acute

dois novos pontos de partida para nova iteraccedilatildeo (c) A nova iteraccedilatildeo gera r

que eacute uma aproximaccedilatildeo melhor de q 43 Figura 15 Para verificar se o ponto x estaacute fora de um contorno C encontra-se o

ponto y de C Se o produto interno entre a normal em y e o vetor que liga y a

x for maior que zero entatildeo x estaacute fora de C senatildeo estaacute dentro de C 44 Figura 16 As curvas vermelhas satildeo o Eixo Medial da curva em preto 45 Figura 17 Em 3D geralmente o Eixo Medial eacute uma superfiacutecie 2D (em vermelho)

Aqui o quadrado eacute o Eixo Medial da superfiacutecie transparente que o contorna

45 Figura 18 A figura mostra o diagrama de Voronoi de uma amostragem de pontos

S Da mesma forma que a amostragem aproxima a curva os veacutertices de

Voronoi aproximam o Eixo Medial 46 Figura 19 Quadtree classificada Os noacutes mais escuros estatildeo fora do modelo os

mais claros dentro e os em tom intermediaacuterio satildeo noacutes de contorno 48 Figura 20 O noacute cheio eacute dividido em trecircs partes agrave esquerda a regiatildeo estaacute dentro

do modelo agrave direita estaacute fora e entre as duas linhas que dividem o noacute estaacute a

regiatildeo que conteacutem os surfels 49 Figura 21 O noacute a eacute classificado pelo noacute c o noacute d tambeacutem eacute classificado pelo noacute c

a classificaccedilatildeo do noacute a eacute propagada para o noacute b 50 Figura 22 Os cantos a e b do noacute cheio possuem a mesma classificaccedilatildeo fora do

modelo Esta classificaccedilatildeo foi dada ao noacute vazio adjacente 50 Figura 23 Quadtree classificada 51 Figura 24 A normal n eacute a normal meacutedia e os surfels s1 e s2 juntamente com a

normal n definem as retas que dividem o noacute 52 Figura 25 Duas circunferecircncias e suas quadtrees correspondentes 53 Figura 26 a modelos natildeo se intersectam b modelo intersecta noacutes fora c

modelo intersecta apenas noacutes dentro d modelo intersecta noacutes dentro e noacutes

fora 54 Figura 27 Software PointShop 3D com dois modelos carregados na sua cena 56 Figura 28 Menu do PointShop com o plugin e as opccedilotildees para operaccedilotildees

booleanas 57 Figura 29 Modelo do PointShop Igea 62 Figura 30 Resultado da uniatildeo de duas Igeas 63 Figura 31 Resultado da interseccedilatildeo de duas Igeas 63 Figura 32 Resultado da diferenccedila entre duas Igeas 64

13

Figura 33 Modelo do PointShop MaxPlanck 65 Figura 34 Modelo do PointShop Male 66 Figura 35 Resultado da Uniatildeo do modelo Male com MaxPlanck 66 Figura 36 Resultado da interseccedilatildeo do modelo Male com o MaxPlanck 67 Figura 37 Resultado da diferenccedila do modelo Male do modelo MaxPlanck 67

14

Lista de tabelas

Tabela 1 Classificaccedilatildeo para operaccedilotildees booleanas 42

Tabela 2- Nuacutemero de surfels dos modelos resultantes 64 Tabela 3- Meacutedia dos tempos de processamento para as operaccedilotildees com duas

Igeas 65

Tabela 4-Tempo de processamento das operaccedilotildees com os modelos MaxPlanck

e Male 68 Tabela 5- Nuacutemero de surfels dos modelos resultados das operaccedilotildees com os

modelos MaxPlanck e Male 68

15

1 Introduccedilatildeo

O mundo digital estaacute conquistando cada vez mais espaccedilo nos meios de

comunicaccedilatildeo Sons imagens viacutedeos digitais satildeo miacutedias muito usadas em

diversas aacutereas como entretenimento medicina desenho industrial engenharia

arquitetura educaccedilatildeo arte ciecircncia entre outras Podemos citar alguns

exemplos dentro destas aacutereas como jogos efeitos especiais filmes digitais

visualizaccedilatildeo cientiacutefica viacutedeo-conferecircncia comeacutercio na internet Nos uacuteltimos anos

verificamos que o modelo 3D vem se tornando um novo meio de comunicaccedilatildeo

digital Com o desenvolvimento da tecnologia de aquisiccedilatildeo e do processamento

de modelos 3D ele vem sendo cada vez mais utilizado Jogos 3D animaccedilotildees

aplicaccedilotildees em realidade virtual visualizaccedilatildeo cientiacutefica aplicaccedilotildees para aacuterea

meacutedica e odontoloacutegica criaccedilatildeo de reacuteplicas para estudo e preservaccedilatildeo do

patrimocircnio histoacuterico sistemas CADCAM cataacutelogos de modelos 3D na Web para

comercializaccedilatildeo criaccedilatildeo de protoacutetipos para arquitetura engenharia satildeo alguns

exemplos de aplicaccedilotildees que usam modelos 3D

A aacuterea que estuda a representaccedilatildeo de um modelo 3D no computador eacute

chamada de modelagem em computaccedilatildeo graacutefica Existem diversos tipos de

modelagem para as diversas aplicaccedilotildees que usam um modelo 3D como por

exemplo representaccedilotildees poligonais como malhas triangulares que satildeo

geralmente usadas na aacuterea de entretenimento Este trabalho explora um novo

tipo de modelagem a modelagem por pontos

A modelagem por pontos comeccedilou a ser largamente explorada nesta

deacutecada e trata-se de uma aacuterea muito promissora em computaccedilatildeo graacutefica dadas

agraves vaacuterias e grandes vantagens em relaccedilatildeo aos outros tipos de representaccedilatildeo

como esquema de representaccedilatildeo CSG (Constructive Solid Geometry) [1] ou

malhas poligonais Dentre as principais vantagens podemos citar grande

simplicidade e flexibilidade boa performance robustez Mas a principal

vantagem desta modelagem que foi o fator que impulsionou o seu grande

desenvolvimento nesta deacutecada eacute que esta modelagem por pontos eacute a melhor

opccedilatildeo para tratar os dados de saiacuteda de equipamentos de aquisiccedilatildeo de modelos

3D O uso destes equipamentos tem aumentado muito nesta deacutecada A

16

tecnologia destes equipamentos tem progredido muito e eles tecircm se tornado

mais baratos A tendecircncia eacute que o uso destes equipamentos se torne o mais

utilizado meio de obtenccedilatildeo de modelos 3D Isto porque construir modelos 3D

bastante detalhados por meio de um software de modelagem eacute muito trabalhoso

O processo de aquisiccedilatildeo de modelos por meio destes equipamentos automatiza

este processo de construccedilatildeo

No trabalho com modelos 3D frequumlentemente satildeo usadas as operaccedilotildees

booleanas que satildeo operaccedilotildees de uniatildeo interseccedilatildeo ou diferenccedila No esquema

de representaccedilatildeo CSG estas operaccedilotildees fazem parte da representaccedilatildeo do

objeto Estas operaccedilotildees tambeacutem podem ser usadas para criar novos modelos ou

para alteraacute-los Na maioria dos tipos de representaccedilatildeo de objetos 3D estas

operaccedilotildees satildeo bastante complexas

A simplicidade da representaccedilatildeo por pontos permite que as operaccedilotildees

booleanas sejam realizadas com facilidade se compararmos com a realizaccedilatildeo

destas operaccedilotildees em outros tipos de representaccedilatildeo como malhas poligonais

Motivada pelas vantagens desta modelagem e pela utilidade destas operaccedilotildees

esta dissertaccedilatildeo apresenta uma introduccedilatildeo geral de modelagem por pontos e

trabalha mais especificamente com operaccedilotildees booleanas em objetos

modelados por pontos Dois trabalhos que exploram as operaccedilotildees booleanas na

modelagem por pontos seratildeo abordados o trabalho de Adams e Dutreacute [2] e o

trabalho de Pauly et al [3] O presente trabalho implementa o meacutetodo de Adams

e Dutreacute com algumas melhorias e faz uma comparaccedilatildeo entre o meacutetodo de Pauly

[3] e o meacutetodo de Adams e Dutreacute [2] com nossas melhorias

Como contribuiccedilotildees dadas por este trabalho apresentamos

- um estudo sobre modelagem por pontos

- um estudo sobre operaccedilotildees booleanas com pontos

- proposta de melhorias ao algoritmo proposto por Adams e Dutreacute [2]

- comparaccedilatildeo dos dois meacutetodos propostos para realizar estas operaccedilotildees

meacutetodo de Pauly et al [3] e de Adams e Dutreacute [2]

Este trabalho vem apresentado nesta dissertaccedilatildeo organizada em sete

capiacutetulos conforme descrito resumidamente a seguir

O capiacutetulo 2 cita alguns trabalhos sobre modelagem por pontos que estatildeo

relacionados a este trabalho

O capiacutetulo 3 apresenta uma visatildeo geral do modelo por pontos e explica

melhor alguns trabalhos citados no capiacutetulo 2

17

O capiacutetulo 4 apresenta operaccedilotildees booleanas com pontos e os dois

meacutetodos para realizaacute-las na modelagem por pontos meacutetodo de Pauly et al [3] e

de Adams e Dutreacute [2]

O capiacutetulo 5 apresenta algumas melhorias ao algoritmo de Adams e Dutreacute

[2] e a nossa implementaccedilatildeo deste algoritmo

O capiacutetulo 6 traz os resultados obtidos

E finalmente o capiacutetulo 7 encerra o trabalho com uma conclusatildeo e com

possiacuteveis trabalhos futuros

Trabalhos relacionados 18

2 Trabalhos relacionados

O primeiro pesquisador a propor o uso de pontos como primitiva graacutefica foi

Levoy em [4] Ele propotildee o uso de pontos como primitiva de renderizaccedilatildeo e

discute a conversatildeo dos outros modelos para o modelo por pontos

Nos uacuteltimos anos vaacuterios trabalhos importantes tecircm sido realizados na aacuterea

em diversos segmentos em visualizaccedilatildeo podemos destacar os trabalhos de

Pfister [5] e de Zwicker [6] que usam pontos como primitiva de renderizaccedilatildeo e

com resultados praacuteticos interativos muito bons

Em [7] Pauly et al propotildeem algoritmos para modelagem multi-resoluccedilatildeo

em modelos por pontos

Os trabalhos de Curless [8] e Rusinkiewicz [9] discutem os meacutetodos de

aquisiccedilatildeo que consistem em obter uma amostragem de pontos da superfiacutecie do

objeto real por meio de equipamentos como por exemplo o scanner 3D

Nas operaccedilotildees booleanas a interseccedilatildeo das superfiacutecies dos modelos

iniciais seraacute parte do modelo resultado e para ser representada corretamente

precisa ser reconstruiacuteda A reconstruccedilatildeo da superfiacutecie tambeacutem eacute usada na

visualizaccedilatildeo de um modelo Um trabalho significativo na aacuterea de reconstruccedilatildeo de

superfiacutecies estaacute em [10] de N Amenta etal Este trabalho apresenta uma

soluccedilatildeo praacutetica com garantias teoacutericas para este problema e uma heuriacutestica para

o tratamento de arestas vivas a questatildeo mais difiacutecil desta aacuterea Um exemplo

de uma aresta viva eacute o encontro de dois planos natildeo coincidentes

Frequumlentemente a interseccedilatildeo citada acima (interseccedilatildeo entre os modelos iniciais)

gera uma aresta viva (seccedilatildeo 4223)

O algoritmo aqui implementado eacute um plugin para o software PointShop 3D

[11] de Zwicker et al software de ediccedilatildeo de modelos com pontos O PointShop

tem seu coacutedigo aberto documentaccedilatildeo e trabalha com plugins Ele permite a

visualizaccedilatildeo e ediccedilatildeo interativa do modelo por pontos Eacute o uacutenico software livre

disponiacutevel com estas caracteriacutesticas Esta implementaccedilatildeo na forma de um plugin

facilitou muito o trabalho pois natildeo foi necessaacuterio implementar a visualizaccedilatildeo do

modelo 3D Aleacutem disso o Pointshop conteacutem tambeacutem um plugin com a

implementaccedilatildeo do meacutetodo de Pauly et al [3] discutido nesta dissertaccedilatildeo A

Trabalhos relacionados 19

execuccedilatildeo dos dois plugins que realizam operaccedilotildees booleanas pocircde ser

comparada

Os trabalhos aqui discutidos satildeo o de Bart Adams e Philip Dutreacute [2] e de

Pauly et al[3] que apresentam meacutetodos diferentes para realizaccedilatildeo de

operaccedilotildees booleanas com pontos Adams e Dutreacute utilizam octrees [1] e Pauly

Kd-Tree [16] e MLS (Moving Least Squares) [18] Estes algoritmos satildeo

discutidos no capiacutetulo 4

O trabalho de Sara F Frisken [12] apresenta um algoritmo para realizar

operaccedilotildees em octree de forma mais eficiente Como estas operaccedilotildees estatildeo

presentes em todo o nosso algoritmo este trabalho certamente oferece uma

forma de otimizaccedilatildeo mas que natildeo foi implementada

Modelagem por Pontos 20

3 Modelagem por Pontos

A computaccedilatildeo graacutefica natildeo lida diretamente com o objeto ou com o

fenocircmeno fiacutesico lida com modelos graacuteficos ou geomeacutetricos Modelos graacuteficos

satildeo estruturas computacionais (abstratas) que capturam aspectos de objetos de

interesse para uma aplicaccedilatildeo como forma cor textura etc Se apenas a forma

ou a geometria do objeto eacute relevante temos modelos geomeacutetricos

Estes modelos satildeo usados em vaacuterias aplicaccedilotildees em computaccedilatildeo graacutefica

como roboacutetica visatildeo computacional simulaccedilotildees realistas anaacutelises estruturais

prototipagem projeto e manufatura de produtos eletromecacircnicos arquitetura

Existem vaacuterios tipos de modelos graacuteficos Esta dissertaccedilatildeo trata de um tipo

muito em voga atualmente que eacute o modelo por pontos

Neste capiacutetulo daremos uma visatildeo geral do modelo por pontos

Introduziremos este modelo e seu processo de criaccedilatildeo Seraacute apresentado o que

eacute um modelo por pontos e o conceito de surfel [5] introduziremos os tipos de

distribuiccedilatildeo dos surfels uma estruturaccedilatildeo aplicada a estes surfels e dados que

eles podem conter As quatro proacuteximas subseccedilotildees (Ideacuteia da representaccedilatildeo

Tipos de distribuiccedilatildeo dos surfels Estrutura de multi-resoluccedilatildeo e Dados que um

surfel pode conter) tratam destes toacutepicos Um modelo por pontos pode ser criado

a partir da conversatildeo de outros tipos de modelagem NURBS por exemplo para

o modelo por pontos ou a partir de um processo de aquisiccedilatildeo Esta uacuteltima forma

de criaccedilatildeo pode ser dividida em duas etapas aquisiccedilatildeo do modelo reconstruccedilatildeo

da superfiacutecie As subseccedilotildees 35 e 36 tratam destas duas etapas

respectivamente A ediccedilatildeo do modelo 3D eacute tratada brevemente na subseccedilatildeo 38

e a sua visualizaccedilatildeo na subseccedilatildeo 37 A apresentaccedilatildeo do processo de aquisiccedilatildeo

(seccedilatildeo 35) eacute baseada no tutorial de W T Correcirca [13] A etapa de ediccedilatildeo 3D

consiste em operaccedilotildees para mudanccedila da cor textura ou forma do modelo Para

esta etapa enfocaremos as operaccedilotildees booleanas que modificam a forma do

modelo ou criam novos modelos

31 Ideacuteia da Representaccedilatildeo

Modelagem por Pontos 21

Figura 1 [20] -Um modelo por pontos e sua visualizaccedilatildeo

Um modelo por pontos representa um objeto atraveacutes de seu contorno Eacute

um tipo de representaccedilatildeo B-Rep (Boundary Representation) [1] Este contorno

consiste em uma superfiacutecie 2D posicionada no espaccedilo 3D Na modelagem por

pontos ela eacute representada por um conjunto de pontos 3D que satildeo uma

amostragem dos (infinitos) pontos que formam a superfiacutecie contiacutenua (Figura 1) A

amostragem pode ser obtida de diversas maneiras Uma delas o processo de

aquisiccedilatildeo progrediu muito nos uacuteltimos anos e este foi um dos fatores que tornou

muito importante o desenvolvimento deste modelo por pontos Outra forma de

gerar amostragem eacute fazer uma conversatildeo de um outro modelo NURBS por

exemplo para o modelo por pontos

Estes pontos satildeo denominados surfels e podem conter aleacutem da posiccedilatildeo

3D outras informaccedilotildees como normal agrave superfiacutecie cor textura raio de alcance A

Figura 2 mostra um conjunto de surfels representando uma superfiacutecie No surfel

em destaque podemos ver o raio de alcance rt e a normal n agrave superfiacutecie

Modelagem por Pontos 22

Figura 2 [5] A superfiacutecie modelada por surfels O surfel em destaque tem raio de alcance

rt e normal n

Como o modelo natildeo armazena qualquer informaccedilatildeo sobre a conexatildeo entre

os surfels a reconstruccedilatildeo da superfiacutecie contiacutenua a partir dele pode exigir

algumas restriccedilotildees na amostragem (seccedilatildeo 36)

32 Tipos de distribuiccedilatildeo dos surfels

Existem dois tipos de distribuiccedilatildeo dos surfels na modelagem por pontos

uniforme e natildeo uniforme Na distribuiccedilatildeo uniforme cada um deles descreve

partes de mesmo tamanho da superfiacutecie Na natildeo uniforme cada surfel armazena

a informaccedilatildeo de seu raio de alcance que eacute o raio do disco que este surfel

representa

A distribuiccedilatildeo uniforme tem a vantagem de ser mais simples e natildeo ser

necessaacuterio armazenar o raio de alcance do disco mas ela apresenta a seguinte

desvantagem se o modelo possui regiotildees com muito detalhe e regiotildees com

pouco detalhe ele teraacute que manter uma alta densidade mesmo nas regiotildees de

poucos detalhes

33 Estrutura de multi-resoluccedilatildeo

Um objeto pode ser representado em vaacuterios niacuteveis de detalhes Por

exemplo podemos representar um mesmo objeto com vaacuterias resoluccedilotildees

diferentes Este conceito pode ser aplicado ao modelo por pontos Desta forma

um modelo eacute representado por uma estrutura hieraacuterquica (uma aacutervore por

exemplo) onde em cada niacutevel temos uma representaccedilatildeo do objeto em uma

Modelagem por Pontos 23

determinada resoluccedilatildeo Em [7] Pauly et al propotildeem algoritmos para modelagem

multi-resoluccedilatildeo em modelos por pontos

34 Dados que um surfel pode conter

Cada surfel armazena sua localizaccedilatildeo e pode tambeacutem conter informaccedilotildees

como a cor ou coordenadas de textura Se a amostragem natildeo for uniforme o

surfel conteacutem a informaccedilatildeo do raio de alcance que eacute o raio de um disco cujo

centro eacute a posiccedilatildeo do surfel O surfel pode tambeacutem conter o vetor normal agrave

superfiacutecie e assim o surfel pode ser visto como um disco orientado A superfiacutecie

tambeacutem pode ser vista como uma superfiacutecie orientada

35 Aquisiccedilatildeo do modelo

Esta introduccedilatildeo sobre aquisiccedilatildeo do modelo aqui apresentada baseia-se no

tutorial de W T Correcirca [13]

O processo de aquisiccedilatildeo consiste em obter uma amostragem de pontos da

superfiacutecie do objeto real por meio de equipamentos como por exemplo o

scanner 3D Eacute uma aacuterea que tem progredido muito nos uacuteltimos anos A

resoluccedilatildeo e a precisatildeo dos equipamentos de aquisiccedilatildeo tecircm melhorado bastante

e o custo deles reduzido de forma significativa Isso possibilita que a aquisiccedilatildeo

de modelos 3D seja usada em aplicaccedilotildees de desenho industrial arte ou em

produtos para a aacuterea de entretenimento O consequumlente maior uso destes

equipamentos criou a necessidade de avanccedilos no tratamento dos seus dados de

saiacuteda que satildeo um conjunto de pontos

Este processo pode ser dividido em trecircs partes [13] aquisiccedilatildeo da

geometria aquisiccedilatildeo da textura e correccedilatildeo de falhas da aquisiccedilatildeo

351 Aquisiccedilatildeo da geometria

Existem vaacuterios meacutetodos de aquisiccedilatildeo da geometria Curless [8] e

Rusinkiewicz [9] classificaram estes meacutetodos em trecircs categorias meacutetodos por

contato transmissatildeo e reflexatildeo

O meacutetodo por contato toca a superfiacutecie do objeto com uma sonda e grava

a posiccedilatildeo Este meacutetodo do qual o Coordinate Measuring Machines (CMMs) eacute

Modelagem por Pontos 24

um exemplo eacute bastante preciso mas eacute muito lento e natildeo adequado a objetos

fraacutegeis

Meacutetodos por transmissatildeo projetam ondas de energia sobre o objeto e

gravam a energia transmitida Por exemplo tomografia computadorizada que

projeta ondas de raio-x sobre o objeto e mede a quantidade de radiaccedilatildeo que

passa atraveacutes dele O resultado eacute um modelo geomeacutetrico de alta resoluccedilatildeo Este

meacutetodo pode captar detalhes do objeto que natildeo satildeo visiacuteveis de fora do objeto

Por outro lado ele eacute caro e arriscado

Meacutetodos por reflexatildeo podem ser oacuteticos ou natildeo-oacuteticos Natildeo-oacuteticos incluem

radares que medem a distacircncia a um objeto enviando microondas ou ondas

sonoras para o objeto e gravando o tempo que a onda gasta para retornar Estes

meacutetodos natildeo satildeo muito precisos nem raacutepidos

Meacutetodos por reflexatildeo oacuteticos podem ser passivos ou ativos Meacutetodos oacuteticos

passivos natildeo interagem com o objeto e incluem teacutecnicas de visatildeo computacional

como shape-from-shading stereo triangulation optical flow e meacutetodos de

decomposiccedilatildeo para video streams Estes meacutetodos raramente constroem

modelos precisos e sua maior aplicaccedilatildeo eacute em reconhecimento de objetos

Meacutetodos oacuteticos ativos projetam luz sobre um objeto de maneira estruturada

e atraveacutes da reflexatildeo da luz determinam a forma do objeto Exemplos satildeo depth

from defocus photometric stereo projected-light triangulation time of flight

Meacutetodos por reflexatildeo oacuteticos ativos tecircm muitas vantagens sobre os passivos tecircm

um melhor desempenho quando natildeo existe textura satildeo mais baratos e mais

robustos e produzem uma amostragem precisa

352 Aquisiccedilatildeo da textura

Idealmente noacutes gostariacuteamos de ter uma completa descriccedilatildeo de como um

ponto da superfiacutecie reflete a luz dependendo do vetor normal a esta superfiacutecie

da direccedilatildeo do raio de luz incidente e do comprimento de onda Tal descriccedilatildeo eacute

conhecida como Bidirectional Reflectance Distribution Function (BRDF) Medir

BRDFs com precisatildeo eacute um problema difiacutecil

Pode-se ter uma aproximaccedilatildeo da aquisiccedilatildeo de cores do objeto tirando

fotos dele O objeto eacute fotografado e a cor de cada ponto da superfiacutecie eacute obtida a

partir de um mapeamento das fotos 2D para o modelo 3D Para mapear a

fotografia agrave geometria precisamos conhecer os paracircmetros de projeccedilatildeo da

cacircmera e a sua posiccedilatildeo no momento em que a foto foi batida Para cada ponto

Modelagem por Pontos 25

3D do modelo encontramos sua projeccedilatildeo 2D no plano da cacircmera e associamos

a cor do pixel nesta projeccedilatildeo agrave cor do ponto 3D

353 Correccedilatildeo das falhas da aquisiccedilatildeo

O processo de aquisiccedilatildeo deixa frequumlentemente buracos no modelo devido

a ruiacutedos no processo ou agrave impossibilidade de aquisiccedilatildeo de determinadas partes

de uma superfiacutecie Estes buracos devem ser corrigidos Pode-se usar por

exemplo um filtro de passa-baixa para remoccedilatildeo de ruiacutedos [14] Meacutetodos de

difusatildeo geomeacutetrica tecircm sido aplicados para preenchimento dos buracos [15] A

correccedilatildeo das falhas eacute tida como um preacute-processamento para o processo de

reconstruccedilatildeo da superfiacutecie contiacutenua (seccedilatildeo 36)

36 Reconstruccedilatildeo da superfiacutecie (contiacutenua) a partir do modelo (discreto)

A reconstruccedilatildeo da superfiacutecie contiacutenua consiste em a partir de um conjunto

natildeo estruturado de pontos obter um modelo contiacutenuo desta superfiacutecie Esta

reconstruccedilatildeo eacute frequumlentemente exigida para um modelo por pontos Na sua

visualizaccedilatildeo podemos desejar focar qualquer parte do modelo Para fazermos

operaccedilotildees booleanas com os modelos podemos querer determinar exatamente

onde eles se intersectam

No entanto natildeo precisamos ter necessariamente a representaccedilatildeo contiacutenua

de todo o objeto ao mesmo tempo A reconstruccedilatildeo desta superfiacutecie a partir dos

pontos amostrados pode ser feita no momento que for mais adequado agrave

aplicaccedilatildeo Na visualizaccedilatildeo a reconstruccedilatildeo pode ser feita na projeccedilatildeo 2D da

parte do modelo em foco (seccedilatildeo 37) Para operaccedilotildees booleanas pode-se

reconstruir apenas a aacuterea da interseccedilatildeo dos modelos

Este processo de reconstruccedilatildeo de superfiacutecie tem sido muito estudado em

modelagem geomeacutetrica e geometria computacional nos uacuteltimos anos O trabalho

mais importante desta aacuterea eacute o trabalho de Amenta et al [10] que foi a primeira

soluccedilatildeo com garantias demonstraacuteveis para este problema de reconstruccedilatildeo de

superfiacutecie A seccedilatildeo 44 explica estes conceitos e o trabalho [10] Este trabalho

demonstra que teoricamente para que a reconstruccedilatildeo da superfiacutecie (contiacutenua) a

partir das amostras seja correta a amostragem deve ser adequada Ele usa o

conceito de ldquoEixo Medialrdquo para definir o que eacute uma amostragem adequada

Modelagem por Pontos 26

(seccedilatildeo 44) Em duas dimensotildees os veacutertices de Voronoi de uma amostragem

densa aproximam o ldquoEixo Medialrdquo da amostragem

Por meio deste conceito de Eixo Medial [1016] obtecircm-se paracircmetros

teoacutericos para a definiccedilatildeo de amostragem adequada e baseado neste conceito

o algoritmo apresentado em [10] traz uma soluccedilatildeo praacutetica para o problema

obtendo uma malha poligonal a partir do modelo por pontos

O PointShop 3D [11] software de ediccedilatildeo de modelos por pontos utilizado

nesta pesquisa faz quando necessaacuterio a reconstruccedilatildeo da superfiacutecie Para isso

o PointShop 3D explora a vizinhanccedila local (surfels vizinhos de acordo com suas

posiccedilotildees) Ele usa o conceito de Eixo Medial para justificar seu meacutetodo de

reconstruccedilatildeo da superfiacutecie que na praacutetica apresenta resultados bastante

satisfatoacuterios apesar de teoricamente natildeo ter garantias [16]

37 Visualizaccedilatildeo do modelo

A primeira abordagem para visualizaccedilatildeo de um modelo por pontos foi

construir uma malha de poliacutegonos a partir dos surfels e renderizaacute-la Mas a

construccedilatildeo de malhas a partir dos surfels eacute um processo muito caro e lento

principalmente para modelos complexos Na tentativa de obter uma visualizaccedilatildeo

interativa do modelo por pontos estatildeo sendo estudadas teacutecnicas que utilizam

surfels como primitiva de visualizaccedilatildeo A ideacuteia foi apresentada inicialmente por

Levoy [4]

Figura 3 [21] -Modelo por pontos e sua renderizaccedilatildeo usando Surface Splatting

Modelagem por Pontos 27

O objetivo da renderizaccedilatildeo a partir dos surfels eacute projetaacute-los na tela e

reconstruir as superfiacutecies de forma contiacutenua sem buracos Para que esta

renderizaccedilatildeo seja amplamente utilizada deve-se ter cuidado com o uso de

memoacuteria e com a qualidade da imagem gerada Teacutecnicas recentes como Surface

Splatting [6] faz a renderizaccedilatildeo interativamente com qualidade (Figura 3)

comparada a outros meacutetodos de renderizaccedilatildeo como Image Based Rendering

Em geral a visualizaccedilatildeo do modelo por pontos pode ser dividida nas seguintes

etapas

- warping - projeccedilatildeo em perspectiva de cada ponto do modelo na tela

processo anaacutelogo agrave projeccedilatildeo de veacutertices dos triacircngulos na malha triangular Se

um pixel da tela estiver contido em mais de uma projeccedilatildeo de surfels (vizinhos)

ou seja mais de um ponto cobre este pixel os atributos destes pontos seratildeo

combinados

- shading por ponto - o processo de shading eacute realizado para cada ponto

visiacutevel (os pontos que natildeo satildeo vistos do ponto de vista em questatildeo devem ser

retirados) Qualquer modelo local de shading pode ser aplicado Uma nova

teacutecnica foi proposta em Surface Splatting [6]

- reconstruccedilatildeo da imagem ndash pixels que natildeo ldquoreceberamrdquo projeccedilatildeo de

nenhum ponto formam buracos na imagem Esta imagem deve ser reconstruiacuteda

sem buracos sem aliasing e as superfiacutecies devem ser reconstruiacutedas de forma

contiacutenua e devem ser ldquosuavizadasrdquo (smooth surface)

Os algoritmos de renderizaccedilatildeo por pontos podem tratar a questatildeo de

buracos na visualizaccedilatildeo de trecircs formas [17]

Detecccedilatildeo e preenchimento de buracos no espaccedilo da tela pontos satildeo

projetados na tela e pixels que natildeo receberam pontos satildeo detectados (buracos)

Para preencher estes buracos que natildeo receberam pontos eacute feita uma

interpolaccedilatildeo entre os vizinhos

Geraccedilatildeo de mais pontos a superfiacutecie eacute interpolada no espaccedilo do modelo

para garantir que todos os pixels recebam pelo menos a projeccedilatildeo de um ponto

Splatting um surfel eacute projetado na tela e sua contribuiccedilatildeo eacute espalhada de

forma diferenciada para os pixels vizinhos Agrave medida em que o vizinho se torna

mais distante a contribuiccedilatildeo do surfel diminui

Raumlsaumlnen faz uma analogia do processo de renderizaccedilatildeo proposto em [6]

com o mapeamento de textura [15] No mapeamento de textura para um

determinado pixel da tela satildeo encontrados os pontos da textura que afetam este

Modelagem por Pontos 28

pixel Num sentido inverso em splatting para um determinado surfel (que

representa a textura) satildeo encontrados os pixels da tela que este surfel afeta

38 Ediccedilatildeo do modelo

Ediccedilatildeo de um modelo 3D consiste em operaccedilotildees que modificam

caracteriacutesticas deste modelo como cor textura forma ou criam novos modelos

O software PointShop 3D [11] software de ediccedilatildeo de modelos por pontos 3D

implementa vaacuterias destas operaccedilotildees (ver seccedilatildeo 52)

Para modificar a forma de um modelo ou criar um novo satildeo muito usadas

as operaccedilotildees booleanas que eacute o nosso enfoque nesta dissertaccedilatildeo Na

modelagem CSG (Constructive Solid Geometry) as operaccedilotildees booleanas satildeo

usadas juntamente com primitivas soacutelidas para definir um modelo No entanto

em alguns tipos de modelos estas operaccedilotildees satildeo difiacuteceis como por exemplo

em malhas poligonais Com pontos elas podem ser feitas interativamente [32]

Operaccedilotildees Booleanas com Pontos 29

4 Operaccedilotildees Booleanas com Pontos

Operaccedilotildees booleanas satildeo as operaccedilotildees de uniatildeo interseccedilatildeo e diferenccedila

definidas na teoria matemaacutetica de conjuntos Estas operaccedilotildees satildeo aplicadas em

modelos soacutelidos para alteraacute-los ou para criar novos modelos A Figura 4 abaixo

mostra a criaccedilatildeo de trecircs novos modelos a partir de quatro modelos iniciais

Figura 4 [22] Trecircs modelos novos foram criados a partir dos quatro iniciais (esfera

cilindro dois cubos) O primeiro eacute a esfera menos um cubo em seguida retirou-se outro

cubo e por uacuteltimo retirou-se o cilindro

Estas operaccedilotildees satildeo aplicadas em objetos modelados por pontos em dois

trabalhos no trabalho de Bart Adams e Philip Dutreacute [2] e no trabalho de Pauly

et Al [3] Neste capiacutetulo a seccedilatildeo 41 apresenta a parte comum aos dois

trabalhos e as seccedilotildees 42 e 43 apresentam as particularidades de cada um A

seccedilatildeo 44 discute uma questatildeo natildeo explicitada em nenhum dos dois trabalhos

41 Meacutetodos para realizar operaccedilotildees booleanas em objetos modelados por pontos

A Figura 5 mostra o resultado do meacutetodo de Adams[2] operaccedilotildees de

uniatildeo diferenccedila e interseccedilatildeo de objetos soacutelidos 3D modelados por pontos

Operaccedilotildees Booleanas com Pontos 30

Figura 5 [2]-A partir de dois modelos por pontos uma heacutelice e uma cabeccedila as trecircs operaccedilotildees booleanas satildeo mostradas da esquerda para a direita uniatildeo diferenccedila e interseccedilatildeo

Sejam A e B objetos 3D soacutelidos modelados por pontos Definem-se os

seguintes elementos

Af ndash superfiacutecie (contorno) de A que estaacute fora de B

Ad ndash superfiacutecie (contorno) de A que estaacute dentro de B

Bf ndash superfiacutecie (contorno) de B que estaacute fora de A

Bd ndash superfiacutecie (contorno) de B que estaacute dentro de A

O resultado da operaccedilatildeo booleana entre A e B seraacute um modelo C cuja

superfiacutecie de contorno pode ser determinada pela seguinte regra [2] que aqui

chamamos de Regra 1

Regra 1 A U B Af + Bf

A cap B Ad + Bd

A ndash B Af + Bd (com a orientaccedilatildeo invertida)

B ndash A Ad (com a orientaccedilatildeo invertida) + Bf

A Figura 6 mostra as operaccedilotildees com dois modelos A e B

(a) (b)

Operaccedilotildees Booleanas com Pontos 31

(c) (d)

Figura 6 [22] (a) Dois modelos A e B (b) Posicionados de forma que A tem

uma parte dentro de B eacute mostrado o resultado A U B Af + Bf (c) Resultado de A ndash B Af

+ Bd (d) Resultado de A cap B Ad + Bd

Bart [2] e Pauly [3] apresentam dois meacutetodos para determinar os

elementos acima Estes dois meacutetodos satildeo construiacutedos a partir dos seguintes

conceitos os elementos Af Ad Bf Bd satildeo uma parte da superfiacutecie modelada por

pontos e portanto satildeo conjuntos de surfels Para determinaacute-los eacute necessaacuteria

entatildeo a classificaccedilatildeo de um surfel (que pode se resumir agrave classificaccedilatildeo de um

ponto que eacute o seu centro) de uma superfiacutecie como dentro ou fora de um outro

modelo Os dois meacutetodos utilizam a seguinte regra para esta classificaccedilatildeo aqui

denominada Regra 2

Regra 2 Dado um ponto x qualquer um volume V determinado por uma superfiacutecie

de contorno S uma amostragem P da superfiacutecie S um ponto p є P que eacute a

amostra mais proacutexima a x um vetor np normal agrave S em p e orientado para fora de

S temos que

(x ndash p) np gt 0 x notinV

Ou seja para classificar um ponto em relaccedilatildeo a um modelo verificamos o

produto interno entre a normal em p (surfel mais proacuteximo a x) e o vetor (x - p)

se este produto interno for maior que zero x natildeo pertence ao volume V e seraacute

classificado como fora senatildeo seraacute classificado como dentro De maneira

ainda mais informal se a normal em p apontar para a direccedilatildeo oposta a x x seraacute

classificado como dentro se apontar para x x seraacute classificado como fora

A Figura 7 mostra a Regra 2

Operaccedilotildees Booleanas com Pontos 32

Figura 7 Para classificar o ponto x encontra-se o surfel p (com normal np) mais proacuteximo

a x Se o produto interno entre np e (x ndash p) for maior que zero entatildeo x eacute classificado como

fora senatildeo seraacute classificado como dentro

A validade da Regra 2 eacute discutida na Seccedilatildeo 44 Uma das restriccedilotildees

teoacutericas para garantir-lhe a validade eacute que a superfiacutecie seja suave

Cada um dos dois meacutetodos daacute um tratamento diferente para o uso desta

regra Pauly usa a regra diretamente encontrando o surfel mais proacuteximo a um

ponto e classificando este ponto a partir deste surfel Ele utiliza tambeacutem a

representaccedilatildeo impliacutecita MLS (Moving Least Squares [18]) para casos em que a

Regra 2 poderia falhar e para tratamento de interseccedilotildees [3] Seu meacutetodo vale

para modelos soacutelidos ou natildeo soacutelidos O meacutetodo de Adams e Dutreacute [2] utiliza

octrees [1] criando uma classificaccedilatildeo dos noacutes da octree a partir desta Regra 2

Os pontos satildeo entatildeo classificados de acordo com o noacute da octree que o conteacutem

Este segundo meacutetodo aplica-se somente a modelos soacutelidos Os dois meacutetodos

seratildeo descritos em detalhes nas seccedilotildees abaixo

Como um surfel eacute considerado um disco podemos dizer que surfels de

dois modelos diferentes podem se intersectar A interseccedilatildeo destes dois surfels

corresponde agrave interseccedilatildeo destes dois discos Estes surfels geram problemas

para visualizaccedilatildeo se forem acrescentados ao resultado sem um tratamento

especiacutefico apresentaratildeo artefatos natildeo desejaacuteveis na renderizaccedilatildeo do modelo

resultado (Figura 8) se natildeo forem acrescentados ao resultado deixaratildeo buracos

no modelo

Operaccedilotildees Booleanas com Pontos 33

Figura 8 [2] -Interseccedilatildeo de duas esferas agrave esquerda sem nenhum tratamento de interseccedilatildeo agrave direita apoacutes o tratamento de interseccedilatildeo

Aleacutem disso nem sempre esta interseccedilatildeo forma uma superfiacutecie suave

Esta interseccedilatildeo pode formar uma aresta viva (seccedilatildeo 4223) gerando

problemas tambeacutem para o uso da Regra 2 que eacute vaacutelida apenas para superfiacutecies

suaves Eacute necessaacuterio entatildeo fazer um tratamento desta superfiacutecie de interseccedilatildeo

(formada por surfels originados de diferentes modelos) O tratamento de cada

um dos meacutetodos para este caso seraacute tambeacutem abaixo apresentado

42 Meacutetodo de Adams e Dutreacute

O meacutetodo aplica-se somente a modelos soacutelidos Para determinaccedilatildeo dos

elementos da aqui chamada Regra 1 (seccedilatildeo 41) este meacutetodo utiliza uma octree

[1] que subdivide o espaccedilo do modelo em trecircs fora dentro ou no contorno do

modelo Estes espaccedilos satildeo determinados pela classificaccedilatildeo dos noacutes da octree a

partir da Regra 2 Tambeacutem eacute usado o meacutetodo TINN - Triangle Inequality Nearest

Neighbour [19] - para otimizar a pesquisa dentro do noacute A seguir descrevemos o

modelo usado neste meacutetodo apresentando os dados associados aos pontos o

tipo de distribuiccedilatildeo e o algoritmo que realiza as operaccedilotildees

421 Modelo por Pontos em Adams e Dutreacute

Os surfels neste meacutetodo contecircm as seguintes informaccedilotildees posiccedilatildeo do

surfel xs orientaccedilatildeo do surfel ns e raio de alcance do surfel rs O surfel pode ser

pensado como um disco ortogonal a ns com centro xs e raio rs O raio eacute

escolhido de tal forma que a projeccedilatildeo dos discos no plano da imagem se

sobreponham

Operaccedilotildees Booleanas com Pontos 34

Os objetos representados satildeo soacutelidos A distribuiccedilatildeo dos surfels eacute

uniforme embora o algoritmo natildeo exija esta condiccedilatildeo Para cada soacutelido eacute

definido um rmax = Max rs o raio de alcance do maior surfel pertencente agrave

superfiacutecie do soacutelido Como o raio eacute escolhido de tal forma que a projeccedilatildeo dos

discos no plano da imagem se sobreponham o controle da amostragem eacute

entatildeo ligado agrave renderizaccedilatildeo

422 Algoritmo de Operaccedilotildees Booleanas

Utilizando objetos modelados da forma descrita acima o meacutetodo realiza

operaccedilotildees de uniatildeo interseccedilatildeo e diferenccedila com modelos soacutelidos Supondo dois

modelos soacutelidos S1 e S2 O algoritmo pode ser dividido nas seguintes etapas

Criaccedilatildeo de uma octree para cada modelo Teste Dentro-Fora Tratamento da

interseccedilatildeo Estas etapas satildeo apresentadas nas proacuteximas seccedilotildees

4221 Criaccedilatildeo de uma octree para cada modelo

Eacute criada uma octree [1] para cada modelo A criaccedilatildeo de uma octree eacute feita

da seguinte forma

Gera-se a ldquoCaixa envolventerdquo caixa alinhada com os eixos que conteacutem

todo o modelo A ldquoCaixa envolventerdquo corresponde ao noacute raiz da octree Este noacute

conteacutem inicialmente todos os surfels do modelo Em seguida o noacute raiz eacute

dividido em oito noacutes filhos Os surfels satildeo distribuiacutedos entre estes oito noacutes Cada

um deles caso contenha surfels eacute dividido novamente em 8 filhos e seus surfels

satildeo redistribuiacutedos entre eles Este processo eacute repetido recursivamente enquanto

o nuacutemero de surfels do noacute for maior que zero ou ateacute uma profundidade maacutexima

preacute-definida da octree ser alcanccedilada

Cada noacute da octree deve ser classificado O objetivo desta classificaccedilatildeo eacute

determinar que parte da octree estaacute dentro do modelo e que parte estaacute fora Os

noacutes da octree satildeo entatildeo classificados como ldquodentrordquo ldquoforardquo e ldquocontornordquo

Podemos ilustrar esta classificaccedilatildeo em 2D a Figura 9 mostra uma quadtree

classificada

Operaccedilotildees Booleanas com Pontos 35

Figura 9-Um objeto representado por pontos com suas normais e sua quadtree correspondente classificada os noacutes cinza claro estatildeo dentro do modelo noacutes cinza mais escuro estatildeo fora do modelo e noacutes com cinza intermediaacuterio satildeo noacutes cheios noacutes que conteacutem pontos

O noacutes que conteacutem surfels satildeo classificados como ldquocontornordquo Para

classificar um noacute vazio existem trecircs casos

o noacute vazio tem apenas um vizinho-irmatildeo natildeo vazio

o noacute vazio tem mais de um vizinho-irmatildeo natildeo vazio

o noacute vazio natildeo tem vizinhos-irmatildeos natildeo vazios

No primeiro caso o noacute vazio eacute classificado pelo seu vizinho natildeo vazio No

segundo caso considera-se qualquer um dos vizinhos natildeo vazios No terceiro

caso classifica-se primeiro os noacutes vizinhos e eacute dada a mesma classificaccedilatildeo para

o noacute vazio Como cada noacute natildeo folha de uma octree tem pelo menos um noacute filho

natildeo vazio sempre pode ser feita a classificaccedilatildeo dos noacutes vazios A classificaccedilatildeo

eacute feita da seguinte forma dentre os surfels do vizinho-irmatildeo escolhido encontra-

se o surfel mais proacuteximo ao noacute a ser classificado Se a normal deste surfel

aponta para o noacute vazio a ser classificado entatildeo ele eacute classificado como ldquoforardquo

Se a normal aponta no sentido contraacuterio entatildeo ele eacute classificado como ldquodentrordquo

De maneira mais formal sejam cv e cc coordenadas dos centros do noacute vazio e

do noacute contorno respectivamente Seja s o surfel mais proacuteximo ao noacute vazio e ns

a normal em s Se ( cv - cc )٠ ns gt 0 ( produto interno entre a normal em s e o

vetor cv - cc for maior que zero ) o noacute vazio seraacute classificado como ldquoforardquo

Senatildeo seraacute classificado como ldquodentrordquo

Em geral os noacutes ldquocontornordquo satildeo subdivididos em trecircs partes uma que estaacute

fora do modelo uma que estaacute dentro do modelo e uma terceira que conteacutem os

surfels Esta subdivisatildeo eacute feita por meio da criaccedilatildeo de dois planos paralelos que

Operaccedilotildees Booleanas com Pontos 36

dividem o noacute Para determinar estes planos calcula-se o vetor nm igual agrave

meacutedia das normais dos surfels do noacute nm = sum ns sum ns onde ns eacute a normal de

cada surfel do noacute

Em seguida encontra-se o surfel com maior produto interno entre a sua

normal e a normal meacutedia d1=Max(nm ٠ ns) Este surfel juntamente com a normal

meacutedia define um dos planos Encontra-se tambeacutem o surfel com menor produto

interno entre a sua normal e a normal meacutedia d2=Min(nm ٠ ns) Este surfel

juntamente com a normal meacutedia define o outro plano A Figura 10 mostra a

divisatildeo de um noacute de uma quadtree nas trecircs partes dentro do modelo fora do

modelo e no ldquocontornordquo

Esta subdivisatildeo aplica-se apenas a noacutes que conteacutem surfels cujas direccedilotildees

natildeo variem em mais de 90 graus Caso isso ocorra ele natildeo seraacute subdividido Ou

seja se um noacute possuir dois vetores normais (de dois surfels diferentes) que

formem um acircngulo maior que 90 graus ele natildeo seraacute subdividido

Figura 10 [2] -Divisatildeo de noacute de contorno a parte agrave esquerda estaacute fora do modelo a parte agrave direita estaacute dentro do modelo e a faixa intermediaacuteria conteacutem os surfels

4222 Teste Dentro-Fora

O Teste Dentro-Fora faz a classificaccedilatildeo dos surfels de um modelo como

ldquodentrordquo ou ldquoforardquo de outro modelo Portanto aplicaremos este mesmo teste duas

vezes uma para o modelo S1 em relaccedilatildeo ao modelo S2 e outra para S2 em

relaccedilatildeo a S1 Vamos mostrar o teste Dentro-Fora para o caso da classificaccedilatildeo

dos surfels do modelo S1 em relaccedilatildeo a S2

Operaccedilotildees Booleanas com Pontos 37

No item anterior foram criadas duas octrees uma para o modelo S1 e

outra para o modelo S2 Chamemos de A e B as octrees de S1 e S2

respectivamente Para classificar S1 em relaccedilatildeo a S2 inicialmente eacute feita uma

avaliaccedilatildeo da posiccedilatildeo de A em relaccedilatildeo a B A e B podem estar nas seguintes

situaccedilotildees

- A natildeo intersecta B

- A intersecta apenas noacutes ldquoforardquo de B

- A intersecta apenas noacutes ldquodentrordquo de B

- A intersecta noacutes ldquoforardquo e noacutes ldquodentrordquo de B

Para testar estas situaccedilotildees os noacutes satildeo aumentados de rmax o raio do

maior surfel do modelo soacutelido Isto eacute feito para compensar o fato de que o surfel

natildeo eacute apenas um ponto mas sim considerado como um disco

No primeiro e no segundo caso todos os surfels de A satildeo classificados

como ldquoforardquo No terceiro caso todos os surfels de A satildeo classificados como

ldquodentrordquo

No quarto caso temos que percorrer a octree A Comeccedilando pelo noacute raiz

percorre-se os filhos deste noacute Para cada filho os quatro testes acima satildeo feitos

Se o noacute filho encontra-se em um dos trecircs primeiros casos a classificaccedilatildeo eacute dada

como foi citada acima Se um filho estaacute no quarto caso e natildeo eacute um noacute folha

repete-se recursivamente o mesmo procedimento para seus filhos ateacute encontrar-

se um noacute folha Para um noacute que estaacute no quarto caso e eacute folha percorre-se a lista

de surfels que este noacute conteacutem classificando cada um destes surfels Seja sa um

surfel desta lista Para este caso percorre-se a octree B para classificar sa

Primeiramente encontramos o noacute de B que conteacutem sa Se este noacute de B foi

dividido testa-se de acordo com esta divisatildeo do noacute se o surfel sa estaacute na parte

do noacute que estaacute dentro do modelo ele eacute classificado como ldquodentrordquo se sa estaacute na

parte que estaacute fora do modelo ele eacute classificado como ldquoforardquo se sa estaacute na parte

intermediaacuteria ou se o noacute de B natildeo foi subdividido em planos encontra-se sb que

eacute o surfel pertencente a este noacute de B que estaacute mais proacuteximo de sa sa seraacute

entatildeo classificado de acordo com sb Se ( sa - sb )٠ nb gt 0 sa eacute classificado

como ldquoforardquo senatildeo eacute classificado como ldquodentrordquo Se os discos de sb e sa se

intersectam sa eacute marcado como interseccedilatildeo Para encontrar sb o algoritmo

implementa o meacutetodo TINN ndash Triangle Inequality Nearest Neighbour [19]

Operaccedilotildees Booleanas com Pontos 38

4223 Tratamento da interseccedilatildeo

Os surfels de A que intersectam surfels de B satildeo classificados como

ldquointerseccedilatildeordquo Se eles natildeo forem incluiacutedos no modelo resultado o soacutelido resultado

teraacute buracos Se eles forem incluiacutedos sem algum tratamento eles natildeo

representaratildeo adequadamente a regiatildeo Em geral o surfel sa (um surfel

ldquointerseccedilatildeordquo de A) eacute dividido em dois pelo plano que conteacutem o surfel sb (surfel de

B que sa intersecta) uma parte que estaacute fora de B e outra que estaacute dentro de B

Dependendo da operaccedilatildeo que estaacute sendo realizada vamos querer manter uma

destas partes do surfel sa no modelo resultado Seja xa a posiccedilatildeo do surfel sa e o

surfel sa uma circunferecircncia de centro xa e raio ra igual ao raio de alcance de sa

O plano que conteacutem o surfel sb define uma corda desta circunferecircncia como

mostra a Figura 11 O surfel sa seraacute substituiacutedo por um surfel menor que

ultrapassa esta corda de uma distacircncia e definida pelo usuaacuterio Para cobrir

completamente a interseccedilatildeo seratildeo adicionados surfels menores que cruzam a

corda de interseccedilatildeo

Figura 11 -Interseccedilatildeo do surfel s e do plano que passa pelo surfel t o surfel mais proacuteximo a s O surfel s eacute substituiacutedo por trecircs surfels menores

Operaccedilotildees Booleanas com Pontos 39

O tratamento de interseccedilatildeo proposto por Adams e Dutreacute [2] natildeo soacute evita

os buracos mas tambeacutem cria uma forma de renderizaccedilatildeo de arestas vivas A

colocaccedilatildeo de vaacuterios pequenos surfels na regiatildeo da interseccedilatildeo permite esta

correta renderizaccedilatildeo das ldquoarestas vivasrdquo Desta forma o problema das arestas

vivas eacute resolvido na modelagem (Figura 12) A vantagem de se resolver o caso

na modelagem eacute que natildeo eacute necessaacuterio fazer um tratamento especial na

renderizaccedilatildeo para que mostre esta aresta viva Diferente do tratamento feito

em Pauly (seccedilatildeo 431) que resolve esta questatildeo em tempo de renderizaccedilatildeo

Aleacutem disso o tratamento resolve alguns casos onde a Regra 2 poderia falhar

(veja em Validade da Regra 2-seccedilatildeo 44)

Figura 12 [2] -Agrave direita eacute mostrado o resultado do tratamento de interseccedilatildeo para o caso de Arestas Vivas do objeto agrave esquerda

43 Meacutetodo de Pauly

O meacutetodo aplica-se a objetos soacutelidos e natildeo soacutelidos Os modelos podem ser

obtidos a partir de diferentes entradas como nuvem de pontos irregulares ou por

meio de scanners 3D Cria um modelo hiacutebrido destes objetos usa o modelo por

pontos juntamente com a representaccedilatildeo impliacutecita Moving Least Squares - MLS

[18] Realiza operaccedilotildees booleanas com pontos e utiliza adicionalmente MLS

para alguns casos de classificaccedilatildeo de surfels e no tratamento de interseccedilatildeo A

seguir apresentamos as caracteriacutesticas do modelo por pontos deste meacutetodo e o

algoritmo que realiza as operaccedilotildees

Operaccedilotildees Booleanas com Pontos 40

431 Modelo em Pauly

O modelo eacute uma estrutura hiacutebrida de pontos com a representaccedilatildeo impliacutecita

Moving Least Squares - MLS [18] Esta estrutura eacute usada para fazer operaccedilotildees

booleanas e tambeacutem operaccedilotildees de free-form (natildeo abordadas nesta

dissertaccedilatildeo) Para operaccedilotildees booleanas a representaccedilatildeo MLS permite que a

curva de interseccedilatildeo entre os modelos seja reconstruiacuteda e surfels sejam

colocados nesta curva e em alguns casos de classificaccedilatildeo de surfels mostrados

na seccedilatildeo 432 Para este modelo natildeo existem restriccedilotildees quanto agrave forma do

objeto

Os surfels contecircm informaccedilotildees sobre sua posiccedilatildeo e sua normal Aleacutem

disso surfels podem conter informaccedilotildees adicionais como textura cor

propriedades de materiais

A distribuiccedilatildeo dos surfels eacute natildeo-uniforme e a amostragem eacute

aproximadamente adequada (Veja seccedilatildeo 44)

432 Algoritmo de Operaccedilotildees Booleanas

O algoritmo classifica surfels de um modelo como ldquodentrordquo ou ldquoforardquo de

outro modelo Antes de colocarmos como eacute feita esta classificaccedilatildeo devemos

acrescentar que Pauly estende esta classificaccedilatildeo para modelos que natildeo satildeo

soacutelidos Ou seja mesmo um modelo natildeo soacutelido divide o espaccedilo da cena (espaccedilo

em que se encontra o modelo) em dois sub-espaccedilos dentro ou fora do modelo

Pauly faz esta subdivisatildeo da seguinte forma

Como a superfiacutecie que determina o modelo eacute orientada (conteacutem vetores

normais agrave superfiacutecie que apontam para ldquoforardquo do modelo) Pauly considera que

um modelo natildeo soacutelido divide o espaccedilo em dois sub-espaccedilos um ldquoforardquo do

modelo (os vetores normais apontam para este sub-espaccedilo) e um que estaacute

ldquodentrordquo do modelo (os vetores normais apontam para direccedilatildeo oposta a este sub-

espaccedilo) Por exemplo um plano eacute representado como um conjunto de surfels

contidos num determinado espaccedilo geomeacutetrico plano π Cada surfel conteacutem um

vetor normal direcionado Este modelo divide entatildeo o espaccedilo em dois sub-

espaccedilos o sub-espaccedilo que eacute apontado por estes surfels (considerado ldquoforardquo do

modelo) e o sub-espaccedilo que estaacute na direccedilatildeo oposta (considerado ldquodentrordquo do

modelo) Desta forma ele aplica as classificaccedilotildees de ldquodentrordquo e ldquoforardquo de um

modelo tambeacutem a modelos natildeo soacutelidos A partir desta consideraccedilatildeo as

Operaccedilotildees Booleanas com Pontos 41

operaccedilotildees booleanas satildeo realizadas com os modelos natildeo soacutelidos da mesma

forma que com os modelos soacutelidos

Para determinar esta classificaccedilatildeo (dentro ou fora do modelo) Pauly utiliza

a Regra 2 Para pesquisa do surfel mais proacuteximo o meacutetodo usa a estrutura Kd-

tree [16] e tambeacutem o algoritmo ANN [16] No entanto o meacutetodo apresenta uma

restriccedilatildeo da Regra 2 ela soacute deve ser usada para classificaccedilotildees de pontos x se

a distacircncia x-p for maior que o espaccedilamento da amostragem local ηp em p

Este espaccedilamento da amostragem local ηp em p eacute um caacutelculo aproximado da

distacircncia meacutedia entre os surfels vizinhos a p Se x estaacute muito proacuteximo agrave

superfiacutecie a classificaccedilatildeo pode falhar Neste caso ele calcula o ponto exato de

S mais proacuteximo a x usando a projeccedilatildeo MLS (ldquoMoving Least Squaresrdquo)

Por questotildees de melhoria de desempenho utiliza-se o fato de que sendo

Ωp (x) a classificaccedilatildeo do ponto x em relaccedilatildeo agrave amostragem P tem-se que Ωp (x)

= Ωp (xrsquo) para todos os pontos de xrsquo que estatildeo dentro da esfera de centro x e

raio igual a x-p - ηp (onde p eacute o surfel mais proacuteximo e ηp eacute o espaccedilamento

local da amostragem em p acima citado) Ou seja sendo x um ponto qualquer p

o surfel mais proacuteximo a x ηp eacute o espaccedilamento local da amostragem em p se

desenharmos uma esfera com centro x e raio igual a x-p - ηp temos que

todos os pontos xrsquo que estatildeo dentro da esfera teratildeo a mesma classificaccedilatildeo de x

Desta forma o nuacutemero de vezes que a classificaccedilatildeo eacute feita (pesquisando-se o

surfel mais proacuteximo ao ponto e usando a Regra 2) diminui em ateacute 90 Assim

em geral a classificaccedilatildeo de um surfel eacute obtida a partir do seu surfel vizinho

Dados

S1 a superfiacutecie MLS de contorno que define o modelo A

S2 a superfiacutecie MLS de contorno que define o modelo B

P1 o conjunto de surfels que representa a superfiacutecie S1

P2 o conjunto de surfels que representa a superfiacutecie S2

Ωp1 (x) a classificaccedilatildeo do ponto p em relaccedilatildeo a uma amostragem P1

Q1 o subconjunto de P1 que vai compor o resultado

Ωp2 (x) a classificaccedilatildeo do ponto p em relaccedilatildeo a uma amostragem P2

Q2 o subconjunto de P2 que vai compor o resultado

Os conjuntos Q1 e Q2 satildeo obtidos por meio da Tabela 1 mostrada abaixo

Operaccedilotildees Booleanas com Pontos 42

Tabela 1 Classificaccedilatildeo para operaccedilotildees booleanas

Para o tratamento de interseccedilatildeo neste meacutetodo satildeo computados pontos

que caem exatamente na curva de interseccedilatildeo e estes satildeo acrescentados ao

modelo resultado Estes pontos satildeo determinados de forma que a densidade da

amostragem vai crescendo agrave medida que os surfels se aproximam da curva de

interseccedilatildeo e convergem para este ponto de interseccedilatildeo como mostra a Figura

13

(a) (b) (c)

Figura 13 - Os novos surfels satildeo colocados exatamente na curva de interseccedilatildeo

e convergem para o ponto de interseccedilatildeo

A Figura 14 mostra o processo de encontrar os surfels que caem nesta

curva de interseccedilatildeo Inicialmente satildeo encontrados todos os pontos de Q1 e Q2

que estatildeo proacuteximos agrave curva de interseccedilatildeo por meio da funccedilatildeo de distacircncia do

operador de projeccedilatildeo MLS Em seguida procura-se todos os pares mais

proacuteximos (q1 є Q1 q2 є Q2 ) e computa-se o ponto q na curva de interseccedilatildeo da

seguinte forma (veja a Figura 14)Seja r o ponto na linha de interseccedilatildeo dos dois

planos tangentes em q1 e q2 e que estaacute mais proacuteximo a estes dois pontos isto eacute

que minimiza a distacircncia ||r-q1|| + ||r-q2|| r eacute a primeira aproximaccedilatildeo de q e agora

pode ser projetado sobre S1 e S2 para obter dois novos pontos de partida q1rsquo e q2

rsquo

para a iteraccedilatildeo Este procedimento pode ser repetido iterativamente ateacute que os

pontos q1 e q2 convirjam ao ponto q na curva de interseccedilatildeo Normalmente este

processo requer menos de trecircs iteraccedilotildees

Operaccedilotildees Booleanas com Pontos 43

(a) (b)

(c)

Figura 14 (a) Suponhamos a reta que eacute a interseccedilatildeo do plano tangente a S1 em q1 e o

plano tangente a S2 em q2 O ponto r eacute o ponto desta reta que estaacute mais proacuteximo a q1 e

q2 (b) r eacute projetado sobre S1 e S2 obtendo-se q1acute e q2acute dois novos pontos de partida

para nova iteraccedilatildeo (c) A nova iteraccedilatildeo gera r que eacute uma aproximaccedilatildeo melhor de q

Pauly faz o tratamento de arestas vivas em tempo de renderizaccedilatildeo Ele

faz uma alteraccedilatildeo no renderizador Marca os surfels de interseccedilatildeo e ao

renderizaacute-los satildeo cortados para gerar uma aresta viva

44 Validade da Regra 2

Os dois meacutetodos analisados nesta dissertaccedilatildeo utilizam a seguinte regra

para a classificaccedilatildeo de um surfel

Regra 2 dado um volume V determinado por uma superfiacutecie de contorno

S uma amostragem P da superfiacutecie S um ponto x qualquer um ponto p є P que

eacute a amostra mais proacutexima a x um vetor ny normal a S em p e orientado para

fora de S temos que (x ndash p) np gt 0 x notinV

Em [16] eacute colocado que esta regra eacute tirada da seguinte propriedade da

geometria diferencial (aqui chamada Propriedade 1)

Propriedade 1 Dado um volume V determinado por uma superfiacutecie de

contorno S contiacutenua e duplamente diferenciaacutevel um ponto x qualquer um ponto

Operaccedilotildees Booleanas com Pontos 44

y є S que eacute o ponto de S mais proacuteximo a x um vetor ny normal a S em y e

orientado para fora de S temos que (x ndash y) ny gt 0 x notinV

A Figura 15 ilustra esta propriedade

Figura 15 Para verificar se o ponto x estaacute fora de um contorno C encontra-se o ponto y

de C Se o produto interno entre a normal em y e o vetor que liga y a x for maior que

zero entatildeo x estaacute fora de C senatildeo estaacute dentro de C

Pauly assume que tendo uma amostragem P da superfiacutecie S podemos

usar a Propriedade 1 substituindo y por p o surfel mais proacuteximo ao ponto x (x ndash

p) np gt 0 x notinV (Regra 2) Esta amostragem P em seu trabalho eacute

(aproximadamente) uma ldquoamostragem adequadardquo Tambeacutem seu tratamento de

interseccedilatildeo cria uma aproximaccedilatildeo dela (seccedilatildeo 43) Empiricamente a

ldquodiscretizaccedilatildeo da propriedaderdquo eacute vaacutelida a partir desta suposiccedilatildeo Mas isso natildeo foi

demonstrado teoricamente em seu trabalho

Pauly coloca em [16] que natildeo existe ainda uma teoria matemaacutetica rigorosa

de amostragem anaacuteloga a teoria de Fourier para superfiacutecies discretas

A melhor aproximaccedilatildeo teoacuterica para esta aacuterea eacute o uso do Eixo Medial que

foi colocado em [10] Vamos descrever este trabalho brevemente nesta seccedilatildeo

Este trabalho apresenta um algoritmo de reconstruccedilatildeo de superfiacutecie que parte de

uma amostragem adequada (abaixo definida) de pontos e obteacutem uma malha

que eacute topologicamente equivalente agrave superfiacutecie do objeto e agrave medida que a

densidade da amostragem cresce a saiacuteda converge para esta superfiacutecie

Para definir amostragem adequada o trabalho parte do conceito de Eixo

Medial

Operaccedilotildees Booleanas com Pontos 45

ldquoEixo Medialrdquo de uma superfiacutecie 2D posicionada no R3 eacute o conjunto

(fechado) de pontos pi para os quais buscando-se o ponto da superfiacutecie que

estaacute mais proacuteximo a pi mais de um ponto pertencentes a esta superfiacutecie satildeo

encontrados A Figura 16 abaixo ilustra o Eixo Medial em 2D

Figura 16 [10] As curvas de cor mais clara satildeo o Eixo Medial da curva em preto

Em duas dimensotildees os veacutertices de Voronoi de uma amostragem densa

aproximam o ldquoEixo Medialrdquo da amostragem (mas esta propriedade natildeo se

estende a 3D) A Figura 17 mostra o Eixo Medial em 3D

Figura 17 [10] Em 3D geralmente o Eixo Medial eacute uma superfiacutecie 2D (em cor mais

clara) Aqui o quadrado eacute o Eixo Medial da superfiacutecie transparente que o contorna

Podemos definir agora a amostragem adequada da seguinte forma

Supondo uma superfiacutecie suave que quer dizer uma 2-manifold duplamente

diferenciaacutevel posicionada no R3 uma ldquoamostragem adequadardquo desta superfiacutecie eacute

aquela na qual a densidade da amostragem eacute (pelo menos) inversamente

proporcional agrave distacircncia ao ldquoEixo Medialrdquo A Figura 18 mostra uma amostragem

adequada

Operaccedilotildees Booleanas com Pontos 46

Figura 18 [10] A figura mostra o diagrama de Voronoi de uma amostragem de pontos S

Da mesma forma que o a amostragem aproxima a curva os veacutertices de Voronoi

aproximam o Eixo Medial

Na praacutetica na reconstruccedilatildeo da superfiacutecie uma aproximaccedilatildeo deste ldquoEixo

Medialrdquo eacute computada (devido agrave dificuldade de computaacute-lo exatamente e em

alguns casos ateacute impossibilidade)

Melhorias Propostas 47

5 Melhorias Propostas

No capiacutetulo 4 apresentamos dois meacutetodos que realizam operaccedilotildees

booleanas em modelos por pontos o meacutetodo de Adams e Dutreacute [2] e o meacutetodo

de Pauly[3] Para esta dissertaccedilatildeo usamos o meacutetodo de Adams e Dutreacute [2] e

propomos as seguintes melhorias

- Alteramos o momento em que eacute feita a classificaccedilatildeo da octree Fazemos

esta classificaccedilatildeo durante a sua criaccedilatildeo Os noacutes filhos de um noacute pai P qualquer

satildeo classificados logo apoacutes a criaccedilatildeo de todos estes filhos de P

independentemente do restante da octree ter sido criada Isso pode ser feito

porque a octree eacute construiacuteda na ordem raiz-esquerda-direita (preorder

traversal) e portanto apoacutes todos os filhos de um noacute pai serem criados a parte

necessaacuteria da octree para a classificaccedilatildeo destes filhos jaacute estaacute criada

- A classificaccedilatildeo da octree eacute otimizada classificando-se os cantos dos seus

noacutes como dentro ou fora do modelo Na classificaccedilatildeo de um noacute n1 a partir de seu

vizinho n2 se os cantos que satildeo comuns a n1 e n2 tiverem a mesma

classificaccedilatildeo esta seraacute dada ao noacute Assim diminuiacutemos o nuacutemero de pesquisas

pelo surfel mais proacuteximo que eacute a parte criacutetica da classificaccedilatildeo dos noacutes da octree

em termos de tempo de processamento

- Acrescentamos um valor miacutenimo (maior que zero) para o nuacutemero de

surfels contidos em um noacute que eacute uma das condiccedilotildees de parada na criaccedilatildeo da

octree Verificamos que desta forma diminui-se a chance de erro na classificaccedilatildeo

de partes criacuteticas como ldquoarestas vivasrdquo

Uma comparaccedilatildeo entre a nossa implementaccedilatildeo e a de Pauly tambeacutem seraacute

feita no capiacutetulo 6

51 Descriccedilatildeo do algoritmo

O algoritmo implementado para esta dissertaccedilatildeo baseado no meacutetodo de

Adams e Dutreacute [2] pode ser dividido nas seguintes partes Criaccedilatildeo e

classificaccedilatildeo de uma octree para cada modelo Teste DentroFora Criaccedilatildeo do

modelo resultado Natildeo foi implementado tratamento especial algum de

interseccedilatildeo para o nosso plugin As proacuteximas seccedilotildees apresentam estas partes

Melhorias Propostas 48

511 Criaccedilatildeo e classificaccedilatildeo de uma octree para cada modelo

As ideacuteias do algoritmo satildeo aqui ilustradas em 2D mas a extensatildeo delas

para 3D eacute feita facilmente

Para cada modelo a octree eacute criada e classificada da seguinte forma

Figura 19-Quadtree classificada Os noacutes mais escuros estatildeo fora do modelo os mais claros dentro e os em tom intermediaacuterio satildeo noacutes de contorno

Gera-se uma ldquocaixa envolventerdquo do modelo contendo todos os surfels e

cria-se o noacute raiz da octree que corresponde a esta ldquocaixa envolventerdquo Este noacute

raiz eacute subdividido em oito filhos e seus surfels satildeo distribuiacutedos entre eles Ao

inveacutes de testarmos os valores de xy e z para cada surfel a fim de determinar

para qual filho ele iraacute utilizamos listas auxiliares Primeiro os surfels satildeo

subdivididos em dois grupos pelos valores de x e armazenados em uma lista

auxiliar Em seguida cada uma das listas eacute subdividida pelo valor de y e as

quatro listas obtidas seratildeo subdivididas pelo valor de z Ao final teremos 8 listas

de surfels cada uma delas pertencente a um filho

Cada noacute seraacute entatildeo novamente subdividido enquanto contiver um nuacutemero

de surfels gt nmin (valor preacute-definido) ou enquanto a profundidade da aacutervore lt pmax

(valor preacute-definido) Na figura 19 pmax = 3 e nmin = 3

Melhorias Propostas 49

Figura 20-O noacute cheio eacute dividido em trecircs partes agrave esquerda a regiatildeo estaacute dentro do modelo agrave direita estaacute fora e entre as duas linhas que dividem o noacute estaacute a regiatildeo que conteacutem os surfels

Os noacutes cheios recebem um tratamento especial Eles satildeo subdivididos em

trecircs partes da seguinte forma uma que estaacute fora do modelo outra que estaacute

dentro e uma que conteacutem os surfels Esta subdivisatildeo eacute feita por meio da criaccedilatildeo

de dois planos paralelos que dividem o noacute Para determinar estes planos

calcula-se o vetor nm igual agrave meacutedia das normais dos surfels do noacute nm = sum ns

sum ns onde ns eacute a normal de cada surfel do noacute Em seguida encontra-se o

surfel com maior produto interno entre a sua normal e a normal meacutedia

d1=Max(nm ٠ ns) Este surfel juntamente com a normal meacutedia define um dos

planos Encontra-se tambeacutem o surfel com menor produto interno entre a sua

normal e a normal meacutedia d2=Min (nm ٠ ns) Este surfel juntamente com a normal

meacutedia define o outro plano (Figura 20) Se o noacute conteacutem surfels de superfiacutecies de

orientaccedilotildees diferentes ele natildeo seraacute subdividido ou seja os planos coincidiratildeo

com os planos que delimitam o proacuteprio noacute Este teste foi implementado da

seguinte forma escolhe-se um surfel qualquer do noacute Calcula-se o produto

interno entre a normal deste surfel e as outras normais dos outros surfels deste

noacute Se algum produto interno for menor que zero este noacute natildeo seraacute subdividido

Apoacutes a etapa de subdivisatildeo classificam-se os oito cantos deste noacute como

dentro ou fora do modelo por meio da classificaccedilatildeo de um ponto que

descreveremos na sub-seccedilatildeo 5111

Melhorias Propostas 50

a b

c d

Figura 21-O noacute a eacute classificado pelo noacute c o noacute d tambeacutem eacute classificado pelo noacute c a classificaccedilatildeo do noacute a eacute propagada para o noacute b

Jaacute os noacutes vazios da octree seratildeo classificados como ldquodentrordquo ou ldquoforardquo do

modelo da seguinte forma cada noacute folha vazio eacute classificado a partir de um de

seus irmatildeos vizinhos adjacentes Se ele possuir um vizinho adjacente cheio ele

seraacute classificado por este vizinho se natildeo possuir os vizinhos adjacentes seratildeo

classificados primeiro e ele teraacute esta mesma classificaccedilatildeo (Figura 21) Como tem

que existir sempre pelo menos um noacute cheio entre os filhos de um noacute pai entatildeo

sempre esta classificaccedilatildeo poderaacute ser feita Com a classificaccedilatildeo de todos os

filhos tem-se tambeacutem a classificaccedilatildeo dos cantos do noacute pai

Mf03c003fmx a b

Figura 22-Os cantos a e b do noacute cheio possuem a mesma classificaccedilatildeo fora do modelo Esta classificaccedilatildeo foi dada ao noacute vazio adjacente

Melhorias Propostas 51

Para classificar um noacute vazio por meio de um noacute cheio verificam-se os

cantos comuns destes dois noacutes se todos os cantos tiverem a mesma

classificaccedilatildeo esta seraacute dada ao noacute vazio (Figura 22) Se houver classificaccedilotildees

diferentes escolhe-se o surfel do noacute cheio mais proacuteximo ao noacute vazio faz-se o

produto interno entre a normal deste surfel e o vetor que liga o centro do noacute

cheio ao centro do noacute vazio (ou o vetor que liga o surfel ao centro do noacute vazio)

Se o produto interno for maior que zero o noacute eacute classificado como ldquoforardquo senatildeo eacute

classificado como ldquodentrordquo Para encontrar o surfel (pertencente a um noacute cheio)

mais proacuteximo ao noacute vazio existem dois casos

- O noacute cheio eacute folha percorre-se toda a lista de surfels e escolhe o surfel

mais proacuteximo da fronteira entre o noacute cheio e o vazio

- O noacute cheio natildeo eacute um noacute folha percorrem-se os filhos do noacute cheio ou seja

esta pesquisa eacute feita descendo na octree a partir do noacute cheio procurando o

surfel mais proacuteximo agrave fronteira do pai com o noacute vazio a ser classificado

Classificando o centro do noacute vazio todo o noacute deve ter a mesma

classificaccedilatildeo pois este noacute natildeo conteacutem surfels Para encontrar o surfel do noacute

vazio mais proacuteximo da fronteira entre o noacute cheio e o vazio basta testar o valor da

coordenada se a fronteira eacute o lado direito do noacute cheio escolhe-se o surfel com

maior coordenada lsquoxrsquo se eacute o lado esquerdo escolhe-se o surfel com menor lsquoxrsquo

se lado superior surfel com maior lsquoyrsquo etc A seguir apresentamos a classificaccedilatildeo

de um ponto qualquer pertencente a um noacute cheio

Figura 23- Quadtree classificada

Melhorias Propostas 52

5111 Classificaccedilatildeo de um ponto de um noacute cheio

Figura 24 [2] A normal n eacute a normal meacutedia e os surfels s1 e s2 juntamente com a normal

n definem as retas que dividem o noacute O ponto a estaacute fora do modelo e o ponto b estaacute

dentro do modelo

Para um ponto localizado dentro do noacute faz-se o seguinte teste se o noacute foi

dividido testa-se de acordo com a divisatildeo do noacute se o ponto estaacute na parte do noacute

que estaacute dentro do modelo ele eacute classificado como ldquodentrordquo se o ponto estaacute na

parte que estaacute fora do modelo ele eacute classificado como ldquoforardquo (Figura 24) se o

ponto estaacute na parte que conteacutem os surfels encontra-se o surfel s pertencente ao

noacute mais proacuteximo do ponto e o classifica de acordo com s seja ns a normal em s

cs a coordenada de s cp a coordenada do ponto Se (cp - cs )٠ ns gt 0 o ponto

seraacute classificado como ldquoforardquo Senatildeo seraacute classificado como ldquodentrordquo

Se o noacute natildeo foi dividido em planos esta classificaccedilatildeo a partir do surfel

mais proacuteximo seraacute sempre feita

512 Teste DentroFora

Melhorias Propostas 53

Figura 25-Duas circunferecircncias e suas quadtrees correspondentes

O Teste DentroFora classifica os surfels de um modelo como dentro ou

fora de outro modelo ou na sua interseccedilatildeo Este teste foi aqui implementado

exatamente como foi proposto em Adams e Dutreacute [2] exceto que natildeo foi

implementado o meacutetodo TINN - Triangle Inequality Nearest Neighbour [19]

Cada octree eacute percorrida verificando-se se os seus noacutes ou surfels estatildeo dentro

fora ou no contorno do outro modelo (Figura 25) Sejam A e B duas octrees e

queremos classificar a octree A As duas octrees (AB) satildeo percorridas partindo

da raiz

Para cada noacute de A existem quatro casos (Figura 26) Para testar estas

situaccedilotildees os boxes dos noacutes satildeo aumentados de rmax o raio do maior surfel do

modelo Isto eacute feito para compensar o fato de que o surfel natildeo eacute apenas um

ponto mas sim considerado como um disco

Os quatro casos satildeo

Se o noacute de A natildeo intersecta B entatildeo todos os surfels deste noacute satildeo

classificados como fora

Se o noacute de A intersecta apenas noacutes de B que estatildeo fora do modelo

todos os surfels deste noacute satildeo fora

Se o noacute de A intersecta apenas noacutes de B que estatildeo dentro do modelo

todos os surfels deste noacute satildeo dentro

Melhorias Propostas 54

Se o noacute de A intersecta noacutes de B que estatildeo dentro e tambeacutem noacutes de B

que estatildeo fora testa-se se este noacute de A eacute ou natildeo folha Se natildeo for folha

percorre-se os filhos deste noacute de A ateacute encontrar um noacute folha cheio que

intersecta B Para cada surfel sa deste noacute folha de A encontra-se o surfel de B

mais proacuteximo e classifica-se a coordenada de sa da forma apresentada na seccedilatildeo

5111 Seja sb o surfel usado na classificaccedilatildeo de sa Se os discos de sb e sa

se intersectam sa eacute classificado como ldquointerseccedilatildeordquo

(a) (b)

(c) (d)

Figura 26- a modelos natildeo se intersectam b modelo intersecta noacutes fora c modelo intersecta apenas noacutes dentro d modelo intersecta noacutes dentro e noacutes fora

513 Criaccedilatildeo do modelo resultado

Um novo modelo eacute criado com os seguintes surfels (de acordo com a

operaccedilatildeo booleana escolhida pelo usuaacuterio - veja Regra 1 da seccedilatildeo 41)

Uniatildeo - surfels de A que estatildeo fora de B + surfels de B que estatildeo fora de A

Melhorias Propostas 55

Interseccedilatildeo - surfels de A que estatildeo dentro de B + surfels de B que estatildeo

dentro de A

Diferenccedila A-B - surfels de A que estatildeo fora de B + surfels de B que estatildeo

dentro de A (com orientaccedilatildeo invertida)

Como natildeo foi implementado tratamento especial algum de interseccedilatildeo para

o nosso plugin os surfels que se intersectam satildeo mantidos no modelo resultado

final sem modificaccedilotildees

Descrito o algoritmo vejamos a seguir a sua implementaccedilatildeo

52 Implementaccedilatildeo

Este algoritmo foi implementado na forma de um plugin para o software

PointShop 3D [11] Este plugin foi desenvolvido na linguagem C e no sistema

operacional Windows

A escolha deste tipo de implementaccedilatildeo permitiu-nos usar o software

PointShop para os testes do algoritmo Estes testes foram feitos com os modelos

disponibilizados para o PointShop [11] Nesta seccedilatildeo apresentaremos o software

PointShop e as principais estruturas de dados usadas em nosso plugin

O Pointshop eacute um software aberto com seu coacutedigo disponiacutevel e preparado

para trabalhar com plugins Eacute um software de ediccedilatildeo de modelos 3D por pontos

Ele permite aleacutem de visualizar o modelo alterar as suas caracteriacutesticas como

cor brilho e fazer mapeamento de textura iluminaccedilatildeo filtragem (Figura 27)

Melhorias Propostas 56

Figura 27-Software PointShop 3D com dois modelos carregados na sua cena

Aleacutem disso pode-se criar uma cena com vaacuterios modelos e visualizaacute-los de

qualquer ponto de vista Implementa o virtual trackball para rotacionaacute-los e

transladaacute-los Usa uma iluminaccedilatildeo simples direcional A sua arquitetura eacute

extensiacutevel permite que o usuaacuterio adicione seus proacuteprios componentes ao

sistema Possui trecircs tipos de componentes

ldquoToolsrdquo fornece funcionalidades para ediccedilatildeo interativa de superfiacutecie Satildeo

disponibilizados na ldquotoolbarrdquo

Plugins fornece funcionalidades para processar em um soacute passo

modelos ou partes deles selecionadas Satildeo disponibilizados no menu ldquoPluginsrdquo

Renderes fornece funcionalidades de display para os modelos

Para esta dissertaccedilatildeo foi escolhida a construccedilatildeo do componente Plugin

por adequar-se agrave nossa proposta e ser a mais simples de ser construiacuteda O

PointShop [11] jaacute conteacutem uma tool que executa operaccedilotildees booleanas e

deformaccedilatildeo free-form sobre os modelos carregados na cena usando o meacutetodo

de Pauly [3] apresentado no capiacutetulo 4 O nosso plugin Operaccedilotildees Booleanas

implementa o algoritmo descrito na seccedilatildeo anterior baseado na proposta de

Melhorias Propostas 57

Adams e Dutreacute [2] Uma comparaccedilatildeo entre o nosso plugin e a tool de Pauly [3] eacute

feita no capiacutetulo 6

Figura 28-Menu do PointShop com o plugin e as opccedilotildees para operaccedilotildees booleanas

Para se executar o plugin o usuaacuterio precisa carregar dois modelos na

cena do PointShop acionar o plugin informando a operaccedilatildeo que seraacute executada

O plugin executaraacute o algoritmo acima proposto e carregaraacute o resultado na cena

do Pointshop retirando os modelos anteriores

521 Estruturas de Dados

Como vimos o software PointShop [11] trabalha com modelos por pontos

Um modelo deste software descrito na seccedilatildeo 42 conteacutem todas as informaccedilotildees

que o algoritmo proposto em Bart [2] necessita Abaixo relacionamos as

Melhorias Propostas 58

principais estruturas de dados do PointShop usadas no plugin e as principais

estruturas de dados do nosso plugin

As principais classes do PointShop usadas no plugin satildeo

Classe Scene

Classe Objects

Classe SurfelColections

Classe Surfel

Classe StatusBar

Classe Transformer

A hierarquia de dados eacute a seguinte a Scene conteacutem vaacuterios Objects os

quais conteacutem SurfelColections Cada SurfelColections conteacutem Surfels que

suportam uma ou mais propriedades tais como cor difusa cor especular

Classe Scene Classe que representa uma cena que conteacutem modelos

Classe Object Um modelo eacute representado pela classe Object que

conteacutem uma SurfelCollection e as matrizes de transformaccedilatildeo para rotaccedilatildeo

escala e translaccedilatildeo Cada Object eacute identificado pelo seu nome que eacute uacutenico na

Scene O meacutetodo getUniqueName retorna um nome uacutenico Cada Object tem sua

proacutepria matriz de transformaccedilatildeo que pode ser modificada com setRotation

rotate setPosition translate setScale e scale Objects podem ser copiados com

copy Objects consiste em um conjunto de surfels os quais podem ser

recuperados pela getSurfelCollection O Object pode ser ativado com

setActiveObject e recuperado com getActiveObject

Objects podem ser adicionados ou removidos com addObject e

removeObject Os Objects podem ser obtidos pela getFirstObject e

getNextObject

Classe SurfelCollection representa o conjunto de surfels de um modelo

Cada surfelcollection consiste em um conjunto de surfels (SurfelInterface) de

tamanho obtido por getNofSurfels Os surfels podem ser recuperados com

getFirstSurfel getCurrentSurfel e getNextSurfel

A SurfelCollection conteacutem um PropertyDescriptor e uma SurfelList

A SurfelList eacute uma lista duplamente encadeada de surfels Possui os

atributos firstSurfel lastSurfel currentSurfel que satildeo ponteiros para uma

SurfelInterface nSurfels que eacute o nuacutemero de Surfels

A SurfelInterface define a API para os surfels que satildeo os menores

elementos que compotildeem um Object Podem ser considerados como pontos com

uma normal que define a orientaccedilatildeo do ciacuterculo (ou elipse) que seraacute desenhado

Melhorias Propostas 59

tatildeo logo o surfel seja renderizado Tem como atributos dois ponteiros (next e

prev) para SurfelInterface

PropertyDescriptor consiste em ateacute 32 valores descrevendo quais as

propriedades a SurfelInterface suporta

Classe Surfel classe que representa o surfel

Classe StatusBar classe que imprime mensagens na tela Os plugins

podem mandar mensagens para o usuaacuterio pela StatusBar

Mensagens texto podem ser impressas com showMessage O progresso

de uma operaccedilatildeo pode ser indicado com setProgress ou resetProgress

Classe Transformer representa a transformaccedilatildeo entre sistemas de

coordenadas Esta classe fornece meacutetodos para transformar pontos e vetores

entre os diferentes sistemas de coordenadas do Pointshop

A seguir apresentamos as principais estruturas de dados do plugin

Operaccedilotildees Booleanas

As principais estruturas de dados do plugin satildeo boundingbox tree no

lista_surfel surfel

Boundingbox conteacutem dois pontos 3D que definem uma caixa que conteacutem

o modelo um ponto com menores coordenadas xy e z e outro ponto com

maiores xyz

Tree representa a octree do modelo Cada registro conteacutem um ponteiro

para um noacute e oito ponteiros para as 8 octrees filhas

No representa um noacute da octree Conteacutem os seguintes dados

- localizaccedilatildeo do noacute que eacute o canto inferior esquerdo do noacute

- lista_surfel (preenchida apenas para noacutes folha cheios)

- quantidade de surfels do noacute

- classificaccedilatildeo do noacute como dentro fora ou contorno

- classificaccedilatildeo do noacute em relaccedilatildeo a outro modelo

- indica se o noacute eacute folha ou natildeo

- vetor que eacute a meacutedia das normais dos surfels do noacute

- ponto que eacute a meacutedia das localizaccedilotildees dos surfels do noacute

- surfel que tem (entre todos os surfels do noacute) o maior produto interno

entre a sua normal e a normal meacutedia

- surfel que tem (entre todos os surfels do noacute) o menor produto interno

entre a sua normal e a normal meacutedia

- produto interno maacuteximo e miacutenimo entre as normais dos surfels do noacute e a

normal meacutedia deste noacute

Melhorias Propostas 60

- indica se o noacute conteacutem surfels com normais em sentido oposto (produto

interno entre elas eacute menor que zero)

- classificaccedilatildeo dos oito cantos do noacute

lista_surfels lista em que cada registro conteacutem um apontador para um

surfel e um apontador para o proacuteximo registro

surfel representa o surfel da octree Conteacutem a classificaccedilatildeo em relaccedilatildeo a

outro modelo e um ponteiro para o surfel do Poinshop

Resultados 61

6 Resultados

Neste capiacutetulo apresentamos os testes realizados com o plugin para o

PointShop implementado para esta dissertaccedilatildeo a comparaccedilatildeo deste plugin com

o plugin de Pauly [3] e a comparaccedilatildeo entre o meacutetodo de Adams e Dutreacute [2] e o

meacutetodo de Pauly [3]

61 Testes

Os testes foram feitos em um PC x86 Family 6 261600 KB de RAM sem

placa graacutefica sistema operacional Windows 2000 O plugin foi implementado na

linguagem C

Os modelos usados para os testes satildeo modelos disponibilizados no

PointShop [11] Vale lembrar que o meacutetodo implementado em nosso plugin eacute

restrito a modelos soacutelidos e portanto foram usados apenas estes modelos

soacutelidos para os testes

O modelo na Figura 29 que eacute um dos modelos disponibilizados no

PointShop [11] foi usado para mostrar o resultado das operaccedilotildees realizadas

pelo plugin implementado nesta dissertaccedilatildeo O modelo Igea eacute um modelo soacutelido

que conteacutem 134345 surfels

Resultados 62

Figura 29-Modelo do PointShop Igea

Para realizar as operaccedilotildees este modelo foi carregado na cena do

PointShop duas vezes e um deles colorido de vermelho As Figuras 30 31 32

mostram o resultado da operaccedilatildeo de uniatildeo interseccedilatildeo e diferenccedila

respectivamente Os nuacutemeros de surfels dos modelos resultantes satildeo mostrados

na Tabela 2

Resultados 63

Figura 30-Resultado da uniatildeo de duas Igeas

Figura 31-Resultado da interseccedilatildeo de duas Igeas

Resultados 64

Figura 32-Resultado da diferenccedila entre duas Igeas

Tabela 2-Nuacutemero de surfels dos modelos resultantes

Observamos que o nuacutemero de surfels dos modelos resultantes estaacute

coerente com as figuras dos seus modelos

Para avaliar o tempo de processamento das operaccedilotildees foram realizados

vaacuterios testes com o objetivo de obter uma meacutedia dos tempos de realizaccedilatildeo de

cada operaccedilatildeo Tambeacutem foram armazenados os tempos da criaccedilatildeo das duas

octrees e da classificaccedilatildeo de todos os surfels dos dois objetos (como dentro ou

fora do outro modelo) Estes testes foram feitos usando o modelo Igea A meacutedia

dos tempos de processamento foi calculada e os resultados satildeo mostrados na

Tabela 3 Verificamos que o maior tempo gasto eacute para criaccedilatildeo das octrees

Verificamos tambeacutem que este resultado apresentado eacute similar ao resultado

verificado empiricamente com o plugin de Pauly [3] Os tempos gastos para

realizar as operaccedilotildees satildeo similares e o maior tempo gasto no plugin de Pauly

tambeacutem eacute para inicializaccedilatildeo de suas estruturas de dados que incluem a kd-tree

Operaccedilatildeo Nuacutemero de surfels do modelo resultado

Uniatildeo 189715

Interseccedilatildeo 72225

Diferenccedila 134552

Resultados 65

Operaccedilatildeo Criaccedilatildeo das

Octrees (seg)

Classificaccedilatildeo

(seg)

Criaccedilatildeo do

resultado (seg)

Total (seg)

Uniatildeo 39375 1324 18925 7154

Interseccedilatildeo 38585 1585 09547 63982

Diferenccedila 399875 1504 1729 729475

Tabela 3- Meacutedia dos tempos de processamento para as operaccedilotildees com duas Igeas

Com o objetivo de expor melhor os resultados deste trabalho

apresentamos abaixo mais um teste das operaccedilotildees booleanas usando o nosso

plugin Os modelos usados para este segundo teste satildeo o Max Planck e o Male

ambos modelos soacutelidos disponibilizados no PointShop Estes modelos satildeo

mostrados nas figura 33 e 34

O primeiro Max Planck conteacutem 52809 surfels

Figura 33-Modelo do PointShop MaxPlanck

O segundo modelo abaixo Male conteacutem 148138 surfels

Resultados 66

Figura 34-Modelo do PointShop Male

As Figuras 353637 mostram o resultado da operaccedilatildeo de uniatildeo interseccedilatildeo

e diferenccedila respectivamente usando os dois modelos acima Podemos observar

pela figura 35 que o resultado da operaccedilatildeo de diferenccedila neste caso gerou um

modelo resultado com trecircs partes desconexas Os nuacutemeros de surfels de cada

modelo resultado satildeo mostrados na Tabela 5

Figura 35- Resultado da Uniatildeo do modelo Male com MaxPlanck

Resultados 67

Figura 36-Resultado da interseccedilatildeo do modelo Male com o MaxPlanck

Figura 37-Resultado da diferenccedila do modelo Male do modelo MaxPlanck

As meacutedias de tempos de processamento foram calculadas da mesma

forma que o primeiro teste com o modelo Igea acima apresentado Os

resultados satildeo mostrados na Tabela 4 Podemos observar que este teste

Resultados 68

apresenta tempos um pouco menores que o teste com o modelo Igea Isto se

deve ao fato de que o modelo MaxPlanck ser significativamente menor que o

modelo Igea MaxPlanck possui 52809 surfels e Igea conteacutem 134345 surfels

Operaccedilatildeo Criaccedilatildeo das

Octrees (seg)

Classificaccedilatildeo

(seg)

Criaccedilatildeo do

resultado (seg)

Total

(seg)

Uniatildeo 3012 1254 102 5285

Interseccedilatildeo 2985 0901 0861 4747

Diferenccedila 2965 0911 0791 4667

Tabela 4-Tempo de processamento das operaccedilotildees com os modelos MaxPlanck e Male

Operaccedilatildeo Nuacutemero de surfels do resultado

Uniatildeo 126532

Interseccedilatildeo 88414

Diferenccedila 77635

Tabela 5-Nuacutemero de surfels dos modelos resultados das operaccedilotildees com os modelos MaxPlanck e Male

Em seguida apresentaremos uma comparaccedilatildeo entre o nosso plugin e o

plugin de Pauly[3] e tambeacutem uma comparaccedilatildeo entre o meacutetodo de Adams e Dutreacute

[2] e o meacutetodo de Pauly [3]

62 Comparaccedilatildeo entre os dois meacutetodos que realizam operaccedilotildees booleanas

A comparaccedilatildeo entre os meacutetodos de Pauly[3] e de Adams e Dutreacute foi feita

em termos de tempo de processamento e em termos conceituais Em termos de

tempo de processamento comparamos o plugin de Pauly[3] com o nosso plugin

Em termos de tempo de processamento verifica-se empiricamente que os

dois meacutetodos apresentam tempos bastante similares Entretanto o tempo de

processamento do algoritmo aqui implementado ainda pode ser melhorado com

Resultados 69

o uso do meacutetodo TINN [19] que foi proposto em Adams[2] - para otimizar a

pesquisa do surfel mais proacuteximo a um ponto que estaacute localizado na regiatildeo de um

noacute que conteacutem surfels - veja seccedilatildeo 42 O uso deste meacutetodo natildeo foi

implementado para este trabalho e a sua implementaccedilatildeo melhoraria o tempo de

resposta do algoritmo Aleacutem disso o trabalho de Sara F Frisken [12] citado no

capiacutetulo 2 apresenta uma otimizaccedilatildeo no uso de octrees que pode ser

incorporada no algoritmo implementado neste trabalho

Em termos conceituais vamos fazer a comparaccedilatildeo do uso do que

chamamos aqui de Regra 2 do tratamento de interseccedilatildeo e do tratamento de

ldquoarestas vivasrdquo

Como vimos na seccedilatildeo 41 tanto o algoritmo implementado nesta

dissertaccedilatildeo baseado no trabalho de Adams e Dutreacute como o meacutetodo de Pauly

[3] parte do que chamamos aqui de Regra 2 para realizar operaccedilotildees booleanas

com pontos Mas cada um destes meacutetodos daacute um tratamento diferente para o

uso desta regra

O meacutetodo de Pauly usa a Regra 2 para classificaccedilatildeo de cada ponto ou de

cada surfel Para classificar um surfel de B sb como dentro ou fora de A eacute

encontrado o surfel de A sa mais proacuteximo a sb e sb eacute classificado a partir de sa

Para encontrar sa Pauly utiliza uma kd-tree Como esta pesquisa para encontrar

sa eacute cara (mesmo usando uma kd-tree) Pauly utiliza uma esfera que conteacutem

pontos com a mesma classificaccedilatildeo (seccedilatildeo 432) e diminui em 90 este nuacutemero

de pesquisas Pauly utiliza tambeacutem a representaccedilatildeo impliacutecita MLS (Moving Least

Squares) para casos em que a Regra 2 poderia falhar e para tratamento de

interseccedilotildees Entretanto o nuacutemero destes casos em que a Regra 2 poderia falhar

eacute muito pequeno E a representaccedilatildeo MLS natildeo eacute uma estrutura simples de ser

implementada Portanto natildeo encontramos vantagens em usar MLS para estes

casos O meacutetodo de Adams e Dutreacute natildeo trata estes casos e na praacutetica

apresenta resultados bastante satisfatoacuterios como foi mostrado Portanto

consideramos que valeria a pena fazer algum tratamento especial para estes

casos se fosse um procedimento simples Para a execuccedilatildeo do algoritmo de

Pauly o uso de MLS natildeo interfere significativamente porque a construccedilatildeo desta

representaccedilatildeo natildeo eacute feita somente para realizar operaccedilotildees booleanas Os testes

empiacutericos que fizemos com o algoritmo de Pauly natildeo incluem a construccedilatildeo desta

representaccedilatildeo

Aparentemente os dois algoritmos satildeo bastante parecidos um usa octrees

e o outro usa kd-tree As duas estruturas de dados satildeo simples e otimizam a

classificaccedilatildeo dos surfels de um modelo como dentro ou fora do outro modelo

Resultados 70

Mas existe uma diferenccedila conceitual entre dois que merece ser destacada O

algoritmo aqui implementado usa a Regra 2 para classificaccedilatildeo dos noacutes de uma

octree e armazena esta octree classificada (ver capiacutetulo 5) Assim na maioria dos

casos natildeo seraacute necessaacuterio encontrar o surfel mais proacuteximo para classificar um

ponto (ou um surfel) como fora ou dentro de um modelo Caso o ponto esteja em

uma aacuterea da octree classificada ele teraacute a classificaccedilatildeo dada agravequela aacuterea A

pesquisa ao surfel mais proacuteximo seraacute feita apenas nos casos em que o ponto a

ser classificado estaacute localizado entre os planos que subdividem um noacute cheio

O uso desta octree classificada levanta uma questatildeo que natildeo foi citada no

trabalho de Adams e Dutreacute que eacute a proximidade desta estrutura (armazenada)

de octree classificada com uma representaccedilatildeo volumeacutetrica do objeto Sendo

assim esta estrutura pode ser aproveitada para outras funccedilotildees aleacutem da

classificaccedilatildeo dos surfels Por exemplo podemos ter uma aproximaccedilatildeo do

volume de uma cena somando os volumes aproximados dos modelos que a

compotildeem Como o enfoque deste trabalho eacute operaccedilatildeo booleana natildeo vamos nos

aprofundar nesta questatildeo

Outra importante diferenccedila entre os dois trabalhos que jaacute foi explicada na

seccedilatildeo 432 eacute que o meacutetodo de Pauly aplica-se a modelos soacutelidos ou natildeo

soacutelidos enquanto que o meacutetodo de Adams e Dutreacute aplica-se somente a modelos

soacutelidos

Quanto ao tratamento de interseccedilatildeo em termos de visualizaccedilatildeo todos os

dois resolvem bem o problema O tratamento de interseccedilatildeo nos dois trabalhos

tambeacutem resolve o problema da validade da Regra 2 (ver seccedilatildeo 44) Entretanto

o tratamento de Adams e Dutreacute natildeo depende da renderizaccedilatildeo sendo portanto

mais portaacutevel Aleacutem disso uma desvantagem do meacutetodo de Pauly eacute o uso da

representaccedilatildeo impliacutecita MLS (ldquoMoving Least Squaresrdquo) do objeto para obter os

pontos exatamente na curva de interseccedilatildeo Esta representaccedilatildeo torna o

tratamento de interseccedilatildeo mais complexo e a vantagem apresentada natildeo eacute tatildeo

significativa para este tratamento de interseccedilatildeo

Conclusatildeo 71

7 Conclusatildeo

Concluiacutemos entatildeo que as escolhas de Adams e Dutreacute por usar uma

octree classificada e pelo tratamento dado agrave interseccedilatildeo satildeo mais abrangentes

que a escolha de Pauly E consideramos que quanto mais abrangente for uma

escolha conceitual mais resultados poderemos tirar dela No caso de Adams e

Dutreacute eles estendem o problema de classificar um ponto para classificar todo o

modelo Como foi citado ele quase fornece uma representaccedilatildeo volumeacutetrica do

modelo Esta aproximada representaccedilatildeo volumeacutetrica pode nos fornecer outras

informaccedilotildees como por exemplo o volume aproximado do modelo

Aleacutem disso o uso da representaccedilatildeo impliacutecita MLS no meacutetodo de Pauly cria

uma complexidade a mais para o meacutetodo sem apresentar vantagens para a

realizaccedilatildeo de operaccedilotildees booleanas que eacute o nosso enfoque

Logo podemos dizer que o meacutetodo de Adams e Dutreacute apresenta as

seguintes vantagens em relaccedilatildeo ao de Pauly

- a estrutura de octree classificada aleacutem de ser usada para classificaccedilatildeo

fornece informaccedilotildees adicionais como volume aproximado do objeto

- o tempo de processamento no meacutetodo de Adams e Dutreacute tende a ser

melhor que no meacutetodo de Pauly se implementadas as melhorias acima citadas e

se colocaacutessemos em consideraccedilatildeo o uso da representaccedilatildeo impliacutecita MLS

(Moving Least Squares)

- o tratamento de interseccedilatildeo de Adams e Dutreacute apresenta a vantagem da

portabilidade ou seja iraacute funcionar independente do algoritmo de renderizaccedilatildeo

utilizado

E as vantagens do meacutetodo de Pauly em relaccedilatildeo ao de Adams e Dutreacute

- a colocaccedilatildeo de surfels exatamente na curva de interseccedilatildeo

- a possibilidade de trabalhar com modelos soacutelidos ou natildeo soacutelidos

E finalizando concluiacutemos que o estudo relatado nesta dissertaccedilatildeo foi

importante por

- fornecer um breve estudo sobre modelagem por pontos uma nova e

promissora aacuterea dentro da computaccedilatildeo graacutefica

Conclusatildeo 72

- por apresentar uma avaliaccedilatildeo dos dois trabalhos existentes sobre

operaccedilotildees booleanas com pontos encontrando as vantagens de cada um

e levantando questotildees que natildeo tinham sido citadas nos trabalhos originais

- por propor e implementar melhorias ao trabalho de Adams e Dutreacute

71 Trabalhos Futuros

Nossa implementaccedilatildeo pode ser ainda evoluiacuteda com as propostas

apresentadas na seccedilatildeo 62 Como observamos o tempo de processamento do

algoritmo aqui implementado ainda pode ser melhorado com o uso do meacutetodo

TINN [19] - que foi proposto em Adams[2] - para otimizar a pesquisa do surfel

mais proacuteximo a um ponto que estaacute localizado na regiatildeo de um noacute que conteacutem

surfels Aleacutem disso o trabalho Simple and Efficient Trasversal Methods for

Quadtrees and Octrees de Sara F Frisken [12] citado no capiacutetulo 2 apresenta

uma otimizaccedilatildeo no uso de octrees Outra proposta para melhorar o tempo de

processamento do algoritmo aqui implementado eacute usar a forma de trabalhar com

octrees apresentada neste trabalho

O trabalho de Adams e Dutreacute [2] eacute aplicado apenas a objetos soacutelidos O

nosso plugin portanto aplica-se somente a este tipo de objeto Jaacute o trabalho de

Pauly[3] eacute aplicado tambeacutem a modelos natildeo soacutelidos Apresentamos como

proposta a um trabalho futuro a extensatildeo do algoritmo aqui implementado para

modelos natildeo soacutelidos O surfel pode conter uma informaccedilatildeo adicional que indica

se ele estaacute delimitando um volume ou natildeo Assim pode-se ter um modelo com

ldquopartes soacutelidasrdquo e ldquopartes natildeo soacutelidasrdquo Por exemplo a uniatildeo de um plano com

uma esfera poderia resultar numa esfera com ldquoabasrdquo (seriam as partes do plano

que estariam fora da esfera) O modelo resultado teria uma parte correspondente

a um espaccedilo 3D (esfera) e outra parte que seria uma superfiacutecie 2D posicionada

no espaccedilo 3D sem delimitar algum volume (abas)

Muitos trabalhos podem ser desenvolvidos aplicando-se o modelo por

pontos em animaccedilatildeo jogos visualizaccedilatildeo de terrenos criaccedilatildeo de protoacutetipos etc

considerando-se a eficiecircncia e simplicidade do modelo E mais especificamente

as operaccedilotildees booleanas com pontos podem ser aplicadas para criaccedilatildeo de

cenaacuterios testes de colisotildees e nestes casos a representaccedilatildeo usando octrees

pode ser mais explorada considerando-se o seu potencial de representaccedilatildeo

volumeacutetrica de um objeto

Referecircncias Bibliograacuteficas 73

8 Referecircncias Bibliograacuteficas

[1] MAumlNTYLAuml M An Introduction to Solid Modeling Computer Science Press 1988

[2] ADAMS B DUTREacute P Interactive Boolean Operations on Surfel-

Bounded Solids Proceedings of SIGGRAPH 2003 San Diego USA 2003

[3] PAULY M KEISER R KOBBELT L GROSS M Shape Modeling

with Point-Sampled Geometry SIGGRAPH 2003 Computer Graphics

Proceedings Annual Conference Series ACM Press ACM SIGGRAPH 2003

[4] LEVOY M WHITTED T The Use of Points as Display Primitives

Technical Report TR 85-022 The University of North Carolina at Chapel Hill

Department of Computer Science 1985

[5] PFISTER H ZWICKER M VAN BAAR J GROSS M 2000 Surfels

Surface Elements as Rendering Primitives SIGGRAPH 2000 pp 335ndash342 New

Orleans LA July 23-28 2000

[6] ZWICKER M PFISTER H VAN BAAR J GROSS M Surface

Splatting SIGGRAPH 2001

[7] PAULY M KOBBELT L GROSS M Multiresolution Modeling of

Point-Sampled Geometry CS Techinical Report 378 September 16 2002

[8] CURLESS B New Methods for Surface Reconstruction from Range Images PhD thesis Stanford University 1997

[9] RUSINKIEWICZ S Real-time Acquisition and Rendering of Large 3D Models PhD thesis Stanford University 2001

Referecircncias Bibliograacuteficas 74

[10] AMENTA N BERN M KAMVYSSELIS M A new Voronoi-Based

Surface Reconstruction Algorithm SIGGRAPH 98 Conference proceedings pp

415-421 New York 1998

[11] ZWICKER M PAULY M KNOLL O GROSS M Pointshop 3D an

Interactive System for Point-Based Surface Editing Proceedings of SIGGRAPH 2002 San Antonio TX July 2002

[12] FRISKEN S PERRY R Simple and Efficient Traversal Methods for

Quadtrees and Octrees Journal of Graphics Tools Vol 7 Issue 3 May 2003

[13] CORREcircA W T OLIVEIRA M M Silva C T Wang J

Modeling and Rendering of Real Environments

Revista de Informaacutetica Teoacuterica e Aplicada (Brazilian Journal of Theoretic and Applied Computing) 9(2)127-156 2002

[14] DAVIS J MARSCHNER S GARR M LEVOY M Filling Holes in

Complex Surfaces Using Volumetric Diffusion First International Symposium on 3D Data Processing Visualization Transmission June 2002

[15] RAumlSAumlNEN J Surface Splatting Theory Extensions and Implementation Masterrsquos Thesis Dept of Computer Science Helsinki

University of Technology May 28 2002

[16] PAULY M Point Primitives for Interactive Modeling and Processing of 3D Geometry PhD thesis Federal Institute of Technology (ETH)

of Zurich 2003

[17] HOPPE H DEROSE T DUCHAMP T MCDONALD J

STUELZLE W Surface Reconstruction from Unorganized Points Computer Graphics 26(2)71ndash78 July 1992

[18] ALEXA M BEHR J COHEN-OR D FLEISHMAN S LEVIN D

SILVA C T Point Set Surfaces IEEE Visualization 2001 pp 21ndash28 October

2001

Referecircncias Bibliograacuteficas 75

[19] GREENSPAN M GODIN G TALBOT J Acceleration of Binning

Nearest Neighbor Methods Proceedings of Vision Interface 2000 pp 337-

344

[20] MENCL R Reconstruction of Surfaces from Unorganized Three-Dimensional Point Clouds Dissertation Dortmund Univ 2001

[21] KRIVANEK J Representing and Rendering Surfaces With Points

httpciteseernjneccomkrivanek03representinghtml Acesso em 30 jul

2003

[22] KRISTJANSSON ET AL Approximate Boolean Operations on Free-

form Solids Proceedings of SIGGRAPH 01 2001

Heloisa Reis Leal

Operaccedilotildees Booleanas na Modelagem por Pontos

Dissertaccedilatildeo apresentada como requisito parcial para obtenccedilatildeo do tiacutetulo de Mestre pelo Programa de Poacutes-Graduaccedilatildeo em Informaacutetica da PUC-Rio Aprovada pela Comissatildeo Examinadora abaixo assinada

Prof Waldemar Celes Filho Orientador

Departamento de Informaacutetica-PUC-Rio

Prof Luiz Velho Co-orientador

Instituto de Matemaacutetica Pura e Aplicada (IMPA)

Prof Bruno Feijoacute Departamento de Informaacutetica-PUC-Rio

Prof Marcelo Dreux Departamento de Mecacircnica-PUC-Rio

Prof Paulo Cezar Pinto Carvalho Instituto de Matemaacutetica Pura e Aplicada (IMPA)

Prof Joseacute Eugecircnio Leal Coordenador Setorial do Centro Teacutecnico Cientiacutefico - PUC-Rio

Rio de Janeiro 3 de agosto de 2004

Todos os direitos reservados Eacute proibida a reproduccedilatildeo total ou parcial do trabalho sem autorizaccedilatildeo da universidade da autora e do orientador

Heloisa Reis Leal Graduou-se em Ciecircncia da Computaccedilatildeo pela Universidade Federal de Minas Gerais (UFMG) em abril de 1992 Trabalhou como Analista de Sistemas na empresa Telecomunicaccedilotildees de Minas Gerais SA (TELEMIG) entre 1993 e 1997 onde atuou no desenvolvimento de sistemas de controle da rede telefocircnica de Minas Gerais Trabalhou como Analista de Sistemas no Tribunal de Justiccedila do Estado de Minas Gerais (TJMG) entre 1998 e 2001 onde atuou no desenvolvimento de sistemas controle de processos e controle de equipamentos Desde 2002 trabalha no Serviccedilo Federal de Processamento de Dados (SERPRO) desenvolvendo sistema de controle da Malha Fiscal do Imposto de Renda - Pessoa Fiacutesica

Ficha Catalograacutefica

Leal Heloisa Reis

Operaccedilotildees booleanas na modelagem por pontos

Heloisa Reis Leal orientadores Waldemar Celes Filho

Luiz Velho ndash Rio de Janeiro PUC Departamento de

Informaacutetica 2004

75 f il 30 cm

Dissertaccedilatildeo (mestrado) ndash Pontifiacutecia

Universidade Catoacutelica do Rio de Janeiro Departamento de

Informaacutetica

Inclui referecircncias bibliograacuteficas

1 Informaacutetica ndash Teses 2 Computaccedilatildeo graacutefica

interativa 3 Modelagem 3D 4 Modelagem por pontos 5

Operaccedilotildees booleanas I Celes Filho Waldemar II Velho

Luiz III Pontifiacutecia Universidade Catoacutelica do Rio de Janeiro

Departamento de Informaacutetica III Tiacutetulo

CDD 004

Agrave minha matildee Tetecirc Daacutelton e Lucas

Agradecimentos Aos meus orientadores Waldemar Celes e Luiz Velho pelo apoio dedicaccedilatildeo e paciecircncia que tornaram este trabalho possiacutevel Agrave PUC-Rio pelo apoio financeiro Aos membros da banca examinadora pelas correccedilotildees e sugestotildees Agrave Cristina Griner chefe de projeto do SERPRO pelo apoio compreensatildeo e ajuda Aos meus professores de mestrado pelos conhecimentos transmitidos Agrave Mauren Paola Ruthner pela amizade e colaboraccedilatildeo durante todo o mestrado Aos colegas do Departamento de Informaacutetica da PUC-Rio pelos momentos compartilhados Agrave minha matildee pela revisatildeo do texto desta dissertaccedilatildeo e pelo total apoio sem o qual este trabalho natildeo seria possiacutevel Agrave Daacutelton e Tetecirc meus queridos irmatildeos pelo apoio incentivo e colaboraccedilatildeo

Resumo

Leal Heloisa ReisCeles Waldemar (Orientador) Operaccedilotildees Booleanas na Modelagem por Pontos Rio de Janeiro 2004 75p Dissertaccedilatildeo de Mestrado - Departamento de Informaacutetica Pontifiacutecia Universidade Catoacutelica do Rio de Janeiro

Operaccedilotildees booleanas em modelagem 3D satildeo usadas para criar novos

modelos ou para modificaacute-los Na maioria dos tipos de representaccedilatildeo de objetos

3D estas operaccedilotildees satildeo bastante complexas Nos uacuteltimos anos tem sido muito

explorado um novo tipo de modelagem a modelagem por pontos que apresenta

muitas vantagens em relaccedilatildeo agraves outras representaccedilotildees como maior simplicidade

e eficiecircncia Dois trabalhos exploram as operaccedilotildees booleanas na modelagem

por pontos o trabalho de Adams e Dutreacute e o trabalho de Pauly et al Dada a

grande importacircncia deste novo tipo de modelagem e do uso de operaccedilotildees

booleanas esta dissertaccedilatildeo apresenta uma introduccedilatildeo agrave modelagem por pontos

implementa o algoritmo proposto em Adams e Dutreacute com algumas melhorias e o

compara com o meacutetodo de Pauly et al

Palavras-chave

Modelagem 3D Modelagem por pontos Operaccedilotildees Booleanas

Computaccedilatildeo Graacutefica Interativa

Abstract

Leal Heloisa Reis Celes Waldemar(Advisor) Boolean Operations on Point-based models Rio de Janeiro 2004 75p MSc Dissertation - Departamento de Informaacutetica Pontifiacutecia Universidade Catoacutelica do Rio de Janeiro

Boolean operations are used to create or modify models These operations

in the majority of 3D object representations are very complex In the last years a

significant trend in computer graphics has been the shift towards point sampled

3D models due to their advantages over other representations such as simplicity

and efficiency Two recent works present algorithms to perform interactive

boolean operations on point-based models the work by Adams and Dutreacute and

the work by Pauly et Al Due to great importance of this novel representation

and of the use of boolean operations the present work makes an introduction to

point-based representation implements the algorithm proposed by Adams and

Dutreacute with some improvements and compares this implementation with the work

by Pauly et al

Palavras-chave

3D Modeling Point-based Modeling Boolean Operation Interactive

Computer Graphics

Sumaacuterio

1 Introduccedilatildeo 15

2 Trabalhos relacionados 18

3 Modelagem por Pontos 20 31 Ideacuteia da Representaccedilatildeo 20 32 Tipos de distribuiccedilatildeo dos surfels 22 33 Estrutura de multi-resoluccedilatildeo 22 34 Dados que um surfel pode conter 23 35 Aquisiccedilatildeo do modelo 23 351 Aquisiccedilatildeo da geometria 23 352 Aquisiccedilatildeo da textura 24 353 Correccedilatildeo das falhas da aquisiccedilatildeo 25 36 Reconstruccedilatildeo da superfiacutecie (contiacutenua) a partir do modelo (discreto) 25 37 Visualizaccedilatildeo do modelo 26 38 Ediccedilatildeo do modelo 28

4 Operaccedilotildees Booleanas com Pontos 29 41 Meacutetodos para realizar operaccedilotildees booleanas em objetos modelados por

pontos 29 42 Meacutetodo de Adams e Dutreacute 33 421 Modelo por Pontos em Adams e Dutreacute 33 422 Algoritmo de Operaccedilotildees Booleanas 34 43 Meacutetodo de Pauly 39 431 Modelo em Pauly 40 432 Algoritmo de Operaccedilotildees Booleanas 40 44 Validade da Regra 2 43

5 Melhorias Propostas 47 51 Descriccedilatildeo do algoritmo 47 511 Criaccedilatildeo e classificaccedilatildeo de uma octree para cada modelo 48

512 Teste DentroFora 52 513 Criaccedilatildeo do modelo resultado 54 52 Implementaccedilatildeo 55 521 Estruturas de Dados 57

6 Resultados 61 61 Testes 61 62 Comparaccedilatildeo entre os dois meacutetodos que realizam operaccedilotildees booleanas 68

7 Conclusatildeo 71 71 Trabalhos Futuros 72

8 Referecircncias Bibliograacuteficas 73

11

Lista de figuras

Figura 1 Um modelo por pontos e sua visualizaccedilatildeo 21 Figura 2 A superfiacutecie modelada por surfels O surfel em destaque tem raio de

alcance rt e normal n 22 Figura 3 Modelo por pontos e sua renderizaccedilatildeo usando Surface Splatting 26 Figura 4 Trecircs modelos novos foram criados a partir dos quatro iniciais (esfera

cilindro dois cubos) O primeiro eacute a esfera menos um cubo em seguida

retirou-se outro cubo e por uacuteltimo retirou-se o cilindro 29 Figura 5 A partir de dois modelos por pontos uma heacutelice e uma cabeccedila as trecircs

operaccedilotildees booleanas satildeo mostradas da esquerda para a direita uniatildeo

diferenccedila e interseccedilatildeo 30 Figura 6 (a) Dois modelos A e B (b) Posicionados de forma que A tem uma parte

dentro de B eacute mostrado o resultado A U B Af + Bf (c) Resultado de A ndash B Af

+ Bd (d) Resultado de A cap B Ad + Bd 31 Figura 7 Para classificar o ponto x encontra-se o surfel p (com normal np) mais

proacuteximo a x Se o produto interno entre np e (x ndash p) for maior que zero entatildeo

x eacute classificado como fora senatildeo seraacute classificado como dentro 32 Figura 8 Interseccedilatildeo de duas esferas agrave esquerda sem nenhum tratamento de

interseccedilatildeo agrave direita apoacutes o tratamento de interseccedilatildeo 33 Figura 9 Um objeto representado por pontos com suas normais e sua quadtree

correspondente classificada os noacutes cinza claro estatildeo dentro do modelo noacutes

cinza mais escuro estatildeo fora do modelo e noacutes com cinza intermediaacuterio satildeo

noacutes cheios noacutes que conteacutem pontos 35 Figura 10 Divisatildeo de noacute de contorno a parte agrave esquerda estaacute fora do modelo a

parte agrave direita estaacute dentro do modelo e a faixa intermediaacuteria conteacutem os

surfels 36 Figura 11 Interseccedilatildeo do surfel s e do plano que passa pelo surfel t o surfel mais

proacuteximo a s O surfel s eacute substituiacutedo por trecircs surfels menores 38 Figura 12 Agrave direita eacute mostrado o resultado do tratamento de interseccedilatildeo para o

caso de Arestas Vivas do objeto agrave esquerda 39 Figura 13 Os novos surfels satildeo colocados exatamente na curva de interseccedilatildeo e

convergem para o ponto de interseccedilatildeo 42 Figura 14 (a) Suponhamos a reta que eacute a interseccedilatildeo do plano tangente a S1 em

q1 e o plano tangente a S2 em q2 O ponto r eacute o ponto desta reta que estaacute

12

mais proacuteximo a q1 e q2 (b) r eacute projetado sobre S1 e S2 obtendo-se q1acute e q2acute

dois novos pontos de partida para nova iteraccedilatildeo (c) A nova iteraccedilatildeo gera r

que eacute uma aproximaccedilatildeo melhor de q 43 Figura 15 Para verificar se o ponto x estaacute fora de um contorno C encontra-se o

ponto y de C Se o produto interno entre a normal em y e o vetor que liga y a

x for maior que zero entatildeo x estaacute fora de C senatildeo estaacute dentro de C 44 Figura 16 As curvas vermelhas satildeo o Eixo Medial da curva em preto 45 Figura 17 Em 3D geralmente o Eixo Medial eacute uma superfiacutecie 2D (em vermelho)

Aqui o quadrado eacute o Eixo Medial da superfiacutecie transparente que o contorna

45 Figura 18 A figura mostra o diagrama de Voronoi de uma amostragem de pontos

S Da mesma forma que a amostragem aproxima a curva os veacutertices de

Voronoi aproximam o Eixo Medial 46 Figura 19 Quadtree classificada Os noacutes mais escuros estatildeo fora do modelo os

mais claros dentro e os em tom intermediaacuterio satildeo noacutes de contorno 48 Figura 20 O noacute cheio eacute dividido em trecircs partes agrave esquerda a regiatildeo estaacute dentro

do modelo agrave direita estaacute fora e entre as duas linhas que dividem o noacute estaacute a

regiatildeo que conteacutem os surfels 49 Figura 21 O noacute a eacute classificado pelo noacute c o noacute d tambeacutem eacute classificado pelo noacute c

a classificaccedilatildeo do noacute a eacute propagada para o noacute b 50 Figura 22 Os cantos a e b do noacute cheio possuem a mesma classificaccedilatildeo fora do

modelo Esta classificaccedilatildeo foi dada ao noacute vazio adjacente 50 Figura 23 Quadtree classificada 51 Figura 24 A normal n eacute a normal meacutedia e os surfels s1 e s2 juntamente com a

normal n definem as retas que dividem o noacute 52 Figura 25 Duas circunferecircncias e suas quadtrees correspondentes 53 Figura 26 a modelos natildeo se intersectam b modelo intersecta noacutes fora c

modelo intersecta apenas noacutes dentro d modelo intersecta noacutes dentro e noacutes

fora 54 Figura 27 Software PointShop 3D com dois modelos carregados na sua cena 56 Figura 28 Menu do PointShop com o plugin e as opccedilotildees para operaccedilotildees

booleanas 57 Figura 29 Modelo do PointShop Igea 62 Figura 30 Resultado da uniatildeo de duas Igeas 63 Figura 31 Resultado da interseccedilatildeo de duas Igeas 63 Figura 32 Resultado da diferenccedila entre duas Igeas 64

13

Figura 33 Modelo do PointShop MaxPlanck 65 Figura 34 Modelo do PointShop Male 66 Figura 35 Resultado da Uniatildeo do modelo Male com MaxPlanck 66 Figura 36 Resultado da interseccedilatildeo do modelo Male com o MaxPlanck 67 Figura 37 Resultado da diferenccedila do modelo Male do modelo MaxPlanck 67

14

Lista de tabelas

Tabela 1 Classificaccedilatildeo para operaccedilotildees booleanas 42

Tabela 2- Nuacutemero de surfels dos modelos resultantes 64 Tabela 3- Meacutedia dos tempos de processamento para as operaccedilotildees com duas

Igeas 65

Tabela 4-Tempo de processamento das operaccedilotildees com os modelos MaxPlanck

e Male 68 Tabela 5- Nuacutemero de surfels dos modelos resultados das operaccedilotildees com os

modelos MaxPlanck e Male 68

15

1 Introduccedilatildeo

O mundo digital estaacute conquistando cada vez mais espaccedilo nos meios de

comunicaccedilatildeo Sons imagens viacutedeos digitais satildeo miacutedias muito usadas em

diversas aacutereas como entretenimento medicina desenho industrial engenharia

arquitetura educaccedilatildeo arte ciecircncia entre outras Podemos citar alguns

exemplos dentro destas aacutereas como jogos efeitos especiais filmes digitais

visualizaccedilatildeo cientiacutefica viacutedeo-conferecircncia comeacutercio na internet Nos uacuteltimos anos

verificamos que o modelo 3D vem se tornando um novo meio de comunicaccedilatildeo

digital Com o desenvolvimento da tecnologia de aquisiccedilatildeo e do processamento

de modelos 3D ele vem sendo cada vez mais utilizado Jogos 3D animaccedilotildees

aplicaccedilotildees em realidade virtual visualizaccedilatildeo cientiacutefica aplicaccedilotildees para aacuterea

meacutedica e odontoloacutegica criaccedilatildeo de reacuteplicas para estudo e preservaccedilatildeo do

patrimocircnio histoacuterico sistemas CADCAM cataacutelogos de modelos 3D na Web para

comercializaccedilatildeo criaccedilatildeo de protoacutetipos para arquitetura engenharia satildeo alguns

exemplos de aplicaccedilotildees que usam modelos 3D

A aacuterea que estuda a representaccedilatildeo de um modelo 3D no computador eacute

chamada de modelagem em computaccedilatildeo graacutefica Existem diversos tipos de

modelagem para as diversas aplicaccedilotildees que usam um modelo 3D como por

exemplo representaccedilotildees poligonais como malhas triangulares que satildeo

geralmente usadas na aacuterea de entretenimento Este trabalho explora um novo

tipo de modelagem a modelagem por pontos

A modelagem por pontos comeccedilou a ser largamente explorada nesta

deacutecada e trata-se de uma aacuterea muito promissora em computaccedilatildeo graacutefica dadas

agraves vaacuterias e grandes vantagens em relaccedilatildeo aos outros tipos de representaccedilatildeo

como esquema de representaccedilatildeo CSG (Constructive Solid Geometry) [1] ou

malhas poligonais Dentre as principais vantagens podemos citar grande

simplicidade e flexibilidade boa performance robustez Mas a principal

vantagem desta modelagem que foi o fator que impulsionou o seu grande

desenvolvimento nesta deacutecada eacute que esta modelagem por pontos eacute a melhor

opccedilatildeo para tratar os dados de saiacuteda de equipamentos de aquisiccedilatildeo de modelos

3D O uso destes equipamentos tem aumentado muito nesta deacutecada A

16

tecnologia destes equipamentos tem progredido muito e eles tecircm se tornado

mais baratos A tendecircncia eacute que o uso destes equipamentos se torne o mais

utilizado meio de obtenccedilatildeo de modelos 3D Isto porque construir modelos 3D

bastante detalhados por meio de um software de modelagem eacute muito trabalhoso

O processo de aquisiccedilatildeo de modelos por meio destes equipamentos automatiza

este processo de construccedilatildeo

No trabalho com modelos 3D frequumlentemente satildeo usadas as operaccedilotildees

booleanas que satildeo operaccedilotildees de uniatildeo interseccedilatildeo ou diferenccedila No esquema

de representaccedilatildeo CSG estas operaccedilotildees fazem parte da representaccedilatildeo do

objeto Estas operaccedilotildees tambeacutem podem ser usadas para criar novos modelos ou

para alteraacute-los Na maioria dos tipos de representaccedilatildeo de objetos 3D estas

operaccedilotildees satildeo bastante complexas

A simplicidade da representaccedilatildeo por pontos permite que as operaccedilotildees

booleanas sejam realizadas com facilidade se compararmos com a realizaccedilatildeo

destas operaccedilotildees em outros tipos de representaccedilatildeo como malhas poligonais

Motivada pelas vantagens desta modelagem e pela utilidade destas operaccedilotildees

esta dissertaccedilatildeo apresenta uma introduccedilatildeo geral de modelagem por pontos e

trabalha mais especificamente com operaccedilotildees booleanas em objetos

modelados por pontos Dois trabalhos que exploram as operaccedilotildees booleanas na

modelagem por pontos seratildeo abordados o trabalho de Adams e Dutreacute [2] e o

trabalho de Pauly et al [3] O presente trabalho implementa o meacutetodo de Adams

e Dutreacute com algumas melhorias e faz uma comparaccedilatildeo entre o meacutetodo de Pauly

[3] e o meacutetodo de Adams e Dutreacute [2] com nossas melhorias

Como contribuiccedilotildees dadas por este trabalho apresentamos

- um estudo sobre modelagem por pontos

- um estudo sobre operaccedilotildees booleanas com pontos

- proposta de melhorias ao algoritmo proposto por Adams e Dutreacute [2]

- comparaccedilatildeo dos dois meacutetodos propostos para realizar estas operaccedilotildees

meacutetodo de Pauly et al [3] e de Adams e Dutreacute [2]

Este trabalho vem apresentado nesta dissertaccedilatildeo organizada em sete

capiacutetulos conforme descrito resumidamente a seguir

O capiacutetulo 2 cita alguns trabalhos sobre modelagem por pontos que estatildeo

relacionados a este trabalho

O capiacutetulo 3 apresenta uma visatildeo geral do modelo por pontos e explica

melhor alguns trabalhos citados no capiacutetulo 2

17

O capiacutetulo 4 apresenta operaccedilotildees booleanas com pontos e os dois

meacutetodos para realizaacute-las na modelagem por pontos meacutetodo de Pauly et al [3] e

de Adams e Dutreacute [2]

O capiacutetulo 5 apresenta algumas melhorias ao algoritmo de Adams e Dutreacute

[2] e a nossa implementaccedilatildeo deste algoritmo

O capiacutetulo 6 traz os resultados obtidos

E finalmente o capiacutetulo 7 encerra o trabalho com uma conclusatildeo e com

possiacuteveis trabalhos futuros

Trabalhos relacionados 18

2 Trabalhos relacionados

O primeiro pesquisador a propor o uso de pontos como primitiva graacutefica foi

Levoy em [4] Ele propotildee o uso de pontos como primitiva de renderizaccedilatildeo e

discute a conversatildeo dos outros modelos para o modelo por pontos

Nos uacuteltimos anos vaacuterios trabalhos importantes tecircm sido realizados na aacuterea

em diversos segmentos em visualizaccedilatildeo podemos destacar os trabalhos de

Pfister [5] e de Zwicker [6] que usam pontos como primitiva de renderizaccedilatildeo e

com resultados praacuteticos interativos muito bons

Em [7] Pauly et al propotildeem algoritmos para modelagem multi-resoluccedilatildeo

em modelos por pontos

Os trabalhos de Curless [8] e Rusinkiewicz [9] discutem os meacutetodos de

aquisiccedilatildeo que consistem em obter uma amostragem de pontos da superfiacutecie do

objeto real por meio de equipamentos como por exemplo o scanner 3D

Nas operaccedilotildees booleanas a interseccedilatildeo das superfiacutecies dos modelos

iniciais seraacute parte do modelo resultado e para ser representada corretamente

precisa ser reconstruiacuteda A reconstruccedilatildeo da superfiacutecie tambeacutem eacute usada na

visualizaccedilatildeo de um modelo Um trabalho significativo na aacuterea de reconstruccedilatildeo de

superfiacutecies estaacute em [10] de N Amenta etal Este trabalho apresenta uma

soluccedilatildeo praacutetica com garantias teoacutericas para este problema e uma heuriacutestica para

o tratamento de arestas vivas a questatildeo mais difiacutecil desta aacuterea Um exemplo

de uma aresta viva eacute o encontro de dois planos natildeo coincidentes

Frequumlentemente a interseccedilatildeo citada acima (interseccedilatildeo entre os modelos iniciais)

gera uma aresta viva (seccedilatildeo 4223)

O algoritmo aqui implementado eacute um plugin para o software PointShop 3D

[11] de Zwicker et al software de ediccedilatildeo de modelos com pontos O PointShop

tem seu coacutedigo aberto documentaccedilatildeo e trabalha com plugins Ele permite a

visualizaccedilatildeo e ediccedilatildeo interativa do modelo por pontos Eacute o uacutenico software livre

disponiacutevel com estas caracteriacutesticas Esta implementaccedilatildeo na forma de um plugin

facilitou muito o trabalho pois natildeo foi necessaacuterio implementar a visualizaccedilatildeo do

modelo 3D Aleacutem disso o Pointshop conteacutem tambeacutem um plugin com a

implementaccedilatildeo do meacutetodo de Pauly et al [3] discutido nesta dissertaccedilatildeo A

Trabalhos relacionados 19

execuccedilatildeo dos dois plugins que realizam operaccedilotildees booleanas pocircde ser

comparada

Os trabalhos aqui discutidos satildeo o de Bart Adams e Philip Dutreacute [2] e de

Pauly et al[3] que apresentam meacutetodos diferentes para realizaccedilatildeo de

operaccedilotildees booleanas com pontos Adams e Dutreacute utilizam octrees [1] e Pauly

Kd-Tree [16] e MLS (Moving Least Squares) [18] Estes algoritmos satildeo

discutidos no capiacutetulo 4

O trabalho de Sara F Frisken [12] apresenta um algoritmo para realizar

operaccedilotildees em octree de forma mais eficiente Como estas operaccedilotildees estatildeo

presentes em todo o nosso algoritmo este trabalho certamente oferece uma

forma de otimizaccedilatildeo mas que natildeo foi implementada

Modelagem por Pontos 20

3 Modelagem por Pontos

A computaccedilatildeo graacutefica natildeo lida diretamente com o objeto ou com o

fenocircmeno fiacutesico lida com modelos graacuteficos ou geomeacutetricos Modelos graacuteficos

satildeo estruturas computacionais (abstratas) que capturam aspectos de objetos de

interesse para uma aplicaccedilatildeo como forma cor textura etc Se apenas a forma

ou a geometria do objeto eacute relevante temos modelos geomeacutetricos

Estes modelos satildeo usados em vaacuterias aplicaccedilotildees em computaccedilatildeo graacutefica

como roboacutetica visatildeo computacional simulaccedilotildees realistas anaacutelises estruturais

prototipagem projeto e manufatura de produtos eletromecacircnicos arquitetura

Existem vaacuterios tipos de modelos graacuteficos Esta dissertaccedilatildeo trata de um tipo

muito em voga atualmente que eacute o modelo por pontos

Neste capiacutetulo daremos uma visatildeo geral do modelo por pontos

Introduziremos este modelo e seu processo de criaccedilatildeo Seraacute apresentado o que

eacute um modelo por pontos e o conceito de surfel [5] introduziremos os tipos de

distribuiccedilatildeo dos surfels uma estruturaccedilatildeo aplicada a estes surfels e dados que

eles podem conter As quatro proacuteximas subseccedilotildees (Ideacuteia da representaccedilatildeo

Tipos de distribuiccedilatildeo dos surfels Estrutura de multi-resoluccedilatildeo e Dados que um

surfel pode conter) tratam destes toacutepicos Um modelo por pontos pode ser criado

a partir da conversatildeo de outros tipos de modelagem NURBS por exemplo para

o modelo por pontos ou a partir de um processo de aquisiccedilatildeo Esta uacuteltima forma

de criaccedilatildeo pode ser dividida em duas etapas aquisiccedilatildeo do modelo reconstruccedilatildeo

da superfiacutecie As subseccedilotildees 35 e 36 tratam destas duas etapas

respectivamente A ediccedilatildeo do modelo 3D eacute tratada brevemente na subseccedilatildeo 38

e a sua visualizaccedilatildeo na subseccedilatildeo 37 A apresentaccedilatildeo do processo de aquisiccedilatildeo

(seccedilatildeo 35) eacute baseada no tutorial de W T Correcirca [13] A etapa de ediccedilatildeo 3D

consiste em operaccedilotildees para mudanccedila da cor textura ou forma do modelo Para

esta etapa enfocaremos as operaccedilotildees booleanas que modificam a forma do

modelo ou criam novos modelos

31 Ideacuteia da Representaccedilatildeo

Modelagem por Pontos 21

Figura 1 [20] -Um modelo por pontos e sua visualizaccedilatildeo

Um modelo por pontos representa um objeto atraveacutes de seu contorno Eacute

um tipo de representaccedilatildeo B-Rep (Boundary Representation) [1] Este contorno

consiste em uma superfiacutecie 2D posicionada no espaccedilo 3D Na modelagem por

pontos ela eacute representada por um conjunto de pontos 3D que satildeo uma

amostragem dos (infinitos) pontos que formam a superfiacutecie contiacutenua (Figura 1) A

amostragem pode ser obtida de diversas maneiras Uma delas o processo de

aquisiccedilatildeo progrediu muito nos uacuteltimos anos e este foi um dos fatores que tornou

muito importante o desenvolvimento deste modelo por pontos Outra forma de

gerar amostragem eacute fazer uma conversatildeo de um outro modelo NURBS por

exemplo para o modelo por pontos

Estes pontos satildeo denominados surfels e podem conter aleacutem da posiccedilatildeo

3D outras informaccedilotildees como normal agrave superfiacutecie cor textura raio de alcance A

Figura 2 mostra um conjunto de surfels representando uma superfiacutecie No surfel

em destaque podemos ver o raio de alcance rt e a normal n agrave superfiacutecie

Modelagem por Pontos 22

Figura 2 [5] A superfiacutecie modelada por surfels O surfel em destaque tem raio de alcance

rt e normal n

Como o modelo natildeo armazena qualquer informaccedilatildeo sobre a conexatildeo entre

os surfels a reconstruccedilatildeo da superfiacutecie contiacutenua a partir dele pode exigir

algumas restriccedilotildees na amostragem (seccedilatildeo 36)

32 Tipos de distribuiccedilatildeo dos surfels

Existem dois tipos de distribuiccedilatildeo dos surfels na modelagem por pontos

uniforme e natildeo uniforme Na distribuiccedilatildeo uniforme cada um deles descreve

partes de mesmo tamanho da superfiacutecie Na natildeo uniforme cada surfel armazena

a informaccedilatildeo de seu raio de alcance que eacute o raio do disco que este surfel

representa

A distribuiccedilatildeo uniforme tem a vantagem de ser mais simples e natildeo ser

necessaacuterio armazenar o raio de alcance do disco mas ela apresenta a seguinte

desvantagem se o modelo possui regiotildees com muito detalhe e regiotildees com

pouco detalhe ele teraacute que manter uma alta densidade mesmo nas regiotildees de

poucos detalhes

33 Estrutura de multi-resoluccedilatildeo

Um objeto pode ser representado em vaacuterios niacuteveis de detalhes Por

exemplo podemos representar um mesmo objeto com vaacuterias resoluccedilotildees

diferentes Este conceito pode ser aplicado ao modelo por pontos Desta forma

um modelo eacute representado por uma estrutura hieraacuterquica (uma aacutervore por

exemplo) onde em cada niacutevel temos uma representaccedilatildeo do objeto em uma

Modelagem por Pontos 23

determinada resoluccedilatildeo Em [7] Pauly et al propotildeem algoritmos para modelagem

multi-resoluccedilatildeo em modelos por pontos

34 Dados que um surfel pode conter

Cada surfel armazena sua localizaccedilatildeo e pode tambeacutem conter informaccedilotildees

como a cor ou coordenadas de textura Se a amostragem natildeo for uniforme o

surfel conteacutem a informaccedilatildeo do raio de alcance que eacute o raio de um disco cujo

centro eacute a posiccedilatildeo do surfel O surfel pode tambeacutem conter o vetor normal agrave

superfiacutecie e assim o surfel pode ser visto como um disco orientado A superfiacutecie

tambeacutem pode ser vista como uma superfiacutecie orientada

35 Aquisiccedilatildeo do modelo

Esta introduccedilatildeo sobre aquisiccedilatildeo do modelo aqui apresentada baseia-se no

tutorial de W T Correcirca [13]

O processo de aquisiccedilatildeo consiste em obter uma amostragem de pontos da

superfiacutecie do objeto real por meio de equipamentos como por exemplo o

scanner 3D Eacute uma aacuterea que tem progredido muito nos uacuteltimos anos A

resoluccedilatildeo e a precisatildeo dos equipamentos de aquisiccedilatildeo tecircm melhorado bastante

e o custo deles reduzido de forma significativa Isso possibilita que a aquisiccedilatildeo

de modelos 3D seja usada em aplicaccedilotildees de desenho industrial arte ou em

produtos para a aacuterea de entretenimento O consequumlente maior uso destes

equipamentos criou a necessidade de avanccedilos no tratamento dos seus dados de

saiacuteda que satildeo um conjunto de pontos

Este processo pode ser dividido em trecircs partes [13] aquisiccedilatildeo da

geometria aquisiccedilatildeo da textura e correccedilatildeo de falhas da aquisiccedilatildeo

351 Aquisiccedilatildeo da geometria

Existem vaacuterios meacutetodos de aquisiccedilatildeo da geometria Curless [8] e

Rusinkiewicz [9] classificaram estes meacutetodos em trecircs categorias meacutetodos por

contato transmissatildeo e reflexatildeo

O meacutetodo por contato toca a superfiacutecie do objeto com uma sonda e grava

a posiccedilatildeo Este meacutetodo do qual o Coordinate Measuring Machines (CMMs) eacute

Modelagem por Pontos 24

um exemplo eacute bastante preciso mas eacute muito lento e natildeo adequado a objetos

fraacutegeis

Meacutetodos por transmissatildeo projetam ondas de energia sobre o objeto e

gravam a energia transmitida Por exemplo tomografia computadorizada que

projeta ondas de raio-x sobre o objeto e mede a quantidade de radiaccedilatildeo que

passa atraveacutes dele O resultado eacute um modelo geomeacutetrico de alta resoluccedilatildeo Este

meacutetodo pode captar detalhes do objeto que natildeo satildeo visiacuteveis de fora do objeto

Por outro lado ele eacute caro e arriscado

Meacutetodos por reflexatildeo podem ser oacuteticos ou natildeo-oacuteticos Natildeo-oacuteticos incluem

radares que medem a distacircncia a um objeto enviando microondas ou ondas

sonoras para o objeto e gravando o tempo que a onda gasta para retornar Estes

meacutetodos natildeo satildeo muito precisos nem raacutepidos

Meacutetodos por reflexatildeo oacuteticos podem ser passivos ou ativos Meacutetodos oacuteticos

passivos natildeo interagem com o objeto e incluem teacutecnicas de visatildeo computacional

como shape-from-shading stereo triangulation optical flow e meacutetodos de

decomposiccedilatildeo para video streams Estes meacutetodos raramente constroem

modelos precisos e sua maior aplicaccedilatildeo eacute em reconhecimento de objetos

Meacutetodos oacuteticos ativos projetam luz sobre um objeto de maneira estruturada

e atraveacutes da reflexatildeo da luz determinam a forma do objeto Exemplos satildeo depth

from defocus photometric stereo projected-light triangulation time of flight

Meacutetodos por reflexatildeo oacuteticos ativos tecircm muitas vantagens sobre os passivos tecircm

um melhor desempenho quando natildeo existe textura satildeo mais baratos e mais

robustos e produzem uma amostragem precisa

352 Aquisiccedilatildeo da textura

Idealmente noacutes gostariacuteamos de ter uma completa descriccedilatildeo de como um

ponto da superfiacutecie reflete a luz dependendo do vetor normal a esta superfiacutecie

da direccedilatildeo do raio de luz incidente e do comprimento de onda Tal descriccedilatildeo eacute

conhecida como Bidirectional Reflectance Distribution Function (BRDF) Medir

BRDFs com precisatildeo eacute um problema difiacutecil

Pode-se ter uma aproximaccedilatildeo da aquisiccedilatildeo de cores do objeto tirando

fotos dele O objeto eacute fotografado e a cor de cada ponto da superfiacutecie eacute obtida a

partir de um mapeamento das fotos 2D para o modelo 3D Para mapear a

fotografia agrave geometria precisamos conhecer os paracircmetros de projeccedilatildeo da

cacircmera e a sua posiccedilatildeo no momento em que a foto foi batida Para cada ponto

Modelagem por Pontos 25

3D do modelo encontramos sua projeccedilatildeo 2D no plano da cacircmera e associamos

a cor do pixel nesta projeccedilatildeo agrave cor do ponto 3D

353 Correccedilatildeo das falhas da aquisiccedilatildeo

O processo de aquisiccedilatildeo deixa frequumlentemente buracos no modelo devido

a ruiacutedos no processo ou agrave impossibilidade de aquisiccedilatildeo de determinadas partes

de uma superfiacutecie Estes buracos devem ser corrigidos Pode-se usar por

exemplo um filtro de passa-baixa para remoccedilatildeo de ruiacutedos [14] Meacutetodos de

difusatildeo geomeacutetrica tecircm sido aplicados para preenchimento dos buracos [15] A

correccedilatildeo das falhas eacute tida como um preacute-processamento para o processo de

reconstruccedilatildeo da superfiacutecie contiacutenua (seccedilatildeo 36)

36 Reconstruccedilatildeo da superfiacutecie (contiacutenua) a partir do modelo (discreto)

A reconstruccedilatildeo da superfiacutecie contiacutenua consiste em a partir de um conjunto

natildeo estruturado de pontos obter um modelo contiacutenuo desta superfiacutecie Esta

reconstruccedilatildeo eacute frequumlentemente exigida para um modelo por pontos Na sua

visualizaccedilatildeo podemos desejar focar qualquer parte do modelo Para fazermos

operaccedilotildees booleanas com os modelos podemos querer determinar exatamente

onde eles se intersectam

No entanto natildeo precisamos ter necessariamente a representaccedilatildeo contiacutenua

de todo o objeto ao mesmo tempo A reconstruccedilatildeo desta superfiacutecie a partir dos

pontos amostrados pode ser feita no momento que for mais adequado agrave

aplicaccedilatildeo Na visualizaccedilatildeo a reconstruccedilatildeo pode ser feita na projeccedilatildeo 2D da

parte do modelo em foco (seccedilatildeo 37) Para operaccedilotildees booleanas pode-se

reconstruir apenas a aacuterea da interseccedilatildeo dos modelos

Este processo de reconstruccedilatildeo de superfiacutecie tem sido muito estudado em

modelagem geomeacutetrica e geometria computacional nos uacuteltimos anos O trabalho

mais importante desta aacuterea eacute o trabalho de Amenta et al [10] que foi a primeira

soluccedilatildeo com garantias demonstraacuteveis para este problema de reconstruccedilatildeo de

superfiacutecie A seccedilatildeo 44 explica estes conceitos e o trabalho [10] Este trabalho

demonstra que teoricamente para que a reconstruccedilatildeo da superfiacutecie (contiacutenua) a

partir das amostras seja correta a amostragem deve ser adequada Ele usa o

conceito de ldquoEixo Medialrdquo para definir o que eacute uma amostragem adequada

Modelagem por Pontos 26

(seccedilatildeo 44) Em duas dimensotildees os veacutertices de Voronoi de uma amostragem

densa aproximam o ldquoEixo Medialrdquo da amostragem

Por meio deste conceito de Eixo Medial [1016] obtecircm-se paracircmetros

teoacutericos para a definiccedilatildeo de amostragem adequada e baseado neste conceito

o algoritmo apresentado em [10] traz uma soluccedilatildeo praacutetica para o problema

obtendo uma malha poligonal a partir do modelo por pontos

O PointShop 3D [11] software de ediccedilatildeo de modelos por pontos utilizado

nesta pesquisa faz quando necessaacuterio a reconstruccedilatildeo da superfiacutecie Para isso

o PointShop 3D explora a vizinhanccedila local (surfels vizinhos de acordo com suas

posiccedilotildees) Ele usa o conceito de Eixo Medial para justificar seu meacutetodo de

reconstruccedilatildeo da superfiacutecie que na praacutetica apresenta resultados bastante

satisfatoacuterios apesar de teoricamente natildeo ter garantias [16]

37 Visualizaccedilatildeo do modelo

A primeira abordagem para visualizaccedilatildeo de um modelo por pontos foi

construir uma malha de poliacutegonos a partir dos surfels e renderizaacute-la Mas a

construccedilatildeo de malhas a partir dos surfels eacute um processo muito caro e lento

principalmente para modelos complexos Na tentativa de obter uma visualizaccedilatildeo

interativa do modelo por pontos estatildeo sendo estudadas teacutecnicas que utilizam

surfels como primitiva de visualizaccedilatildeo A ideacuteia foi apresentada inicialmente por

Levoy [4]

Figura 3 [21] -Modelo por pontos e sua renderizaccedilatildeo usando Surface Splatting

Modelagem por Pontos 27

O objetivo da renderizaccedilatildeo a partir dos surfels eacute projetaacute-los na tela e

reconstruir as superfiacutecies de forma contiacutenua sem buracos Para que esta

renderizaccedilatildeo seja amplamente utilizada deve-se ter cuidado com o uso de

memoacuteria e com a qualidade da imagem gerada Teacutecnicas recentes como Surface

Splatting [6] faz a renderizaccedilatildeo interativamente com qualidade (Figura 3)

comparada a outros meacutetodos de renderizaccedilatildeo como Image Based Rendering

Em geral a visualizaccedilatildeo do modelo por pontos pode ser dividida nas seguintes

etapas

- warping - projeccedilatildeo em perspectiva de cada ponto do modelo na tela

processo anaacutelogo agrave projeccedilatildeo de veacutertices dos triacircngulos na malha triangular Se

um pixel da tela estiver contido em mais de uma projeccedilatildeo de surfels (vizinhos)

ou seja mais de um ponto cobre este pixel os atributos destes pontos seratildeo

combinados

- shading por ponto - o processo de shading eacute realizado para cada ponto

visiacutevel (os pontos que natildeo satildeo vistos do ponto de vista em questatildeo devem ser

retirados) Qualquer modelo local de shading pode ser aplicado Uma nova

teacutecnica foi proposta em Surface Splatting [6]

- reconstruccedilatildeo da imagem ndash pixels que natildeo ldquoreceberamrdquo projeccedilatildeo de

nenhum ponto formam buracos na imagem Esta imagem deve ser reconstruiacuteda

sem buracos sem aliasing e as superfiacutecies devem ser reconstruiacutedas de forma

contiacutenua e devem ser ldquosuavizadasrdquo (smooth surface)

Os algoritmos de renderizaccedilatildeo por pontos podem tratar a questatildeo de

buracos na visualizaccedilatildeo de trecircs formas [17]

Detecccedilatildeo e preenchimento de buracos no espaccedilo da tela pontos satildeo

projetados na tela e pixels que natildeo receberam pontos satildeo detectados (buracos)

Para preencher estes buracos que natildeo receberam pontos eacute feita uma

interpolaccedilatildeo entre os vizinhos

Geraccedilatildeo de mais pontos a superfiacutecie eacute interpolada no espaccedilo do modelo

para garantir que todos os pixels recebam pelo menos a projeccedilatildeo de um ponto

Splatting um surfel eacute projetado na tela e sua contribuiccedilatildeo eacute espalhada de

forma diferenciada para os pixels vizinhos Agrave medida em que o vizinho se torna

mais distante a contribuiccedilatildeo do surfel diminui

Raumlsaumlnen faz uma analogia do processo de renderizaccedilatildeo proposto em [6]

com o mapeamento de textura [15] No mapeamento de textura para um

determinado pixel da tela satildeo encontrados os pontos da textura que afetam este

Modelagem por Pontos 28

pixel Num sentido inverso em splatting para um determinado surfel (que

representa a textura) satildeo encontrados os pixels da tela que este surfel afeta

38 Ediccedilatildeo do modelo

Ediccedilatildeo de um modelo 3D consiste em operaccedilotildees que modificam

caracteriacutesticas deste modelo como cor textura forma ou criam novos modelos

O software PointShop 3D [11] software de ediccedilatildeo de modelos por pontos 3D

implementa vaacuterias destas operaccedilotildees (ver seccedilatildeo 52)

Para modificar a forma de um modelo ou criar um novo satildeo muito usadas

as operaccedilotildees booleanas que eacute o nosso enfoque nesta dissertaccedilatildeo Na

modelagem CSG (Constructive Solid Geometry) as operaccedilotildees booleanas satildeo

usadas juntamente com primitivas soacutelidas para definir um modelo No entanto

em alguns tipos de modelos estas operaccedilotildees satildeo difiacuteceis como por exemplo

em malhas poligonais Com pontos elas podem ser feitas interativamente [32]

Operaccedilotildees Booleanas com Pontos 29

4 Operaccedilotildees Booleanas com Pontos

Operaccedilotildees booleanas satildeo as operaccedilotildees de uniatildeo interseccedilatildeo e diferenccedila

definidas na teoria matemaacutetica de conjuntos Estas operaccedilotildees satildeo aplicadas em

modelos soacutelidos para alteraacute-los ou para criar novos modelos A Figura 4 abaixo

mostra a criaccedilatildeo de trecircs novos modelos a partir de quatro modelos iniciais

Figura 4 [22] Trecircs modelos novos foram criados a partir dos quatro iniciais (esfera

cilindro dois cubos) O primeiro eacute a esfera menos um cubo em seguida retirou-se outro

cubo e por uacuteltimo retirou-se o cilindro

Estas operaccedilotildees satildeo aplicadas em objetos modelados por pontos em dois

trabalhos no trabalho de Bart Adams e Philip Dutreacute [2] e no trabalho de Pauly

et Al [3] Neste capiacutetulo a seccedilatildeo 41 apresenta a parte comum aos dois

trabalhos e as seccedilotildees 42 e 43 apresentam as particularidades de cada um A

seccedilatildeo 44 discute uma questatildeo natildeo explicitada em nenhum dos dois trabalhos

41 Meacutetodos para realizar operaccedilotildees booleanas em objetos modelados por pontos

A Figura 5 mostra o resultado do meacutetodo de Adams[2] operaccedilotildees de

uniatildeo diferenccedila e interseccedilatildeo de objetos soacutelidos 3D modelados por pontos

Operaccedilotildees Booleanas com Pontos 30

Figura 5 [2]-A partir de dois modelos por pontos uma heacutelice e uma cabeccedila as trecircs operaccedilotildees booleanas satildeo mostradas da esquerda para a direita uniatildeo diferenccedila e interseccedilatildeo

Sejam A e B objetos 3D soacutelidos modelados por pontos Definem-se os

seguintes elementos

Af ndash superfiacutecie (contorno) de A que estaacute fora de B

Ad ndash superfiacutecie (contorno) de A que estaacute dentro de B

Bf ndash superfiacutecie (contorno) de B que estaacute fora de A

Bd ndash superfiacutecie (contorno) de B que estaacute dentro de A

O resultado da operaccedilatildeo booleana entre A e B seraacute um modelo C cuja

superfiacutecie de contorno pode ser determinada pela seguinte regra [2] que aqui

chamamos de Regra 1

Regra 1 A U B Af + Bf

A cap B Ad + Bd

A ndash B Af + Bd (com a orientaccedilatildeo invertida)

B ndash A Ad (com a orientaccedilatildeo invertida) + Bf

A Figura 6 mostra as operaccedilotildees com dois modelos A e B

(a) (b)

Operaccedilotildees Booleanas com Pontos 31

(c) (d)

Figura 6 [22] (a) Dois modelos A e B (b) Posicionados de forma que A tem

uma parte dentro de B eacute mostrado o resultado A U B Af + Bf (c) Resultado de A ndash B Af

+ Bd (d) Resultado de A cap B Ad + Bd

Bart [2] e Pauly [3] apresentam dois meacutetodos para determinar os

elementos acima Estes dois meacutetodos satildeo construiacutedos a partir dos seguintes

conceitos os elementos Af Ad Bf Bd satildeo uma parte da superfiacutecie modelada por

pontos e portanto satildeo conjuntos de surfels Para determinaacute-los eacute necessaacuteria

entatildeo a classificaccedilatildeo de um surfel (que pode se resumir agrave classificaccedilatildeo de um

ponto que eacute o seu centro) de uma superfiacutecie como dentro ou fora de um outro

modelo Os dois meacutetodos utilizam a seguinte regra para esta classificaccedilatildeo aqui

denominada Regra 2

Regra 2 Dado um ponto x qualquer um volume V determinado por uma superfiacutecie

de contorno S uma amostragem P da superfiacutecie S um ponto p є P que eacute a

amostra mais proacutexima a x um vetor np normal agrave S em p e orientado para fora de

S temos que

(x ndash p) np gt 0 x notinV

Ou seja para classificar um ponto em relaccedilatildeo a um modelo verificamos o

produto interno entre a normal em p (surfel mais proacuteximo a x) e o vetor (x - p)

se este produto interno for maior que zero x natildeo pertence ao volume V e seraacute

classificado como fora senatildeo seraacute classificado como dentro De maneira

ainda mais informal se a normal em p apontar para a direccedilatildeo oposta a x x seraacute

classificado como dentro se apontar para x x seraacute classificado como fora

A Figura 7 mostra a Regra 2

Operaccedilotildees Booleanas com Pontos 32

Figura 7 Para classificar o ponto x encontra-se o surfel p (com normal np) mais proacuteximo

a x Se o produto interno entre np e (x ndash p) for maior que zero entatildeo x eacute classificado como

fora senatildeo seraacute classificado como dentro

A validade da Regra 2 eacute discutida na Seccedilatildeo 44 Uma das restriccedilotildees

teoacutericas para garantir-lhe a validade eacute que a superfiacutecie seja suave

Cada um dos dois meacutetodos daacute um tratamento diferente para o uso desta

regra Pauly usa a regra diretamente encontrando o surfel mais proacuteximo a um

ponto e classificando este ponto a partir deste surfel Ele utiliza tambeacutem a

representaccedilatildeo impliacutecita MLS (Moving Least Squares [18]) para casos em que a

Regra 2 poderia falhar e para tratamento de interseccedilotildees [3] Seu meacutetodo vale

para modelos soacutelidos ou natildeo soacutelidos O meacutetodo de Adams e Dutreacute [2] utiliza

octrees [1] criando uma classificaccedilatildeo dos noacutes da octree a partir desta Regra 2

Os pontos satildeo entatildeo classificados de acordo com o noacute da octree que o conteacutem

Este segundo meacutetodo aplica-se somente a modelos soacutelidos Os dois meacutetodos

seratildeo descritos em detalhes nas seccedilotildees abaixo

Como um surfel eacute considerado um disco podemos dizer que surfels de

dois modelos diferentes podem se intersectar A interseccedilatildeo destes dois surfels

corresponde agrave interseccedilatildeo destes dois discos Estes surfels geram problemas

para visualizaccedilatildeo se forem acrescentados ao resultado sem um tratamento

especiacutefico apresentaratildeo artefatos natildeo desejaacuteveis na renderizaccedilatildeo do modelo

resultado (Figura 8) se natildeo forem acrescentados ao resultado deixaratildeo buracos

no modelo

Operaccedilotildees Booleanas com Pontos 33

Figura 8 [2] -Interseccedilatildeo de duas esferas agrave esquerda sem nenhum tratamento de interseccedilatildeo agrave direita apoacutes o tratamento de interseccedilatildeo

Aleacutem disso nem sempre esta interseccedilatildeo forma uma superfiacutecie suave

Esta interseccedilatildeo pode formar uma aresta viva (seccedilatildeo 4223) gerando

problemas tambeacutem para o uso da Regra 2 que eacute vaacutelida apenas para superfiacutecies

suaves Eacute necessaacuterio entatildeo fazer um tratamento desta superfiacutecie de interseccedilatildeo

(formada por surfels originados de diferentes modelos) O tratamento de cada

um dos meacutetodos para este caso seraacute tambeacutem abaixo apresentado

42 Meacutetodo de Adams e Dutreacute

O meacutetodo aplica-se somente a modelos soacutelidos Para determinaccedilatildeo dos

elementos da aqui chamada Regra 1 (seccedilatildeo 41) este meacutetodo utiliza uma octree

[1] que subdivide o espaccedilo do modelo em trecircs fora dentro ou no contorno do

modelo Estes espaccedilos satildeo determinados pela classificaccedilatildeo dos noacutes da octree a

partir da Regra 2 Tambeacutem eacute usado o meacutetodo TINN - Triangle Inequality Nearest

Neighbour [19] - para otimizar a pesquisa dentro do noacute A seguir descrevemos o

modelo usado neste meacutetodo apresentando os dados associados aos pontos o

tipo de distribuiccedilatildeo e o algoritmo que realiza as operaccedilotildees

421 Modelo por Pontos em Adams e Dutreacute

Os surfels neste meacutetodo contecircm as seguintes informaccedilotildees posiccedilatildeo do

surfel xs orientaccedilatildeo do surfel ns e raio de alcance do surfel rs O surfel pode ser

pensado como um disco ortogonal a ns com centro xs e raio rs O raio eacute

escolhido de tal forma que a projeccedilatildeo dos discos no plano da imagem se

sobreponham

Operaccedilotildees Booleanas com Pontos 34

Os objetos representados satildeo soacutelidos A distribuiccedilatildeo dos surfels eacute

uniforme embora o algoritmo natildeo exija esta condiccedilatildeo Para cada soacutelido eacute

definido um rmax = Max rs o raio de alcance do maior surfel pertencente agrave

superfiacutecie do soacutelido Como o raio eacute escolhido de tal forma que a projeccedilatildeo dos

discos no plano da imagem se sobreponham o controle da amostragem eacute

entatildeo ligado agrave renderizaccedilatildeo

422 Algoritmo de Operaccedilotildees Booleanas

Utilizando objetos modelados da forma descrita acima o meacutetodo realiza

operaccedilotildees de uniatildeo interseccedilatildeo e diferenccedila com modelos soacutelidos Supondo dois

modelos soacutelidos S1 e S2 O algoritmo pode ser dividido nas seguintes etapas

Criaccedilatildeo de uma octree para cada modelo Teste Dentro-Fora Tratamento da

interseccedilatildeo Estas etapas satildeo apresentadas nas proacuteximas seccedilotildees

4221 Criaccedilatildeo de uma octree para cada modelo

Eacute criada uma octree [1] para cada modelo A criaccedilatildeo de uma octree eacute feita

da seguinte forma

Gera-se a ldquoCaixa envolventerdquo caixa alinhada com os eixos que conteacutem

todo o modelo A ldquoCaixa envolventerdquo corresponde ao noacute raiz da octree Este noacute

conteacutem inicialmente todos os surfels do modelo Em seguida o noacute raiz eacute

dividido em oito noacutes filhos Os surfels satildeo distribuiacutedos entre estes oito noacutes Cada

um deles caso contenha surfels eacute dividido novamente em 8 filhos e seus surfels

satildeo redistribuiacutedos entre eles Este processo eacute repetido recursivamente enquanto

o nuacutemero de surfels do noacute for maior que zero ou ateacute uma profundidade maacutexima

preacute-definida da octree ser alcanccedilada

Cada noacute da octree deve ser classificado O objetivo desta classificaccedilatildeo eacute

determinar que parte da octree estaacute dentro do modelo e que parte estaacute fora Os

noacutes da octree satildeo entatildeo classificados como ldquodentrordquo ldquoforardquo e ldquocontornordquo

Podemos ilustrar esta classificaccedilatildeo em 2D a Figura 9 mostra uma quadtree

classificada

Operaccedilotildees Booleanas com Pontos 35

Figura 9-Um objeto representado por pontos com suas normais e sua quadtree correspondente classificada os noacutes cinza claro estatildeo dentro do modelo noacutes cinza mais escuro estatildeo fora do modelo e noacutes com cinza intermediaacuterio satildeo noacutes cheios noacutes que conteacutem pontos

O noacutes que conteacutem surfels satildeo classificados como ldquocontornordquo Para

classificar um noacute vazio existem trecircs casos

o noacute vazio tem apenas um vizinho-irmatildeo natildeo vazio

o noacute vazio tem mais de um vizinho-irmatildeo natildeo vazio

o noacute vazio natildeo tem vizinhos-irmatildeos natildeo vazios

No primeiro caso o noacute vazio eacute classificado pelo seu vizinho natildeo vazio No

segundo caso considera-se qualquer um dos vizinhos natildeo vazios No terceiro

caso classifica-se primeiro os noacutes vizinhos e eacute dada a mesma classificaccedilatildeo para

o noacute vazio Como cada noacute natildeo folha de uma octree tem pelo menos um noacute filho

natildeo vazio sempre pode ser feita a classificaccedilatildeo dos noacutes vazios A classificaccedilatildeo

eacute feita da seguinte forma dentre os surfels do vizinho-irmatildeo escolhido encontra-

se o surfel mais proacuteximo ao noacute a ser classificado Se a normal deste surfel

aponta para o noacute vazio a ser classificado entatildeo ele eacute classificado como ldquoforardquo

Se a normal aponta no sentido contraacuterio entatildeo ele eacute classificado como ldquodentrordquo

De maneira mais formal sejam cv e cc coordenadas dos centros do noacute vazio e

do noacute contorno respectivamente Seja s o surfel mais proacuteximo ao noacute vazio e ns

a normal em s Se ( cv - cc )٠ ns gt 0 ( produto interno entre a normal em s e o

vetor cv - cc for maior que zero ) o noacute vazio seraacute classificado como ldquoforardquo

Senatildeo seraacute classificado como ldquodentrordquo

Em geral os noacutes ldquocontornordquo satildeo subdivididos em trecircs partes uma que estaacute

fora do modelo uma que estaacute dentro do modelo e uma terceira que conteacutem os

surfels Esta subdivisatildeo eacute feita por meio da criaccedilatildeo de dois planos paralelos que

Operaccedilotildees Booleanas com Pontos 36

dividem o noacute Para determinar estes planos calcula-se o vetor nm igual agrave

meacutedia das normais dos surfels do noacute nm = sum ns sum ns onde ns eacute a normal de

cada surfel do noacute

Em seguida encontra-se o surfel com maior produto interno entre a sua

normal e a normal meacutedia d1=Max(nm ٠ ns) Este surfel juntamente com a normal

meacutedia define um dos planos Encontra-se tambeacutem o surfel com menor produto

interno entre a sua normal e a normal meacutedia d2=Min(nm ٠ ns) Este surfel

juntamente com a normal meacutedia define o outro plano A Figura 10 mostra a

divisatildeo de um noacute de uma quadtree nas trecircs partes dentro do modelo fora do

modelo e no ldquocontornordquo

Esta subdivisatildeo aplica-se apenas a noacutes que conteacutem surfels cujas direccedilotildees

natildeo variem em mais de 90 graus Caso isso ocorra ele natildeo seraacute subdividido Ou

seja se um noacute possuir dois vetores normais (de dois surfels diferentes) que

formem um acircngulo maior que 90 graus ele natildeo seraacute subdividido

Figura 10 [2] -Divisatildeo de noacute de contorno a parte agrave esquerda estaacute fora do modelo a parte agrave direita estaacute dentro do modelo e a faixa intermediaacuteria conteacutem os surfels

4222 Teste Dentro-Fora

O Teste Dentro-Fora faz a classificaccedilatildeo dos surfels de um modelo como

ldquodentrordquo ou ldquoforardquo de outro modelo Portanto aplicaremos este mesmo teste duas

vezes uma para o modelo S1 em relaccedilatildeo ao modelo S2 e outra para S2 em

relaccedilatildeo a S1 Vamos mostrar o teste Dentro-Fora para o caso da classificaccedilatildeo

dos surfels do modelo S1 em relaccedilatildeo a S2

Operaccedilotildees Booleanas com Pontos 37

No item anterior foram criadas duas octrees uma para o modelo S1 e

outra para o modelo S2 Chamemos de A e B as octrees de S1 e S2

respectivamente Para classificar S1 em relaccedilatildeo a S2 inicialmente eacute feita uma

avaliaccedilatildeo da posiccedilatildeo de A em relaccedilatildeo a B A e B podem estar nas seguintes

situaccedilotildees

- A natildeo intersecta B

- A intersecta apenas noacutes ldquoforardquo de B

- A intersecta apenas noacutes ldquodentrordquo de B

- A intersecta noacutes ldquoforardquo e noacutes ldquodentrordquo de B

Para testar estas situaccedilotildees os noacutes satildeo aumentados de rmax o raio do

maior surfel do modelo soacutelido Isto eacute feito para compensar o fato de que o surfel

natildeo eacute apenas um ponto mas sim considerado como um disco

No primeiro e no segundo caso todos os surfels de A satildeo classificados

como ldquoforardquo No terceiro caso todos os surfels de A satildeo classificados como

ldquodentrordquo

No quarto caso temos que percorrer a octree A Comeccedilando pelo noacute raiz

percorre-se os filhos deste noacute Para cada filho os quatro testes acima satildeo feitos

Se o noacute filho encontra-se em um dos trecircs primeiros casos a classificaccedilatildeo eacute dada

como foi citada acima Se um filho estaacute no quarto caso e natildeo eacute um noacute folha

repete-se recursivamente o mesmo procedimento para seus filhos ateacute encontrar-

se um noacute folha Para um noacute que estaacute no quarto caso e eacute folha percorre-se a lista

de surfels que este noacute conteacutem classificando cada um destes surfels Seja sa um

surfel desta lista Para este caso percorre-se a octree B para classificar sa

Primeiramente encontramos o noacute de B que conteacutem sa Se este noacute de B foi

dividido testa-se de acordo com esta divisatildeo do noacute se o surfel sa estaacute na parte

do noacute que estaacute dentro do modelo ele eacute classificado como ldquodentrordquo se sa estaacute na

parte que estaacute fora do modelo ele eacute classificado como ldquoforardquo se sa estaacute na parte

intermediaacuteria ou se o noacute de B natildeo foi subdividido em planos encontra-se sb que

eacute o surfel pertencente a este noacute de B que estaacute mais proacuteximo de sa sa seraacute

entatildeo classificado de acordo com sb Se ( sa - sb )٠ nb gt 0 sa eacute classificado

como ldquoforardquo senatildeo eacute classificado como ldquodentrordquo Se os discos de sb e sa se

intersectam sa eacute marcado como interseccedilatildeo Para encontrar sb o algoritmo

implementa o meacutetodo TINN ndash Triangle Inequality Nearest Neighbour [19]

Operaccedilotildees Booleanas com Pontos 38

4223 Tratamento da interseccedilatildeo

Os surfels de A que intersectam surfels de B satildeo classificados como

ldquointerseccedilatildeordquo Se eles natildeo forem incluiacutedos no modelo resultado o soacutelido resultado

teraacute buracos Se eles forem incluiacutedos sem algum tratamento eles natildeo

representaratildeo adequadamente a regiatildeo Em geral o surfel sa (um surfel

ldquointerseccedilatildeordquo de A) eacute dividido em dois pelo plano que conteacutem o surfel sb (surfel de

B que sa intersecta) uma parte que estaacute fora de B e outra que estaacute dentro de B

Dependendo da operaccedilatildeo que estaacute sendo realizada vamos querer manter uma

destas partes do surfel sa no modelo resultado Seja xa a posiccedilatildeo do surfel sa e o

surfel sa uma circunferecircncia de centro xa e raio ra igual ao raio de alcance de sa

O plano que conteacutem o surfel sb define uma corda desta circunferecircncia como

mostra a Figura 11 O surfel sa seraacute substituiacutedo por um surfel menor que

ultrapassa esta corda de uma distacircncia e definida pelo usuaacuterio Para cobrir

completamente a interseccedilatildeo seratildeo adicionados surfels menores que cruzam a

corda de interseccedilatildeo

Figura 11 -Interseccedilatildeo do surfel s e do plano que passa pelo surfel t o surfel mais proacuteximo a s O surfel s eacute substituiacutedo por trecircs surfels menores

Operaccedilotildees Booleanas com Pontos 39

O tratamento de interseccedilatildeo proposto por Adams e Dutreacute [2] natildeo soacute evita

os buracos mas tambeacutem cria uma forma de renderizaccedilatildeo de arestas vivas A

colocaccedilatildeo de vaacuterios pequenos surfels na regiatildeo da interseccedilatildeo permite esta

correta renderizaccedilatildeo das ldquoarestas vivasrdquo Desta forma o problema das arestas

vivas eacute resolvido na modelagem (Figura 12) A vantagem de se resolver o caso

na modelagem eacute que natildeo eacute necessaacuterio fazer um tratamento especial na

renderizaccedilatildeo para que mostre esta aresta viva Diferente do tratamento feito

em Pauly (seccedilatildeo 431) que resolve esta questatildeo em tempo de renderizaccedilatildeo

Aleacutem disso o tratamento resolve alguns casos onde a Regra 2 poderia falhar

(veja em Validade da Regra 2-seccedilatildeo 44)

Figura 12 [2] -Agrave direita eacute mostrado o resultado do tratamento de interseccedilatildeo para o caso de Arestas Vivas do objeto agrave esquerda

43 Meacutetodo de Pauly

O meacutetodo aplica-se a objetos soacutelidos e natildeo soacutelidos Os modelos podem ser

obtidos a partir de diferentes entradas como nuvem de pontos irregulares ou por

meio de scanners 3D Cria um modelo hiacutebrido destes objetos usa o modelo por

pontos juntamente com a representaccedilatildeo impliacutecita Moving Least Squares - MLS

[18] Realiza operaccedilotildees booleanas com pontos e utiliza adicionalmente MLS

para alguns casos de classificaccedilatildeo de surfels e no tratamento de interseccedilatildeo A

seguir apresentamos as caracteriacutesticas do modelo por pontos deste meacutetodo e o

algoritmo que realiza as operaccedilotildees

Operaccedilotildees Booleanas com Pontos 40

431 Modelo em Pauly

O modelo eacute uma estrutura hiacutebrida de pontos com a representaccedilatildeo impliacutecita

Moving Least Squares - MLS [18] Esta estrutura eacute usada para fazer operaccedilotildees

booleanas e tambeacutem operaccedilotildees de free-form (natildeo abordadas nesta

dissertaccedilatildeo) Para operaccedilotildees booleanas a representaccedilatildeo MLS permite que a

curva de interseccedilatildeo entre os modelos seja reconstruiacuteda e surfels sejam

colocados nesta curva e em alguns casos de classificaccedilatildeo de surfels mostrados

na seccedilatildeo 432 Para este modelo natildeo existem restriccedilotildees quanto agrave forma do

objeto

Os surfels contecircm informaccedilotildees sobre sua posiccedilatildeo e sua normal Aleacutem

disso surfels podem conter informaccedilotildees adicionais como textura cor

propriedades de materiais

A distribuiccedilatildeo dos surfels eacute natildeo-uniforme e a amostragem eacute

aproximadamente adequada (Veja seccedilatildeo 44)

432 Algoritmo de Operaccedilotildees Booleanas

O algoritmo classifica surfels de um modelo como ldquodentrordquo ou ldquoforardquo de

outro modelo Antes de colocarmos como eacute feita esta classificaccedilatildeo devemos

acrescentar que Pauly estende esta classificaccedilatildeo para modelos que natildeo satildeo

soacutelidos Ou seja mesmo um modelo natildeo soacutelido divide o espaccedilo da cena (espaccedilo

em que se encontra o modelo) em dois sub-espaccedilos dentro ou fora do modelo

Pauly faz esta subdivisatildeo da seguinte forma

Como a superfiacutecie que determina o modelo eacute orientada (conteacutem vetores

normais agrave superfiacutecie que apontam para ldquoforardquo do modelo) Pauly considera que

um modelo natildeo soacutelido divide o espaccedilo em dois sub-espaccedilos um ldquoforardquo do

modelo (os vetores normais apontam para este sub-espaccedilo) e um que estaacute

ldquodentrordquo do modelo (os vetores normais apontam para direccedilatildeo oposta a este sub-

espaccedilo) Por exemplo um plano eacute representado como um conjunto de surfels

contidos num determinado espaccedilo geomeacutetrico plano π Cada surfel conteacutem um

vetor normal direcionado Este modelo divide entatildeo o espaccedilo em dois sub-

espaccedilos o sub-espaccedilo que eacute apontado por estes surfels (considerado ldquoforardquo do

modelo) e o sub-espaccedilo que estaacute na direccedilatildeo oposta (considerado ldquodentrordquo do

modelo) Desta forma ele aplica as classificaccedilotildees de ldquodentrordquo e ldquoforardquo de um

modelo tambeacutem a modelos natildeo soacutelidos A partir desta consideraccedilatildeo as

Operaccedilotildees Booleanas com Pontos 41

operaccedilotildees booleanas satildeo realizadas com os modelos natildeo soacutelidos da mesma

forma que com os modelos soacutelidos

Para determinar esta classificaccedilatildeo (dentro ou fora do modelo) Pauly utiliza

a Regra 2 Para pesquisa do surfel mais proacuteximo o meacutetodo usa a estrutura Kd-

tree [16] e tambeacutem o algoritmo ANN [16] No entanto o meacutetodo apresenta uma

restriccedilatildeo da Regra 2 ela soacute deve ser usada para classificaccedilotildees de pontos x se

a distacircncia x-p for maior que o espaccedilamento da amostragem local ηp em p

Este espaccedilamento da amostragem local ηp em p eacute um caacutelculo aproximado da

distacircncia meacutedia entre os surfels vizinhos a p Se x estaacute muito proacuteximo agrave

superfiacutecie a classificaccedilatildeo pode falhar Neste caso ele calcula o ponto exato de

S mais proacuteximo a x usando a projeccedilatildeo MLS (ldquoMoving Least Squaresrdquo)

Por questotildees de melhoria de desempenho utiliza-se o fato de que sendo

Ωp (x) a classificaccedilatildeo do ponto x em relaccedilatildeo agrave amostragem P tem-se que Ωp (x)

= Ωp (xrsquo) para todos os pontos de xrsquo que estatildeo dentro da esfera de centro x e

raio igual a x-p - ηp (onde p eacute o surfel mais proacuteximo e ηp eacute o espaccedilamento

local da amostragem em p acima citado) Ou seja sendo x um ponto qualquer p

o surfel mais proacuteximo a x ηp eacute o espaccedilamento local da amostragem em p se

desenharmos uma esfera com centro x e raio igual a x-p - ηp temos que

todos os pontos xrsquo que estatildeo dentro da esfera teratildeo a mesma classificaccedilatildeo de x

Desta forma o nuacutemero de vezes que a classificaccedilatildeo eacute feita (pesquisando-se o

surfel mais proacuteximo ao ponto e usando a Regra 2) diminui em ateacute 90 Assim

em geral a classificaccedilatildeo de um surfel eacute obtida a partir do seu surfel vizinho

Dados

S1 a superfiacutecie MLS de contorno que define o modelo A

S2 a superfiacutecie MLS de contorno que define o modelo B

P1 o conjunto de surfels que representa a superfiacutecie S1

P2 o conjunto de surfels que representa a superfiacutecie S2

Ωp1 (x) a classificaccedilatildeo do ponto p em relaccedilatildeo a uma amostragem P1

Q1 o subconjunto de P1 que vai compor o resultado

Ωp2 (x) a classificaccedilatildeo do ponto p em relaccedilatildeo a uma amostragem P2

Q2 o subconjunto de P2 que vai compor o resultado

Os conjuntos Q1 e Q2 satildeo obtidos por meio da Tabela 1 mostrada abaixo

Operaccedilotildees Booleanas com Pontos 42

Tabela 1 Classificaccedilatildeo para operaccedilotildees booleanas

Para o tratamento de interseccedilatildeo neste meacutetodo satildeo computados pontos

que caem exatamente na curva de interseccedilatildeo e estes satildeo acrescentados ao

modelo resultado Estes pontos satildeo determinados de forma que a densidade da

amostragem vai crescendo agrave medida que os surfels se aproximam da curva de

interseccedilatildeo e convergem para este ponto de interseccedilatildeo como mostra a Figura

13

(a) (b) (c)

Figura 13 - Os novos surfels satildeo colocados exatamente na curva de interseccedilatildeo

e convergem para o ponto de interseccedilatildeo

A Figura 14 mostra o processo de encontrar os surfels que caem nesta

curva de interseccedilatildeo Inicialmente satildeo encontrados todos os pontos de Q1 e Q2

que estatildeo proacuteximos agrave curva de interseccedilatildeo por meio da funccedilatildeo de distacircncia do

operador de projeccedilatildeo MLS Em seguida procura-se todos os pares mais

proacuteximos (q1 є Q1 q2 є Q2 ) e computa-se o ponto q na curva de interseccedilatildeo da

seguinte forma (veja a Figura 14)Seja r o ponto na linha de interseccedilatildeo dos dois

planos tangentes em q1 e q2 e que estaacute mais proacuteximo a estes dois pontos isto eacute

que minimiza a distacircncia ||r-q1|| + ||r-q2|| r eacute a primeira aproximaccedilatildeo de q e agora

pode ser projetado sobre S1 e S2 para obter dois novos pontos de partida q1rsquo e q2

rsquo

para a iteraccedilatildeo Este procedimento pode ser repetido iterativamente ateacute que os

pontos q1 e q2 convirjam ao ponto q na curva de interseccedilatildeo Normalmente este

processo requer menos de trecircs iteraccedilotildees

Operaccedilotildees Booleanas com Pontos 43

(a) (b)

(c)

Figura 14 (a) Suponhamos a reta que eacute a interseccedilatildeo do plano tangente a S1 em q1 e o

plano tangente a S2 em q2 O ponto r eacute o ponto desta reta que estaacute mais proacuteximo a q1 e

q2 (b) r eacute projetado sobre S1 e S2 obtendo-se q1acute e q2acute dois novos pontos de partida

para nova iteraccedilatildeo (c) A nova iteraccedilatildeo gera r que eacute uma aproximaccedilatildeo melhor de q

Pauly faz o tratamento de arestas vivas em tempo de renderizaccedilatildeo Ele

faz uma alteraccedilatildeo no renderizador Marca os surfels de interseccedilatildeo e ao

renderizaacute-los satildeo cortados para gerar uma aresta viva

44 Validade da Regra 2

Os dois meacutetodos analisados nesta dissertaccedilatildeo utilizam a seguinte regra

para a classificaccedilatildeo de um surfel

Regra 2 dado um volume V determinado por uma superfiacutecie de contorno

S uma amostragem P da superfiacutecie S um ponto x qualquer um ponto p є P que

eacute a amostra mais proacutexima a x um vetor ny normal a S em p e orientado para

fora de S temos que (x ndash p) np gt 0 x notinV

Em [16] eacute colocado que esta regra eacute tirada da seguinte propriedade da

geometria diferencial (aqui chamada Propriedade 1)

Propriedade 1 Dado um volume V determinado por uma superfiacutecie de

contorno S contiacutenua e duplamente diferenciaacutevel um ponto x qualquer um ponto

Operaccedilotildees Booleanas com Pontos 44

y є S que eacute o ponto de S mais proacuteximo a x um vetor ny normal a S em y e

orientado para fora de S temos que (x ndash y) ny gt 0 x notinV

A Figura 15 ilustra esta propriedade

Figura 15 Para verificar se o ponto x estaacute fora de um contorno C encontra-se o ponto y

de C Se o produto interno entre a normal em y e o vetor que liga y a x for maior que

zero entatildeo x estaacute fora de C senatildeo estaacute dentro de C

Pauly assume que tendo uma amostragem P da superfiacutecie S podemos

usar a Propriedade 1 substituindo y por p o surfel mais proacuteximo ao ponto x (x ndash

p) np gt 0 x notinV (Regra 2) Esta amostragem P em seu trabalho eacute

(aproximadamente) uma ldquoamostragem adequadardquo Tambeacutem seu tratamento de

interseccedilatildeo cria uma aproximaccedilatildeo dela (seccedilatildeo 43) Empiricamente a

ldquodiscretizaccedilatildeo da propriedaderdquo eacute vaacutelida a partir desta suposiccedilatildeo Mas isso natildeo foi

demonstrado teoricamente em seu trabalho

Pauly coloca em [16] que natildeo existe ainda uma teoria matemaacutetica rigorosa

de amostragem anaacuteloga a teoria de Fourier para superfiacutecies discretas

A melhor aproximaccedilatildeo teoacuterica para esta aacuterea eacute o uso do Eixo Medial que

foi colocado em [10] Vamos descrever este trabalho brevemente nesta seccedilatildeo

Este trabalho apresenta um algoritmo de reconstruccedilatildeo de superfiacutecie que parte de

uma amostragem adequada (abaixo definida) de pontos e obteacutem uma malha

que eacute topologicamente equivalente agrave superfiacutecie do objeto e agrave medida que a

densidade da amostragem cresce a saiacuteda converge para esta superfiacutecie

Para definir amostragem adequada o trabalho parte do conceito de Eixo

Medial

Operaccedilotildees Booleanas com Pontos 45

ldquoEixo Medialrdquo de uma superfiacutecie 2D posicionada no R3 eacute o conjunto

(fechado) de pontos pi para os quais buscando-se o ponto da superfiacutecie que

estaacute mais proacuteximo a pi mais de um ponto pertencentes a esta superfiacutecie satildeo

encontrados A Figura 16 abaixo ilustra o Eixo Medial em 2D

Figura 16 [10] As curvas de cor mais clara satildeo o Eixo Medial da curva em preto

Em duas dimensotildees os veacutertices de Voronoi de uma amostragem densa

aproximam o ldquoEixo Medialrdquo da amostragem (mas esta propriedade natildeo se

estende a 3D) A Figura 17 mostra o Eixo Medial em 3D

Figura 17 [10] Em 3D geralmente o Eixo Medial eacute uma superfiacutecie 2D (em cor mais

clara) Aqui o quadrado eacute o Eixo Medial da superfiacutecie transparente que o contorna

Podemos definir agora a amostragem adequada da seguinte forma

Supondo uma superfiacutecie suave que quer dizer uma 2-manifold duplamente

diferenciaacutevel posicionada no R3 uma ldquoamostragem adequadardquo desta superfiacutecie eacute

aquela na qual a densidade da amostragem eacute (pelo menos) inversamente

proporcional agrave distacircncia ao ldquoEixo Medialrdquo A Figura 18 mostra uma amostragem

adequada

Operaccedilotildees Booleanas com Pontos 46

Figura 18 [10] A figura mostra o diagrama de Voronoi de uma amostragem de pontos S

Da mesma forma que o a amostragem aproxima a curva os veacutertices de Voronoi

aproximam o Eixo Medial

Na praacutetica na reconstruccedilatildeo da superfiacutecie uma aproximaccedilatildeo deste ldquoEixo

Medialrdquo eacute computada (devido agrave dificuldade de computaacute-lo exatamente e em

alguns casos ateacute impossibilidade)

Melhorias Propostas 47

5 Melhorias Propostas

No capiacutetulo 4 apresentamos dois meacutetodos que realizam operaccedilotildees

booleanas em modelos por pontos o meacutetodo de Adams e Dutreacute [2] e o meacutetodo

de Pauly[3] Para esta dissertaccedilatildeo usamos o meacutetodo de Adams e Dutreacute [2] e

propomos as seguintes melhorias

- Alteramos o momento em que eacute feita a classificaccedilatildeo da octree Fazemos

esta classificaccedilatildeo durante a sua criaccedilatildeo Os noacutes filhos de um noacute pai P qualquer

satildeo classificados logo apoacutes a criaccedilatildeo de todos estes filhos de P

independentemente do restante da octree ter sido criada Isso pode ser feito

porque a octree eacute construiacuteda na ordem raiz-esquerda-direita (preorder

traversal) e portanto apoacutes todos os filhos de um noacute pai serem criados a parte

necessaacuteria da octree para a classificaccedilatildeo destes filhos jaacute estaacute criada

- A classificaccedilatildeo da octree eacute otimizada classificando-se os cantos dos seus

noacutes como dentro ou fora do modelo Na classificaccedilatildeo de um noacute n1 a partir de seu

vizinho n2 se os cantos que satildeo comuns a n1 e n2 tiverem a mesma

classificaccedilatildeo esta seraacute dada ao noacute Assim diminuiacutemos o nuacutemero de pesquisas

pelo surfel mais proacuteximo que eacute a parte criacutetica da classificaccedilatildeo dos noacutes da octree

em termos de tempo de processamento

- Acrescentamos um valor miacutenimo (maior que zero) para o nuacutemero de

surfels contidos em um noacute que eacute uma das condiccedilotildees de parada na criaccedilatildeo da

octree Verificamos que desta forma diminui-se a chance de erro na classificaccedilatildeo

de partes criacuteticas como ldquoarestas vivasrdquo

Uma comparaccedilatildeo entre a nossa implementaccedilatildeo e a de Pauly tambeacutem seraacute

feita no capiacutetulo 6

51 Descriccedilatildeo do algoritmo

O algoritmo implementado para esta dissertaccedilatildeo baseado no meacutetodo de

Adams e Dutreacute [2] pode ser dividido nas seguintes partes Criaccedilatildeo e

classificaccedilatildeo de uma octree para cada modelo Teste DentroFora Criaccedilatildeo do

modelo resultado Natildeo foi implementado tratamento especial algum de

interseccedilatildeo para o nosso plugin As proacuteximas seccedilotildees apresentam estas partes

Melhorias Propostas 48

511 Criaccedilatildeo e classificaccedilatildeo de uma octree para cada modelo

As ideacuteias do algoritmo satildeo aqui ilustradas em 2D mas a extensatildeo delas

para 3D eacute feita facilmente

Para cada modelo a octree eacute criada e classificada da seguinte forma

Figura 19-Quadtree classificada Os noacutes mais escuros estatildeo fora do modelo os mais claros dentro e os em tom intermediaacuterio satildeo noacutes de contorno

Gera-se uma ldquocaixa envolventerdquo do modelo contendo todos os surfels e

cria-se o noacute raiz da octree que corresponde a esta ldquocaixa envolventerdquo Este noacute

raiz eacute subdividido em oito filhos e seus surfels satildeo distribuiacutedos entre eles Ao

inveacutes de testarmos os valores de xy e z para cada surfel a fim de determinar

para qual filho ele iraacute utilizamos listas auxiliares Primeiro os surfels satildeo

subdivididos em dois grupos pelos valores de x e armazenados em uma lista

auxiliar Em seguida cada uma das listas eacute subdividida pelo valor de y e as

quatro listas obtidas seratildeo subdivididas pelo valor de z Ao final teremos 8 listas

de surfels cada uma delas pertencente a um filho

Cada noacute seraacute entatildeo novamente subdividido enquanto contiver um nuacutemero

de surfels gt nmin (valor preacute-definido) ou enquanto a profundidade da aacutervore lt pmax

(valor preacute-definido) Na figura 19 pmax = 3 e nmin = 3

Melhorias Propostas 49

Figura 20-O noacute cheio eacute dividido em trecircs partes agrave esquerda a regiatildeo estaacute dentro do modelo agrave direita estaacute fora e entre as duas linhas que dividem o noacute estaacute a regiatildeo que conteacutem os surfels

Os noacutes cheios recebem um tratamento especial Eles satildeo subdivididos em

trecircs partes da seguinte forma uma que estaacute fora do modelo outra que estaacute

dentro e uma que conteacutem os surfels Esta subdivisatildeo eacute feita por meio da criaccedilatildeo

de dois planos paralelos que dividem o noacute Para determinar estes planos

calcula-se o vetor nm igual agrave meacutedia das normais dos surfels do noacute nm = sum ns

sum ns onde ns eacute a normal de cada surfel do noacute Em seguida encontra-se o

surfel com maior produto interno entre a sua normal e a normal meacutedia

d1=Max(nm ٠ ns) Este surfel juntamente com a normal meacutedia define um dos

planos Encontra-se tambeacutem o surfel com menor produto interno entre a sua

normal e a normal meacutedia d2=Min (nm ٠ ns) Este surfel juntamente com a normal

meacutedia define o outro plano (Figura 20) Se o noacute conteacutem surfels de superfiacutecies de

orientaccedilotildees diferentes ele natildeo seraacute subdividido ou seja os planos coincidiratildeo

com os planos que delimitam o proacuteprio noacute Este teste foi implementado da

seguinte forma escolhe-se um surfel qualquer do noacute Calcula-se o produto

interno entre a normal deste surfel e as outras normais dos outros surfels deste

noacute Se algum produto interno for menor que zero este noacute natildeo seraacute subdividido

Apoacutes a etapa de subdivisatildeo classificam-se os oito cantos deste noacute como

dentro ou fora do modelo por meio da classificaccedilatildeo de um ponto que

descreveremos na sub-seccedilatildeo 5111

Melhorias Propostas 50

a b

c d

Figura 21-O noacute a eacute classificado pelo noacute c o noacute d tambeacutem eacute classificado pelo noacute c a classificaccedilatildeo do noacute a eacute propagada para o noacute b

Jaacute os noacutes vazios da octree seratildeo classificados como ldquodentrordquo ou ldquoforardquo do

modelo da seguinte forma cada noacute folha vazio eacute classificado a partir de um de

seus irmatildeos vizinhos adjacentes Se ele possuir um vizinho adjacente cheio ele

seraacute classificado por este vizinho se natildeo possuir os vizinhos adjacentes seratildeo

classificados primeiro e ele teraacute esta mesma classificaccedilatildeo (Figura 21) Como tem

que existir sempre pelo menos um noacute cheio entre os filhos de um noacute pai entatildeo

sempre esta classificaccedilatildeo poderaacute ser feita Com a classificaccedilatildeo de todos os

filhos tem-se tambeacutem a classificaccedilatildeo dos cantos do noacute pai

Mf03c003fmx a b

Figura 22-Os cantos a e b do noacute cheio possuem a mesma classificaccedilatildeo fora do modelo Esta classificaccedilatildeo foi dada ao noacute vazio adjacente

Melhorias Propostas 51

Para classificar um noacute vazio por meio de um noacute cheio verificam-se os

cantos comuns destes dois noacutes se todos os cantos tiverem a mesma

classificaccedilatildeo esta seraacute dada ao noacute vazio (Figura 22) Se houver classificaccedilotildees

diferentes escolhe-se o surfel do noacute cheio mais proacuteximo ao noacute vazio faz-se o

produto interno entre a normal deste surfel e o vetor que liga o centro do noacute

cheio ao centro do noacute vazio (ou o vetor que liga o surfel ao centro do noacute vazio)

Se o produto interno for maior que zero o noacute eacute classificado como ldquoforardquo senatildeo eacute

classificado como ldquodentrordquo Para encontrar o surfel (pertencente a um noacute cheio)

mais proacuteximo ao noacute vazio existem dois casos

- O noacute cheio eacute folha percorre-se toda a lista de surfels e escolhe o surfel

mais proacuteximo da fronteira entre o noacute cheio e o vazio

- O noacute cheio natildeo eacute um noacute folha percorrem-se os filhos do noacute cheio ou seja

esta pesquisa eacute feita descendo na octree a partir do noacute cheio procurando o

surfel mais proacuteximo agrave fronteira do pai com o noacute vazio a ser classificado

Classificando o centro do noacute vazio todo o noacute deve ter a mesma

classificaccedilatildeo pois este noacute natildeo conteacutem surfels Para encontrar o surfel do noacute

vazio mais proacuteximo da fronteira entre o noacute cheio e o vazio basta testar o valor da

coordenada se a fronteira eacute o lado direito do noacute cheio escolhe-se o surfel com

maior coordenada lsquoxrsquo se eacute o lado esquerdo escolhe-se o surfel com menor lsquoxrsquo

se lado superior surfel com maior lsquoyrsquo etc A seguir apresentamos a classificaccedilatildeo

de um ponto qualquer pertencente a um noacute cheio

Figura 23- Quadtree classificada

Melhorias Propostas 52

5111 Classificaccedilatildeo de um ponto de um noacute cheio

Figura 24 [2] A normal n eacute a normal meacutedia e os surfels s1 e s2 juntamente com a normal

n definem as retas que dividem o noacute O ponto a estaacute fora do modelo e o ponto b estaacute

dentro do modelo

Para um ponto localizado dentro do noacute faz-se o seguinte teste se o noacute foi

dividido testa-se de acordo com a divisatildeo do noacute se o ponto estaacute na parte do noacute

que estaacute dentro do modelo ele eacute classificado como ldquodentrordquo se o ponto estaacute na

parte que estaacute fora do modelo ele eacute classificado como ldquoforardquo (Figura 24) se o

ponto estaacute na parte que conteacutem os surfels encontra-se o surfel s pertencente ao

noacute mais proacuteximo do ponto e o classifica de acordo com s seja ns a normal em s

cs a coordenada de s cp a coordenada do ponto Se (cp - cs )٠ ns gt 0 o ponto

seraacute classificado como ldquoforardquo Senatildeo seraacute classificado como ldquodentrordquo

Se o noacute natildeo foi dividido em planos esta classificaccedilatildeo a partir do surfel

mais proacuteximo seraacute sempre feita

512 Teste DentroFora

Melhorias Propostas 53

Figura 25-Duas circunferecircncias e suas quadtrees correspondentes

O Teste DentroFora classifica os surfels de um modelo como dentro ou

fora de outro modelo ou na sua interseccedilatildeo Este teste foi aqui implementado

exatamente como foi proposto em Adams e Dutreacute [2] exceto que natildeo foi

implementado o meacutetodo TINN - Triangle Inequality Nearest Neighbour [19]

Cada octree eacute percorrida verificando-se se os seus noacutes ou surfels estatildeo dentro

fora ou no contorno do outro modelo (Figura 25) Sejam A e B duas octrees e

queremos classificar a octree A As duas octrees (AB) satildeo percorridas partindo

da raiz

Para cada noacute de A existem quatro casos (Figura 26) Para testar estas

situaccedilotildees os boxes dos noacutes satildeo aumentados de rmax o raio do maior surfel do

modelo Isto eacute feito para compensar o fato de que o surfel natildeo eacute apenas um

ponto mas sim considerado como um disco

Os quatro casos satildeo

Se o noacute de A natildeo intersecta B entatildeo todos os surfels deste noacute satildeo

classificados como fora

Se o noacute de A intersecta apenas noacutes de B que estatildeo fora do modelo

todos os surfels deste noacute satildeo fora

Se o noacute de A intersecta apenas noacutes de B que estatildeo dentro do modelo

todos os surfels deste noacute satildeo dentro

Melhorias Propostas 54

Se o noacute de A intersecta noacutes de B que estatildeo dentro e tambeacutem noacutes de B

que estatildeo fora testa-se se este noacute de A eacute ou natildeo folha Se natildeo for folha

percorre-se os filhos deste noacute de A ateacute encontrar um noacute folha cheio que

intersecta B Para cada surfel sa deste noacute folha de A encontra-se o surfel de B

mais proacuteximo e classifica-se a coordenada de sa da forma apresentada na seccedilatildeo

5111 Seja sb o surfel usado na classificaccedilatildeo de sa Se os discos de sb e sa

se intersectam sa eacute classificado como ldquointerseccedilatildeordquo

(a) (b)

(c) (d)

Figura 26- a modelos natildeo se intersectam b modelo intersecta noacutes fora c modelo intersecta apenas noacutes dentro d modelo intersecta noacutes dentro e noacutes fora

513 Criaccedilatildeo do modelo resultado

Um novo modelo eacute criado com os seguintes surfels (de acordo com a

operaccedilatildeo booleana escolhida pelo usuaacuterio - veja Regra 1 da seccedilatildeo 41)

Uniatildeo - surfels de A que estatildeo fora de B + surfels de B que estatildeo fora de A

Melhorias Propostas 55

Interseccedilatildeo - surfels de A que estatildeo dentro de B + surfels de B que estatildeo

dentro de A

Diferenccedila A-B - surfels de A que estatildeo fora de B + surfels de B que estatildeo

dentro de A (com orientaccedilatildeo invertida)

Como natildeo foi implementado tratamento especial algum de interseccedilatildeo para

o nosso plugin os surfels que se intersectam satildeo mantidos no modelo resultado

final sem modificaccedilotildees

Descrito o algoritmo vejamos a seguir a sua implementaccedilatildeo

52 Implementaccedilatildeo

Este algoritmo foi implementado na forma de um plugin para o software

PointShop 3D [11] Este plugin foi desenvolvido na linguagem C e no sistema

operacional Windows

A escolha deste tipo de implementaccedilatildeo permitiu-nos usar o software

PointShop para os testes do algoritmo Estes testes foram feitos com os modelos

disponibilizados para o PointShop [11] Nesta seccedilatildeo apresentaremos o software

PointShop e as principais estruturas de dados usadas em nosso plugin

O Pointshop eacute um software aberto com seu coacutedigo disponiacutevel e preparado

para trabalhar com plugins Eacute um software de ediccedilatildeo de modelos 3D por pontos

Ele permite aleacutem de visualizar o modelo alterar as suas caracteriacutesticas como

cor brilho e fazer mapeamento de textura iluminaccedilatildeo filtragem (Figura 27)

Melhorias Propostas 56

Figura 27-Software PointShop 3D com dois modelos carregados na sua cena

Aleacutem disso pode-se criar uma cena com vaacuterios modelos e visualizaacute-los de

qualquer ponto de vista Implementa o virtual trackball para rotacionaacute-los e

transladaacute-los Usa uma iluminaccedilatildeo simples direcional A sua arquitetura eacute

extensiacutevel permite que o usuaacuterio adicione seus proacuteprios componentes ao

sistema Possui trecircs tipos de componentes

ldquoToolsrdquo fornece funcionalidades para ediccedilatildeo interativa de superfiacutecie Satildeo

disponibilizados na ldquotoolbarrdquo

Plugins fornece funcionalidades para processar em um soacute passo

modelos ou partes deles selecionadas Satildeo disponibilizados no menu ldquoPluginsrdquo

Renderes fornece funcionalidades de display para os modelos

Para esta dissertaccedilatildeo foi escolhida a construccedilatildeo do componente Plugin

por adequar-se agrave nossa proposta e ser a mais simples de ser construiacuteda O

PointShop [11] jaacute conteacutem uma tool que executa operaccedilotildees booleanas e

deformaccedilatildeo free-form sobre os modelos carregados na cena usando o meacutetodo

de Pauly [3] apresentado no capiacutetulo 4 O nosso plugin Operaccedilotildees Booleanas

implementa o algoritmo descrito na seccedilatildeo anterior baseado na proposta de

Melhorias Propostas 57

Adams e Dutreacute [2] Uma comparaccedilatildeo entre o nosso plugin e a tool de Pauly [3] eacute

feita no capiacutetulo 6

Figura 28-Menu do PointShop com o plugin e as opccedilotildees para operaccedilotildees booleanas

Para se executar o plugin o usuaacuterio precisa carregar dois modelos na

cena do PointShop acionar o plugin informando a operaccedilatildeo que seraacute executada

O plugin executaraacute o algoritmo acima proposto e carregaraacute o resultado na cena

do Pointshop retirando os modelos anteriores

521 Estruturas de Dados

Como vimos o software PointShop [11] trabalha com modelos por pontos

Um modelo deste software descrito na seccedilatildeo 42 conteacutem todas as informaccedilotildees

que o algoritmo proposto em Bart [2] necessita Abaixo relacionamos as

Melhorias Propostas 58

principais estruturas de dados do PointShop usadas no plugin e as principais

estruturas de dados do nosso plugin

As principais classes do PointShop usadas no plugin satildeo

Classe Scene

Classe Objects

Classe SurfelColections

Classe Surfel

Classe StatusBar

Classe Transformer

A hierarquia de dados eacute a seguinte a Scene conteacutem vaacuterios Objects os

quais conteacutem SurfelColections Cada SurfelColections conteacutem Surfels que

suportam uma ou mais propriedades tais como cor difusa cor especular

Classe Scene Classe que representa uma cena que conteacutem modelos

Classe Object Um modelo eacute representado pela classe Object que

conteacutem uma SurfelCollection e as matrizes de transformaccedilatildeo para rotaccedilatildeo

escala e translaccedilatildeo Cada Object eacute identificado pelo seu nome que eacute uacutenico na

Scene O meacutetodo getUniqueName retorna um nome uacutenico Cada Object tem sua

proacutepria matriz de transformaccedilatildeo que pode ser modificada com setRotation

rotate setPosition translate setScale e scale Objects podem ser copiados com

copy Objects consiste em um conjunto de surfels os quais podem ser

recuperados pela getSurfelCollection O Object pode ser ativado com

setActiveObject e recuperado com getActiveObject

Objects podem ser adicionados ou removidos com addObject e

removeObject Os Objects podem ser obtidos pela getFirstObject e

getNextObject

Classe SurfelCollection representa o conjunto de surfels de um modelo

Cada surfelcollection consiste em um conjunto de surfels (SurfelInterface) de

tamanho obtido por getNofSurfels Os surfels podem ser recuperados com

getFirstSurfel getCurrentSurfel e getNextSurfel

A SurfelCollection conteacutem um PropertyDescriptor e uma SurfelList

A SurfelList eacute uma lista duplamente encadeada de surfels Possui os

atributos firstSurfel lastSurfel currentSurfel que satildeo ponteiros para uma

SurfelInterface nSurfels que eacute o nuacutemero de Surfels

A SurfelInterface define a API para os surfels que satildeo os menores

elementos que compotildeem um Object Podem ser considerados como pontos com

uma normal que define a orientaccedilatildeo do ciacuterculo (ou elipse) que seraacute desenhado

Melhorias Propostas 59

tatildeo logo o surfel seja renderizado Tem como atributos dois ponteiros (next e

prev) para SurfelInterface

PropertyDescriptor consiste em ateacute 32 valores descrevendo quais as

propriedades a SurfelInterface suporta

Classe Surfel classe que representa o surfel

Classe StatusBar classe que imprime mensagens na tela Os plugins

podem mandar mensagens para o usuaacuterio pela StatusBar

Mensagens texto podem ser impressas com showMessage O progresso

de uma operaccedilatildeo pode ser indicado com setProgress ou resetProgress

Classe Transformer representa a transformaccedilatildeo entre sistemas de

coordenadas Esta classe fornece meacutetodos para transformar pontos e vetores

entre os diferentes sistemas de coordenadas do Pointshop

A seguir apresentamos as principais estruturas de dados do plugin

Operaccedilotildees Booleanas

As principais estruturas de dados do plugin satildeo boundingbox tree no

lista_surfel surfel

Boundingbox conteacutem dois pontos 3D que definem uma caixa que conteacutem

o modelo um ponto com menores coordenadas xy e z e outro ponto com

maiores xyz

Tree representa a octree do modelo Cada registro conteacutem um ponteiro

para um noacute e oito ponteiros para as 8 octrees filhas

No representa um noacute da octree Conteacutem os seguintes dados

- localizaccedilatildeo do noacute que eacute o canto inferior esquerdo do noacute

- lista_surfel (preenchida apenas para noacutes folha cheios)

- quantidade de surfels do noacute

- classificaccedilatildeo do noacute como dentro fora ou contorno

- classificaccedilatildeo do noacute em relaccedilatildeo a outro modelo

- indica se o noacute eacute folha ou natildeo

- vetor que eacute a meacutedia das normais dos surfels do noacute

- ponto que eacute a meacutedia das localizaccedilotildees dos surfels do noacute

- surfel que tem (entre todos os surfels do noacute) o maior produto interno

entre a sua normal e a normal meacutedia

- surfel que tem (entre todos os surfels do noacute) o menor produto interno

entre a sua normal e a normal meacutedia

- produto interno maacuteximo e miacutenimo entre as normais dos surfels do noacute e a

normal meacutedia deste noacute

Melhorias Propostas 60

- indica se o noacute conteacutem surfels com normais em sentido oposto (produto

interno entre elas eacute menor que zero)

- classificaccedilatildeo dos oito cantos do noacute

lista_surfels lista em que cada registro conteacutem um apontador para um

surfel e um apontador para o proacuteximo registro

surfel representa o surfel da octree Conteacutem a classificaccedilatildeo em relaccedilatildeo a

outro modelo e um ponteiro para o surfel do Poinshop

Resultados 61

6 Resultados

Neste capiacutetulo apresentamos os testes realizados com o plugin para o

PointShop implementado para esta dissertaccedilatildeo a comparaccedilatildeo deste plugin com

o plugin de Pauly [3] e a comparaccedilatildeo entre o meacutetodo de Adams e Dutreacute [2] e o

meacutetodo de Pauly [3]

61 Testes

Os testes foram feitos em um PC x86 Family 6 261600 KB de RAM sem

placa graacutefica sistema operacional Windows 2000 O plugin foi implementado na

linguagem C

Os modelos usados para os testes satildeo modelos disponibilizados no

PointShop [11] Vale lembrar que o meacutetodo implementado em nosso plugin eacute

restrito a modelos soacutelidos e portanto foram usados apenas estes modelos

soacutelidos para os testes

O modelo na Figura 29 que eacute um dos modelos disponibilizados no

PointShop [11] foi usado para mostrar o resultado das operaccedilotildees realizadas

pelo plugin implementado nesta dissertaccedilatildeo O modelo Igea eacute um modelo soacutelido

que conteacutem 134345 surfels

Resultados 62

Figura 29-Modelo do PointShop Igea

Para realizar as operaccedilotildees este modelo foi carregado na cena do

PointShop duas vezes e um deles colorido de vermelho As Figuras 30 31 32

mostram o resultado da operaccedilatildeo de uniatildeo interseccedilatildeo e diferenccedila

respectivamente Os nuacutemeros de surfels dos modelos resultantes satildeo mostrados

na Tabela 2

Resultados 63

Figura 30-Resultado da uniatildeo de duas Igeas

Figura 31-Resultado da interseccedilatildeo de duas Igeas

Resultados 64

Figura 32-Resultado da diferenccedila entre duas Igeas

Tabela 2-Nuacutemero de surfels dos modelos resultantes

Observamos que o nuacutemero de surfels dos modelos resultantes estaacute

coerente com as figuras dos seus modelos

Para avaliar o tempo de processamento das operaccedilotildees foram realizados

vaacuterios testes com o objetivo de obter uma meacutedia dos tempos de realizaccedilatildeo de

cada operaccedilatildeo Tambeacutem foram armazenados os tempos da criaccedilatildeo das duas

octrees e da classificaccedilatildeo de todos os surfels dos dois objetos (como dentro ou

fora do outro modelo) Estes testes foram feitos usando o modelo Igea A meacutedia

dos tempos de processamento foi calculada e os resultados satildeo mostrados na

Tabela 3 Verificamos que o maior tempo gasto eacute para criaccedilatildeo das octrees

Verificamos tambeacutem que este resultado apresentado eacute similar ao resultado

verificado empiricamente com o plugin de Pauly [3] Os tempos gastos para

realizar as operaccedilotildees satildeo similares e o maior tempo gasto no plugin de Pauly

tambeacutem eacute para inicializaccedilatildeo de suas estruturas de dados que incluem a kd-tree

Operaccedilatildeo Nuacutemero de surfels do modelo resultado

Uniatildeo 189715

Interseccedilatildeo 72225

Diferenccedila 134552

Resultados 65

Operaccedilatildeo Criaccedilatildeo das

Octrees (seg)

Classificaccedilatildeo

(seg)

Criaccedilatildeo do

resultado (seg)

Total (seg)

Uniatildeo 39375 1324 18925 7154

Interseccedilatildeo 38585 1585 09547 63982

Diferenccedila 399875 1504 1729 729475

Tabela 3- Meacutedia dos tempos de processamento para as operaccedilotildees com duas Igeas

Com o objetivo de expor melhor os resultados deste trabalho

apresentamos abaixo mais um teste das operaccedilotildees booleanas usando o nosso

plugin Os modelos usados para este segundo teste satildeo o Max Planck e o Male

ambos modelos soacutelidos disponibilizados no PointShop Estes modelos satildeo

mostrados nas figura 33 e 34

O primeiro Max Planck conteacutem 52809 surfels

Figura 33-Modelo do PointShop MaxPlanck

O segundo modelo abaixo Male conteacutem 148138 surfels

Resultados 66

Figura 34-Modelo do PointShop Male

As Figuras 353637 mostram o resultado da operaccedilatildeo de uniatildeo interseccedilatildeo

e diferenccedila respectivamente usando os dois modelos acima Podemos observar

pela figura 35 que o resultado da operaccedilatildeo de diferenccedila neste caso gerou um

modelo resultado com trecircs partes desconexas Os nuacutemeros de surfels de cada

modelo resultado satildeo mostrados na Tabela 5

Figura 35- Resultado da Uniatildeo do modelo Male com MaxPlanck

Resultados 67

Figura 36-Resultado da interseccedilatildeo do modelo Male com o MaxPlanck

Figura 37-Resultado da diferenccedila do modelo Male do modelo MaxPlanck

As meacutedias de tempos de processamento foram calculadas da mesma

forma que o primeiro teste com o modelo Igea acima apresentado Os

resultados satildeo mostrados na Tabela 4 Podemos observar que este teste

Resultados 68

apresenta tempos um pouco menores que o teste com o modelo Igea Isto se

deve ao fato de que o modelo MaxPlanck ser significativamente menor que o

modelo Igea MaxPlanck possui 52809 surfels e Igea conteacutem 134345 surfels

Operaccedilatildeo Criaccedilatildeo das

Octrees (seg)

Classificaccedilatildeo

(seg)

Criaccedilatildeo do

resultado (seg)

Total

(seg)

Uniatildeo 3012 1254 102 5285

Interseccedilatildeo 2985 0901 0861 4747

Diferenccedila 2965 0911 0791 4667

Tabela 4-Tempo de processamento das operaccedilotildees com os modelos MaxPlanck e Male

Operaccedilatildeo Nuacutemero de surfels do resultado

Uniatildeo 126532

Interseccedilatildeo 88414

Diferenccedila 77635

Tabela 5-Nuacutemero de surfels dos modelos resultados das operaccedilotildees com os modelos MaxPlanck e Male

Em seguida apresentaremos uma comparaccedilatildeo entre o nosso plugin e o

plugin de Pauly[3] e tambeacutem uma comparaccedilatildeo entre o meacutetodo de Adams e Dutreacute

[2] e o meacutetodo de Pauly [3]

62 Comparaccedilatildeo entre os dois meacutetodos que realizam operaccedilotildees booleanas

A comparaccedilatildeo entre os meacutetodos de Pauly[3] e de Adams e Dutreacute foi feita

em termos de tempo de processamento e em termos conceituais Em termos de

tempo de processamento comparamos o plugin de Pauly[3] com o nosso plugin

Em termos de tempo de processamento verifica-se empiricamente que os

dois meacutetodos apresentam tempos bastante similares Entretanto o tempo de

processamento do algoritmo aqui implementado ainda pode ser melhorado com

Resultados 69

o uso do meacutetodo TINN [19] que foi proposto em Adams[2] - para otimizar a

pesquisa do surfel mais proacuteximo a um ponto que estaacute localizado na regiatildeo de um

noacute que conteacutem surfels - veja seccedilatildeo 42 O uso deste meacutetodo natildeo foi

implementado para este trabalho e a sua implementaccedilatildeo melhoraria o tempo de

resposta do algoritmo Aleacutem disso o trabalho de Sara F Frisken [12] citado no

capiacutetulo 2 apresenta uma otimizaccedilatildeo no uso de octrees que pode ser

incorporada no algoritmo implementado neste trabalho

Em termos conceituais vamos fazer a comparaccedilatildeo do uso do que

chamamos aqui de Regra 2 do tratamento de interseccedilatildeo e do tratamento de

ldquoarestas vivasrdquo

Como vimos na seccedilatildeo 41 tanto o algoritmo implementado nesta

dissertaccedilatildeo baseado no trabalho de Adams e Dutreacute como o meacutetodo de Pauly

[3] parte do que chamamos aqui de Regra 2 para realizar operaccedilotildees booleanas

com pontos Mas cada um destes meacutetodos daacute um tratamento diferente para o

uso desta regra

O meacutetodo de Pauly usa a Regra 2 para classificaccedilatildeo de cada ponto ou de

cada surfel Para classificar um surfel de B sb como dentro ou fora de A eacute

encontrado o surfel de A sa mais proacuteximo a sb e sb eacute classificado a partir de sa

Para encontrar sa Pauly utiliza uma kd-tree Como esta pesquisa para encontrar

sa eacute cara (mesmo usando uma kd-tree) Pauly utiliza uma esfera que conteacutem

pontos com a mesma classificaccedilatildeo (seccedilatildeo 432) e diminui em 90 este nuacutemero

de pesquisas Pauly utiliza tambeacutem a representaccedilatildeo impliacutecita MLS (Moving Least

Squares) para casos em que a Regra 2 poderia falhar e para tratamento de

interseccedilotildees Entretanto o nuacutemero destes casos em que a Regra 2 poderia falhar

eacute muito pequeno E a representaccedilatildeo MLS natildeo eacute uma estrutura simples de ser

implementada Portanto natildeo encontramos vantagens em usar MLS para estes

casos O meacutetodo de Adams e Dutreacute natildeo trata estes casos e na praacutetica

apresenta resultados bastante satisfatoacuterios como foi mostrado Portanto

consideramos que valeria a pena fazer algum tratamento especial para estes

casos se fosse um procedimento simples Para a execuccedilatildeo do algoritmo de

Pauly o uso de MLS natildeo interfere significativamente porque a construccedilatildeo desta

representaccedilatildeo natildeo eacute feita somente para realizar operaccedilotildees booleanas Os testes

empiacutericos que fizemos com o algoritmo de Pauly natildeo incluem a construccedilatildeo desta

representaccedilatildeo

Aparentemente os dois algoritmos satildeo bastante parecidos um usa octrees

e o outro usa kd-tree As duas estruturas de dados satildeo simples e otimizam a

classificaccedilatildeo dos surfels de um modelo como dentro ou fora do outro modelo

Resultados 70

Mas existe uma diferenccedila conceitual entre dois que merece ser destacada O

algoritmo aqui implementado usa a Regra 2 para classificaccedilatildeo dos noacutes de uma

octree e armazena esta octree classificada (ver capiacutetulo 5) Assim na maioria dos

casos natildeo seraacute necessaacuterio encontrar o surfel mais proacuteximo para classificar um

ponto (ou um surfel) como fora ou dentro de um modelo Caso o ponto esteja em

uma aacuterea da octree classificada ele teraacute a classificaccedilatildeo dada agravequela aacuterea A

pesquisa ao surfel mais proacuteximo seraacute feita apenas nos casos em que o ponto a

ser classificado estaacute localizado entre os planos que subdividem um noacute cheio

O uso desta octree classificada levanta uma questatildeo que natildeo foi citada no

trabalho de Adams e Dutreacute que eacute a proximidade desta estrutura (armazenada)

de octree classificada com uma representaccedilatildeo volumeacutetrica do objeto Sendo

assim esta estrutura pode ser aproveitada para outras funccedilotildees aleacutem da

classificaccedilatildeo dos surfels Por exemplo podemos ter uma aproximaccedilatildeo do

volume de uma cena somando os volumes aproximados dos modelos que a

compotildeem Como o enfoque deste trabalho eacute operaccedilatildeo booleana natildeo vamos nos

aprofundar nesta questatildeo

Outra importante diferenccedila entre os dois trabalhos que jaacute foi explicada na

seccedilatildeo 432 eacute que o meacutetodo de Pauly aplica-se a modelos soacutelidos ou natildeo

soacutelidos enquanto que o meacutetodo de Adams e Dutreacute aplica-se somente a modelos

soacutelidos

Quanto ao tratamento de interseccedilatildeo em termos de visualizaccedilatildeo todos os

dois resolvem bem o problema O tratamento de interseccedilatildeo nos dois trabalhos

tambeacutem resolve o problema da validade da Regra 2 (ver seccedilatildeo 44) Entretanto

o tratamento de Adams e Dutreacute natildeo depende da renderizaccedilatildeo sendo portanto

mais portaacutevel Aleacutem disso uma desvantagem do meacutetodo de Pauly eacute o uso da

representaccedilatildeo impliacutecita MLS (ldquoMoving Least Squaresrdquo) do objeto para obter os

pontos exatamente na curva de interseccedilatildeo Esta representaccedilatildeo torna o

tratamento de interseccedilatildeo mais complexo e a vantagem apresentada natildeo eacute tatildeo

significativa para este tratamento de interseccedilatildeo

Conclusatildeo 71

7 Conclusatildeo

Concluiacutemos entatildeo que as escolhas de Adams e Dutreacute por usar uma

octree classificada e pelo tratamento dado agrave interseccedilatildeo satildeo mais abrangentes

que a escolha de Pauly E consideramos que quanto mais abrangente for uma

escolha conceitual mais resultados poderemos tirar dela No caso de Adams e

Dutreacute eles estendem o problema de classificar um ponto para classificar todo o

modelo Como foi citado ele quase fornece uma representaccedilatildeo volumeacutetrica do

modelo Esta aproximada representaccedilatildeo volumeacutetrica pode nos fornecer outras

informaccedilotildees como por exemplo o volume aproximado do modelo

Aleacutem disso o uso da representaccedilatildeo impliacutecita MLS no meacutetodo de Pauly cria

uma complexidade a mais para o meacutetodo sem apresentar vantagens para a

realizaccedilatildeo de operaccedilotildees booleanas que eacute o nosso enfoque

Logo podemos dizer que o meacutetodo de Adams e Dutreacute apresenta as

seguintes vantagens em relaccedilatildeo ao de Pauly

- a estrutura de octree classificada aleacutem de ser usada para classificaccedilatildeo

fornece informaccedilotildees adicionais como volume aproximado do objeto

- o tempo de processamento no meacutetodo de Adams e Dutreacute tende a ser

melhor que no meacutetodo de Pauly se implementadas as melhorias acima citadas e

se colocaacutessemos em consideraccedilatildeo o uso da representaccedilatildeo impliacutecita MLS

(Moving Least Squares)

- o tratamento de interseccedilatildeo de Adams e Dutreacute apresenta a vantagem da

portabilidade ou seja iraacute funcionar independente do algoritmo de renderizaccedilatildeo

utilizado

E as vantagens do meacutetodo de Pauly em relaccedilatildeo ao de Adams e Dutreacute

- a colocaccedilatildeo de surfels exatamente na curva de interseccedilatildeo

- a possibilidade de trabalhar com modelos soacutelidos ou natildeo soacutelidos

E finalizando concluiacutemos que o estudo relatado nesta dissertaccedilatildeo foi

importante por

- fornecer um breve estudo sobre modelagem por pontos uma nova e

promissora aacuterea dentro da computaccedilatildeo graacutefica

Conclusatildeo 72

- por apresentar uma avaliaccedilatildeo dos dois trabalhos existentes sobre

operaccedilotildees booleanas com pontos encontrando as vantagens de cada um

e levantando questotildees que natildeo tinham sido citadas nos trabalhos originais

- por propor e implementar melhorias ao trabalho de Adams e Dutreacute

71 Trabalhos Futuros

Nossa implementaccedilatildeo pode ser ainda evoluiacuteda com as propostas

apresentadas na seccedilatildeo 62 Como observamos o tempo de processamento do

algoritmo aqui implementado ainda pode ser melhorado com o uso do meacutetodo

TINN [19] - que foi proposto em Adams[2] - para otimizar a pesquisa do surfel

mais proacuteximo a um ponto que estaacute localizado na regiatildeo de um noacute que conteacutem

surfels Aleacutem disso o trabalho Simple and Efficient Trasversal Methods for

Quadtrees and Octrees de Sara F Frisken [12] citado no capiacutetulo 2 apresenta

uma otimizaccedilatildeo no uso de octrees Outra proposta para melhorar o tempo de

processamento do algoritmo aqui implementado eacute usar a forma de trabalhar com

octrees apresentada neste trabalho

O trabalho de Adams e Dutreacute [2] eacute aplicado apenas a objetos soacutelidos O

nosso plugin portanto aplica-se somente a este tipo de objeto Jaacute o trabalho de

Pauly[3] eacute aplicado tambeacutem a modelos natildeo soacutelidos Apresentamos como

proposta a um trabalho futuro a extensatildeo do algoritmo aqui implementado para

modelos natildeo soacutelidos O surfel pode conter uma informaccedilatildeo adicional que indica

se ele estaacute delimitando um volume ou natildeo Assim pode-se ter um modelo com

ldquopartes soacutelidasrdquo e ldquopartes natildeo soacutelidasrdquo Por exemplo a uniatildeo de um plano com

uma esfera poderia resultar numa esfera com ldquoabasrdquo (seriam as partes do plano

que estariam fora da esfera) O modelo resultado teria uma parte correspondente

a um espaccedilo 3D (esfera) e outra parte que seria uma superfiacutecie 2D posicionada

no espaccedilo 3D sem delimitar algum volume (abas)

Muitos trabalhos podem ser desenvolvidos aplicando-se o modelo por

pontos em animaccedilatildeo jogos visualizaccedilatildeo de terrenos criaccedilatildeo de protoacutetipos etc

considerando-se a eficiecircncia e simplicidade do modelo E mais especificamente

as operaccedilotildees booleanas com pontos podem ser aplicadas para criaccedilatildeo de

cenaacuterios testes de colisotildees e nestes casos a representaccedilatildeo usando octrees

pode ser mais explorada considerando-se o seu potencial de representaccedilatildeo

volumeacutetrica de um objeto

Referecircncias Bibliograacuteficas 73

8 Referecircncias Bibliograacuteficas

[1] MAumlNTYLAuml M An Introduction to Solid Modeling Computer Science Press 1988

[2] ADAMS B DUTREacute P Interactive Boolean Operations on Surfel-

Bounded Solids Proceedings of SIGGRAPH 2003 San Diego USA 2003

[3] PAULY M KEISER R KOBBELT L GROSS M Shape Modeling

with Point-Sampled Geometry SIGGRAPH 2003 Computer Graphics

Proceedings Annual Conference Series ACM Press ACM SIGGRAPH 2003

[4] LEVOY M WHITTED T The Use of Points as Display Primitives

Technical Report TR 85-022 The University of North Carolina at Chapel Hill

Department of Computer Science 1985

[5] PFISTER H ZWICKER M VAN BAAR J GROSS M 2000 Surfels

Surface Elements as Rendering Primitives SIGGRAPH 2000 pp 335ndash342 New

Orleans LA July 23-28 2000

[6] ZWICKER M PFISTER H VAN BAAR J GROSS M Surface

Splatting SIGGRAPH 2001

[7] PAULY M KOBBELT L GROSS M Multiresolution Modeling of

Point-Sampled Geometry CS Techinical Report 378 September 16 2002

[8] CURLESS B New Methods for Surface Reconstruction from Range Images PhD thesis Stanford University 1997

[9] RUSINKIEWICZ S Real-time Acquisition and Rendering of Large 3D Models PhD thesis Stanford University 2001

Referecircncias Bibliograacuteficas 74

[10] AMENTA N BERN M KAMVYSSELIS M A new Voronoi-Based

Surface Reconstruction Algorithm SIGGRAPH 98 Conference proceedings pp

415-421 New York 1998

[11] ZWICKER M PAULY M KNOLL O GROSS M Pointshop 3D an

Interactive System for Point-Based Surface Editing Proceedings of SIGGRAPH 2002 San Antonio TX July 2002

[12] FRISKEN S PERRY R Simple and Efficient Traversal Methods for

Quadtrees and Octrees Journal of Graphics Tools Vol 7 Issue 3 May 2003

[13] CORREcircA W T OLIVEIRA M M Silva C T Wang J

Modeling and Rendering of Real Environments

Revista de Informaacutetica Teoacuterica e Aplicada (Brazilian Journal of Theoretic and Applied Computing) 9(2)127-156 2002

[14] DAVIS J MARSCHNER S GARR M LEVOY M Filling Holes in

Complex Surfaces Using Volumetric Diffusion First International Symposium on 3D Data Processing Visualization Transmission June 2002

[15] RAumlSAumlNEN J Surface Splatting Theory Extensions and Implementation Masterrsquos Thesis Dept of Computer Science Helsinki

University of Technology May 28 2002

[16] PAULY M Point Primitives for Interactive Modeling and Processing of 3D Geometry PhD thesis Federal Institute of Technology (ETH)

of Zurich 2003

[17] HOPPE H DEROSE T DUCHAMP T MCDONALD J

STUELZLE W Surface Reconstruction from Unorganized Points Computer Graphics 26(2)71ndash78 July 1992

[18] ALEXA M BEHR J COHEN-OR D FLEISHMAN S LEVIN D

SILVA C T Point Set Surfaces IEEE Visualization 2001 pp 21ndash28 October

2001

Referecircncias Bibliograacuteficas 75

[19] GREENSPAN M GODIN G TALBOT J Acceleration of Binning

Nearest Neighbor Methods Proceedings of Vision Interface 2000 pp 337-

344

[20] MENCL R Reconstruction of Surfaces from Unorganized Three-Dimensional Point Clouds Dissertation Dortmund Univ 2001

[21] KRIVANEK J Representing and Rendering Surfaces With Points

httpciteseernjneccomkrivanek03representinghtml Acesso em 30 jul

2003

[22] KRISTJANSSON ET AL Approximate Boolean Operations on Free-

form Solids Proceedings of SIGGRAPH 01 2001

Todos os direitos reservados Eacute proibida a reproduccedilatildeo total ou parcial do trabalho sem autorizaccedilatildeo da universidade da autora e do orientador

Heloisa Reis Leal Graduou-se em Ciecircncia da Computaccedilatildeo pela Universidade Federal de Minas Gerais (UFMG) em abril de 1992 Trabalhou como Analista de Sistemas na empresa Telecomunicaccedilotildees de Minas Gerais SA (TELEMIG) entre 1993 e 1997 onde atuou no desenvolvimento de sistemas de controle da rede telefocircnica de Minas Gerais Trabalhou como Analista de Sistemas no Tribunal de Justiccedila do Estado de Minas Gerais (TJMG) entre 1998 e 2001 onde atuou no desenvolvimento de sistemas controle de processos e controle de equipamentos Desde 2002 trabalha no Serviccedilo Federal de Processamento de Dados (SERPRO) desenvolvendo sistema de controle da Malha Fiscal do Imposto de Renda - Pessoa Fiacutesica

Ficha Catalograacutefica

Leal Heloisa Reis

Operaccedilotildees booleanas na modelagem por pontos

Heloisa Reis Leal orientadores Waldemar Celes Filho

Luiz Velho ndash Rio de Janeiro PUC Departamento de

Informaacutetica 2004

75 f il 30 cm

Dissertaccedilatildeo (mestrado) ndash Pontifiacutecia

Universidade Catoacutelica do Rio de Janeiro Departamento de

Informaacutetica

Inclui referecircncias bibliograacuteficas

1 Informaacutetica ndash Teses 2 Computaccedilatildeo graacutefica

interativa 3 Modelagem 3D 4 Modelagem por pontos 5

Operaccedilotildees booleanas I Celes Filho Waldemar II Velho

Luiz III Pontifiacutecia Universidade Catoacutelica do Rio de Janeiro

Departamento de Informaacutetica III Tiacutetulo

CDD 004

Agrave minha matildee Tetecirc Daacutelton e Lucas

Agradecimentos Aos meus orientadores Waldemar Celes e Luiz Velho pelo apoio dedicaccedilatildeo e paciecircncia que tornaram este trabalho possiacutevel Agrave PUC-Rio pelo apoio financeiro Aos membros da banca examinadora pelas correccedilotildees e sugestotildees Agrave Cristina Griner chefe de projeto do SERPRO pelo apoio compreensatildeo e ajuda Aos meus professores de mestrado pelos conhecimentos transmitidos Agrave Mauren Paola Ruthner pela amizade e colaboraccedilatildeo durante todo o mestrado Aos colegas do Departamento de Informaacutetica da PUC-Rio pelos momentos compartilhados Agrave minha matildee pela revisatildeo do texto desta dissertaccedilatildeo e pelo total apoio sem o qual este trabalho natildeo seria possiacutevel Agrave Daacutelton e Tetecirc meus queridos irmatildeos pelo apoio incentivo e colaboraccedilatildeo

Resumo

Leal Heloisa ReisCeles Waldemar (Orientador) Operaccedilotildees Booleanas na Modelagem por Pontos Rio de Janeiro 2004 75p Dissertaccedilatildeo de Mestrado - Departamento de Informaacutetica Pontifiacutecia Universidade Catoacutelica do Rio de Janeiro

Operaccedilotildees booleanas em modelagem 3D satildeo usadas para criar novos

modelos ou para modificaacute-los Na maioria dos tipos de representaccedilatildeo de objetos

3D estas operaccedilotildees satildeo bastante complexas Nos uacuteltimos anos tem sido muito

explorado um novo tipo de modelagem a modelagem por pontos que apresenta

muitas vantagens em relaccedilatildeo agraves outras representaccedilotildees como maior simplicidade

e eficiecircncia Dois trabalhos exploram as operaccedilotildees booleanas na modelagem

por pontos o trabalho de Adams e Dutreacute e o trabalho de Pauly et al Dada a

grande importacircncia deste novo tipo de modelagem e do uso de operaccedilotildees

booleanas esta dissertaccedilatildeo apresenta uma introduccedilatildeo agrave modelagem por pontos

implementa o algoritmo proposto em Adams e Dutreacute com algumas melhorias e o

compara com o meacutetodo de Pauly et al

Palavras-chave

Modelagem 3D Modelagem por pontos Operaccedilotildees Booleanas

Computaccedilatildeo Graacutefica Interativa

Abstract

Leal Heloisa Reis Celes Waldemar(Advisor) Boolean Operations on Point-based models Rio de Janeiro 2004 75p MSc Dissertation - Departamento de Informaacutetica Pontifiacutecia Universidade Catoacutelica do Rio de Janeiro

Boolean operations are used to create or modify models These operations

in the majority of 3D object representations are very complex In the last years a

significant trend in computer graphics has been the shift towards point sampled

3D models due to their advantages over other representations such as simplicity

and efficiency Two recent works present algorithms to perform interactive

boolean operations on point-based models the work by Adams and Dutreacute and

the work by Pauly et Al Due to great importance of this novel representation

and of the use of boolean operations the present work makes an introduction to

point-based representation implements the algorithm proposed by Adams and

Dutreacute with some improvements and compares this implementation with the work

by Pauly et al

Palavras-chave

3D Modeling Point-based Modeling Boolean Operation Interactive

Computer Graphics

Sumaacuterio

1 Introduccedilatildeo 15

2 Trabalhos relacionados 18

3 Modelagem por Pontos 20 31 Ideacuteia da Representaccedilatildeo 20 32 Tipos de distribuiccedilatildeo dos surfels 22 33 Estrutura de multi-resoluccedilatildeo 22 34 Dados que um surfel pode conter 23 35 Aquisiccedilatildeo do modelo 23 351 Aquisiccedilatildeo da geometria 23 352 Aquisiccedilatildeo da textura 24 353 Correccedilatildeo das falhas da aquisiccedilatildeo 25 36 Reconstruccedilatildeo da superfiacutecie (contiacutenua) a partir do modelo (discreto) 25 37 Visualizaccedilatildeo do modelo 26 38 Ediccedilatildeo do modelo 28

4 Operaccedilotildees Booleanas com Pontos 29 41 Meacutetodos para realizar operaccedilotildees booleanas em objetos modelados por

pontos 29 42 Meacutetodo de Adams e Dutreacute 33 421 Modelo por Pontos em Adams e Dutreacute 33 422 Algoritmo de Operaccedilotildees Booleanas 34 43 Meacutetodo de Pauly 39 431 Modelo em Pauly 40 432 Algoritmo de Operaccedilotildees Booleanas 40 44 Validade da Regra 2 43

5 Melhorias Propostas 47 51 Descriccedilatildeo do algoritmo 47 511 Criaccedilatildeo e classificaccedilatildeo de uma octree para cada modelo 48

512 Teste DentroFora 52 513 Criaccedilatildeo do modelo resultado 54 52 Implementaccedilatildeo 55 521 Estruturas de Dados 57

6 Resultados 61 61 Testes 61 62 Comparaccedilatildeo entre os dois meacutetodos que realizam operaccedilotildees booleanas 68

7 Conclusatildeo 71 71 Trabalhos Futuros 72

8 Referecircncias Bibliograacuteficas 73

11

Lista de figuras

Figura 1 Um modelo por pontos e sua visualizaccedilatildeo 21 Figura 2 A superfiacutecie modelada por surfels O surfel em destaque tem raio de

alcance rt e normal n 22 Figura 3 Modelo por pontos e sua renderizaccedilatildeo usando Surface Splatting 26 Figura 4 Trecircs modelos novos foram criados a partir dos quatro iniciais (esfera

cilindro dois cubos) O primeiro eacute a esfera menos um cubo em seguida

retirou-se outro cubo e por uacuteltimo retirou-se o cilindro 29 Figura 5 A partir de dois modelos por pontos uma heacutelice e uma cabeccedila as trecircs

operaccedilotildees booleanas satildeo mostradas da esquerda para a direita uniatildeo

diferenccedila e interseccedilatildeo 30 Figura 6 (a) Dois modelos A e B (b) Posicionados de forma que A tem uma parte

dentro de B eacute mostrado o resultado A U B Af + Bf (c) Resultado de A ndash B Af

+ Bd (d) Resultado de A cap B Ad + Bd 31 Figura 7 Para classificar o ponto x encontra-se o surfel p (com normal np) mais

proacuteximo a x Se o produto interno entre np e (x ndash p) for maior que zero entatildeo

x eacute classificado como fora senatildeo seraacute classificado como dentro 32 Figura 8 Interseccedilatildeo de duas esferas agrave esquerda sem nenhum tratamento de

interseccedilatildeo agrave direita apoacutes o tratamento de interseccedilatildeo 33 Figura 9 Um objeto representado por pontos com suas normais e sua quadtree

correspondente classificada os noacutes cinza claro estatildeo dentro do modelo noacutes

cinza mais escuro estatildeo fora do modelo e noacutes com cinza intermediaacuterio satildeo

noacutes cheios noacutes que conteacutem pontos 35 Figura 10 Divisatildeo de noacute de contorno a parte agrave esquerda estaacute fora do modelo a

parte agrave direita estaacute dentro do modelo e a faixa intermediaacuteria conteacutem os

surfels 36 Figura 11 Interseccedilatildeo do surfel s e do plano que passa pelo surfel t o surfel mais

proacuteximo a s O surfel s eacute substituiacutedo por trecircs surfels menores 38 Figura 12 Agrave direita eacute mostrado o resultado do tratamento de interseccedilatildeo para o

caso de Arestas Vivas do objeto agrave esquerda 39 Figura 13 Os novos surfels satildeo colocados exatamente na curva de interseccedilatildeo e

convergem para o ponto de interseccedilatildeo 42 Figura 14 (a) Suponhamos a reta que eacute a interseccedilatildeo do plano tangente a S1 em

q1 e o plano tangente a S2 em q2 O ponto r eacute o ponto desta reta que estaacute

12

mais proacuteximo a q1 e q2 (b) r eacute projetado sobre S1 e S2 obtendo-se q1acute e q2acute

dois novos pontos de partida para nova iteraccedilatildeo (c) A nova iteraccedilatildeo gera r

que eacute uma aproximaccedilatildeo melhor de q 43 Figura 15 Para verificar se o ponto x estaacute fora de um contorno C encontra-se o

ponto y de C Se o produto interno entre a normal em y e o vetor que liga y a

x for maior que zero entatildeo x estaacute fora de C senatildeo estaacute dentro de C 44 Figura 16 As curvas vermelhas satildeo o Eixo Medial da curva em preto 45 Figura 17 Em 3D geralmente o Eixo Medial eacute uma superfiacutecie 2D (em vermelho)

Aqui o quadrado eacute o Eixo Medial da superfiacutecie transparente que o contorna

45 Figura 18 A figura mostra o diagrama de Voronoi de uma amostragem de pontos

S Da mesma forma que a amostragem aproxima a curva os veacutertices de

Voronoi aproximam o Eixo Medial 46 Figura 19 Quadtree classificada Os noacutes mais escuros estatildeo fora do modelo os

mais claros dentro e os em tom intermediaacuterio satildeo noacutes de contorno 48 Figura 20 O noacute cheio eacute dividido em trecircs partes agrave esquerda a regiatildeo estaacute dentro

do modelo agrave direita estaacute fora e entre as duas linhas que dividem o noacute estaacute a

regiatildeo que conteacutem os surfels 49 Figura 21 O noacute a eacute classificado pelo noacute c o noacute d tambeacutem eacute classificado pelo noacute c

a classificaccedilatildeo do noacute a eacute propagada para o noacute b 50 Figura 22 Os cantos a e b do noacute cheio possuem a mesma classificaccedilatildeo fora do

modelo Esta classificaccedilatildeo foi dada ao noacute vazio adjacente 50 Figura 23 Quadtree classificada 51 Figura 24 A normal n eacute a normal meacutedia e os surfels s1 e s2 juntamente com a

normal n definem as retas que dividem o noacute 52 Figura 25 Duas circunferecircncias e suas quadtrees correspondentes 53 Figura 26 a modelos natildeo se intersectam b modelo intersecta noacutes fora c

modelo intersecta apenas noacutes dentro d modelo intersecta noacutes dentro e noacutes

fora 54 Figura 27 Software PointShop 3D com dois modelos carregados na sua cena 56 Figura 28 Menu do PointShop com o plugin e as opccedilotildees para operaccedilotildees

booleanas 57 Figura 29 Modelo do PointShop Igea 62 Figura 30 Resultado da uniatildeo de duas Igeas 63 Figura 31 Resultado da interseccedilatildeo de duas Igeas 63 Figura 32 Resultado da diferenccedila entre duas Igeas 64

13

Figura 33 Modelo do PointShop MaxPlanck 65 Figura 34 Modelo do PointShop Male 66 Figura 35 Resultado da Uniatildeo do modelo Male com MaxPlanck 66 Figura 36 Resultado da interseccedilatildeo do modelo Male com o MaxPlanck 67 Figura 37 Resultado da diferenccedila do modelo Male do modelo MaxPlanck 67

14

Lista de tabelas

Tabela 1 Classificaccedilatildeo para operaccedilotildees booleanas 42

Tabela 2- Nuacutemero de surfels dos modelos resultantes 64 Tabela 3- Meacutedia dos tempos de processamento para as operaccedilotildees com duas

Igeas 65

Tabela 4-Tempo de processamento das operaccedilotildees com os modelos MaxPlanck

e Male 68 Tabela 5- Nuacutemero de surfels dos modelos resultados das operaccedilotildees com os

modelos MaxPlanck e Male 68

15

1 Introduccedilatildeo

O mundo digital estaacute conquistando cada vez mais espaccedilo nos meios de

comunicaccedilatildeo Sons imagens viacutedeos digitais satildeo miacutedias muito usadas em

diversas aacutereas como entretenimento medicina desenho industrial engenharia

arquitetura educaccedilatildeo arte ciecircncia entre outras Podemos citar alguns

exemplos dentro destas aacutereas como jogos efeitos especiais filmes digitais

visualizaccedilatildeo cientiacutefica viacutedeo-conferecircncia comeacutercio na internet Nos uacuteltimos anos

verificamos que o modelo 3D vem se tornando um novo meio de comunicaccedilatildeo

digital Com o desenvolvimento da tecnologia de aquisiccedilatildeo e do processamento

de modelos 3D ele vem sendo cada vez mais utilizado Jogos 3D animaccedilotildees

aplicaccedilotildees em realidade virtual visualizaccedilatildeo cientiacutefica aplicaccedilotildees para aacuterea

meacutedica e odontoloacutegica criaccedilatildeo de reacuteplicas para estudo e preservaccedilatildeo do

patrimocircnio histoacuterico sistemas CADCAM cataacutelogos de modelos 3D na Web para

comercializaccedilatildeo criaccedilatildeo de protoacutetipos para arquitetura engenharia satildeo alguns

exemplos de aplicaccedilotildees que usam modelos 3D

A aacuterea que estuda a representaccedilatildeo de um modelo 3D no computador eacute

chamada de modelagem em computaccedilatildeo graacutefica Existem diversos tipos de

modelagem para as diversas aplicaccedilotildees que usam um modelo 3D como por

exemplo representaccedilotildees poligonais como malhas triangulares que satildeo

geralmente usadas na aacuterea de entretenimento Este trabalho explora um novo

tipo de modelagem a modelagem por pontos

A modelagem por pontos comeccedilou a ser largamente explorada nesta

deacutecada e trata-se de uma aacuterea muito promissora em computaccedilatildeo graacutefica dadas

agraves vaacuterias e grandes vantagens em relaccedilatildeo aos outros tipos de representaccedilatildeo

como esquema de representaccedilatildeo CSG (Constructive Solid Geometry) [1] ou

malhas poligonais Dentre as principais vantagens podemos citar grande

simplicidade e flexibilidade boa performance robustez Mas a principal

vantagem desta modelagem que foi o fator que impulsionou o seu grande

desenvolvimento nesta deacutecada eacute que esta modelagem por pontos eacute a melhor

opccedilatildeo para tratar os dados de saiacuteda de equipamentos de aquisiccedilatildeo de modelos

3D O uso destes equipamentos tem aumentado muito nesta deacutecada A

16

tecnologia destes equipamentos tem progredido muito e eles tecircm se tornado

mais baratos A tendecircncia eacute que o uso destes equipamentos se torne o mais

utilizado meio de obtenccedilatildeo de modelos 3D Isto porque construir modelos 3D

bastante detalhados por meio de um software de modelagem eacute muito trabalhoso

O processo de aquisiccedilatildeo de modelos por meio destes equipamentos automatiza

este processo de construccedilatildeo

No trabalho com modelos 3D frequumlentemente satildeo usadas as operaccedilotildees

booleanas que satildeo operaccedilotildees de uniatildeo interseccedilatildeo ou diferenccedila No esquema

de representaccedilatildeo CSG estas operaccedilotildees fazem parte da representaccedilatildeo do

objeto Estas operaccedilotildees tambeacutem podem ser usadas para criar novos modelos ou

para alteraacute-los Na maioria dos tipos de representaccedilatildeo de objetos 3D estas

operaccedilotildees satildeo bastante complexas

A simplicidade da representaccedilatildeo por pontos permite que as operaccedilotildees

booleanas sejam realizadas com facilidade se compararmos com a realizaccedilatildeo

destas operaccedilotildees em outros tipos de representaccedilatildeo como malhas poligonais

Motivada pelas vantagens desta modelagem e pela utilidade destas operaccedilotildees

esta dissertaccedilatildeo apresenta uma introduccedilatildeo geral de modelagem por pontos e

trabalha mais especificamente com operaccedilotildees booleanas em objetos

modelados por pontos Dois trabalhos que exploram as operaccedilotildees booleanas na

modelagem por pontos seratildeo abordados o trabalho de Adams e Dutreacute [2] e o

trabalho de Pauly et al [3] O presente trabalho implementa o meacutetodo de Adams

e Dutreacute com algumas melhorias e faz uma comparaccedilatildeo entre o meacutetodo de Pauly

[3] e o meacutetodo de Adams e Dutreacute [2] com nossas melhorias

Como contribuiccedilotildees dadas por este trabalho apresentamos

- um estudo sobre modelagem por pontos

- um estudo sobre operaccedilotildees booleanas com pontos

- proposta de melhorias ao algoritmo proposto por Adams e Dutreacute [2]

- comparaccedilatildeo dos dois meacutetodos propostos para realizar estas operaccedilotildees

meacutetodo de Pauly et al [3] e de Adams e Dutreacute [2]

Este trabalho vem apresentado nesta dissertaccedilatildeo organizada em sete

capiacutetulos conforme descrito resumidamente a seguir

O capiacutetulo 2 cita alguns trabalhos sobre modelagem por pontos que estatildeo

relacionados a este trabalho

O capiacutetulo 3 apresenta uma visatildeo geral do modelo por pontos e explica

melhor alguns trabalhos citados no capiacutetulo 2

17

O capiacutetulo 4 apresenta operaccedilotildees booleanas com pontos e os dois

meacutetodos para realizaacute-las na modelagem por pontos meacutetodo de Pauly et al [3] e

de Adams e Dutreacute [2]

O capiacutetulo 5 apresenta algumas melhorias ao algoritmo de Adams e Dutreacute

[2] e a nossa implementaccedilatildeo deste algoritmo

O capiacutetulo 6 traz os resultados obtidos

E finalmente o capiacutetulo 7 encerra o trabalho com uma conclusatildeo e com

possiacuteveis trabalhos futuros

Trabalhos relacionados 18

2 Trabalhos relacionados

O primeiro pesquisador a propor o uso de pontos como primitiva graacutefica foi

Levoy em [4] Ele propotildee o uso de pontos como primitiva de renderizaccedilatildeo e

discute a conversatildeo dos outros modelos para o modelo por pontos

Nos uacuteltimos anos vaacuterios trabalhos importantes tecircm sido realizados na aacuterea

em diversos segmentos em visualizaccedilatildeo podemos destacar os trabalhos de

Pfister [5] e de Zwicker [6] que usam pontos como primitiva de renderizaccedilatildeo e

com resultados praacuteticos interativos muito bons

Em [7] Pauly et al propotildeem algoritmos para modelagem multi-resoluccedilatildeo

em modelos por pontos

Os trabalhos de Curless [8] e Rusinkiewicz [9] discutem os meacutetodos de

aquisiccedilatildeo que consistem em obter uma amostragem de pontos da superfiacutecie do

objeto real por meio de equipamentos como por exemplo o scanner 3D

Nas operaccedilotildees booleanas a interseccedilatildeo das superfiacutecies dos modelos

iniciais seraacute parte do modelo resultado e para ser representada corretamente

precisa ser reconstruiacuteda A reconstruccedilatildeo da superfiacutecie tambeacutem eacute usada na

visualizaccedilatildeo de um modelo Um trabalho significativo na aacuterea de reconstruccedilatildeo de

superfiacutecies estaacute em [10] de N Amenta etal Este trabalho apresenta uma

soluccedilatildeo praacutetica com garantias teoacutericas para este problema e uma heuriacutestica para

o tratamento de arestas vivas a questatildeo mais difiacutecil desta aacuterea Um exemplo

de uma aresta viva eacute o encontro de dois planos natildeo coincidentes

Frequumlentemente a interseccedilatildeo citada acima (interseccedilatildeo entre os modelos iniciais)

gera uma aresta viva (seccedilatildeo 4223)

O algoritmo aqui implementado eacute um plugin para o software PointShop 3D

[11] de Zwicker et al software de ediccedilatildeo de modelos com pontos O PointShop

tem seu coacutedigo aberto documentaccedilatildeo e trabalha com plugins Ele permite a

visualizaccedilatildeo e ediccedilatildeo interativa do modelo por pontos Eacute o uacutenico software livre

disponiacutevel com estas caracteriacutesticas Esta implementaccedilatildeo na forma de um plugin

facilitou muito o trabalho pois natildeo foi necessaacuterio implementar a visualizaccedilatildeo do

modelo 3D Aleacutem disso o Pointshop conteacutem tambeacutem um plugin com a

implementaccedilatildeo do meacutetodo de Pauly et al [3] discutido nesta dissertaccedilatildeo A

Trabalhos relacionados 19

execuccedilatildeo dos dois plugins que realizam operaccedilotildees booleanas pocircde ser

comparada

Os trabalhos aqui discutidos satildeo o de Bart Adams e Philip Dutreacute [2] e de

Pauly et al[3] que apresentam meacutetodos diferentes para realizaccedilatildeo de

operaccedilotildees booleanas com pontos Adams e Dutreacute utilizam octrees [1] e Pauly

Kd-Tree [16] e MLS (Moving Least Squares) [18] Estes algoritmos satildeo

discutidos no capiacutetulo 4

O trabalho de Sara F Frisken [12] apresenta um algoritmo para realizar

operaccedilotildees em octree de forma mais eficiente Como estas operaccedilotildees estatildeo

presentes em todo o nosso algoritmo este trabalho certamente oferece uma

forma de otimizaccedilatildeo mas que natildeo foi implementada

Modelagem por Pontos 20

3 Modelagem por Pontos

A computaccedilatildeo graacutefica natildeo lida diretamente com o objeto ou com o

fenocircmeno fiacutesico lida com modelos graacuteficos ou geomeacutetricos Modelos graacuteficos

satildeo estruturas computacionais (abstratas) que capturam aspectos de objetos de

interesse para uma aplicaccedilatildeo como forma cor textura etc Se apenas a forma

ou a geometria do objeto eacute relevante temos modelos geomeacutetricos

Estes modelos satildeo usados em vaacuterias aplicaccedilotildees em computaccedilatildeo graacutefica

como roboacutetica visatildeo computacional simulaccedilotildees realistas anaacutelises estruturais

prototipagem projeto e manufatura de produtos eletromecacircnicos arquitetura

Existem vaacuterios tipos de modelos graacuteficos Esta dissertaccedilatildeo trata de um tipo

muito em voga atualmente que eacute o modelo por pontos

Neste capiacutetulo daremos uma visatildeo geral do modelo por pontos

Introduziremos este modelo e seu processo de criaccedilatildeo Seraacute apresentado o que

eacute um modelo por pontos e o conceito de surfel [5] introduziremos os tipos de

distribuiccedilatildeo dos surfels uma estruturaccedilatildeo aplicada a estes surfels e dados que

eles podem conter As quatro proacuteximas subseccedilotildees (Ideacuteia da representaccedilatildeo

Tipos de distribuiccedilatildeo dos surfels Estrutura de multi-resoluccedilatildeo e Dados que um

surfel pode conter) tratam destes toacutepicos Um modelo por pontos pode ser criado

a partir da conversatildeo de outros tipos de modelagem NURBS por exemplo para

o modelo por pontos ou a partir de um processo de aquisiccedilatildeo Esta uacuteltima forma

de criaccedilatildeo pode ser dividida em duas etapas aquisiccedilatildeo do modelo reconstruccedilatildeo

da superfiacutecie As subseccedilotildees 35 e 36 tratam destas duas etapas

respectivamente A ediccedilatildeo do modelo 3D eacute tratada brevemente na subseccedilatildeo 38

e a sua visualizaccedilatildeo na subseccedilatildeo 37 A apresentaccedilatildeo do processo de aquisiccedilatildeo

(seccedilatildeo 35) eacute baseada no tutorial de W T Correcirca [13] A etapa de ediccedilatildeo 3D

consiste em operaccedilotildees para mudanccedila da cor textura ou forma do modelo Para

esta etapa enfocaremos as operaccedilotildees booleanas que modificam a forma do

modelo ou criam novos modelos

31 Ideacuteia da Representaccedilatildeo

Modelagem por Pontos 21

Figura 1 [20] -Um modelo por pontos e sua visualizaccedilatildeo

Um modelo por pontos representa um objeto atraveacutes de seu contorno Eacute

um tipo de representaccedilatildeo B-Rep (Boundary Representation) [1] Este contorno

consiste em uma superfiacutecie 2D posicionada no espaccedilo 3D Na modelagem por

pontos ela eacute representada por um conjunto de pontos 3D que satildeo uma

amostragem dos (infinitos) pontos que formam a superfiacutecie contiacutenua (Figura 1) A

amostragem pode ser obtida de diversas maneiras Uma delas o processo de

aquisiccedilatildeo progrediu muito nos uacuteltimos anos e este foi um dos fatores que tornou

muito importante o desenvolvimento deste modelo por pontos Outra forma de

gerar amostragem eacute fazer uma conversatildeo de um outro modelo NURBS por

exemplo para o modelo por pontos

Estes pontos satildeo denominados surfels e podem conter aleacutem da posiccedilatildeo

3D outras informaccedilotildees como normal agrave superfiacutecie cor textura raio de alcance A

Figura 2 mostra um conjunto de surfels representando uma superfiacutecie No surfel

em destaque podemos ver o raio de alcance rt e a normal n agrave superfiacutecie

Modelagem por Pontos 22

Figura 2 [5] A superfiacutecie modelada por surfels O surfel em destaque tem raio de alcance

rt e normal n

Como o modelo natildeo armazena qualquer informaccedilatildeo sobre a conexatildeo entre

os surfels a reconstruccedilatildeo da superfiacutecie contiacutenua a partir dele pode exigir

algumas restriccedilotildees na amostragem (seccedilatildeo 36)

32 Tipos de distribuiccedilatildeo dos surfels

Existem dois tipos de distribuiccedilatildeo dos surfels na modelagem por pontos

uniforme e natildeo uniforme Na distribuiccedilatildeo uniforme cada um deles descreve

partes de mesmo tamanho da superfiacutecie Na natildeo uniforme cada surfel armazena

a informaccedilatildeo de seu raio de alcance que eacute o raio do disco que este surfel

representa

A distribuiccedilatildeo uniforme tem a vantagem de ser mais simples e natildeo ser

necessaacuterio armazenar o raio de alcance do disco mas ela apresenta a seguinte

desvantagem se o modelo possui regiotildees com muito detalhe e regiotildees com

pouco detalhe ele teraacute que manter uma alta densidade mesmo nas regiotildees de

poucos detalhes

33 Estrutura de multi-resoluccedilatildeo

Um objeto pode ser representado em vaacuterios niacuteveis de detalhes Por

exemplo podemos representar um mesmo objeto com vaacuterias resoluccedilotildees

diferentes Este conceito pode ser aplicado ao modelo por pontos Desta forma

um modelo eacute representado por uma estrutura hieraacuterquica (uma aacutervore por

exemplo) onde em cada niacutevel temos uma representaccedilatildeo do objeto em uma

Modelagem por Pontos 23

determinada resoluccedilatildeo Em [7] Pauly et al propotildeem algoritmos para modelagem

multi-resoluccedilatildeo em modelos por pontos

34 Dados que um surfel pode conter

Cada surfel armazena sua localizaccedilatildeo e pode tambeacutem conter informaccedilotildees

como a cor ou coordenadas de textura Se a amostragem natildeo for uniforme o

surfel conteacutem a informaccedilatildeo do raio de alcance que eacute o raio de um disco cujo

centro eacute a posiccedilatildeo do surfel O surfel pode tambeacutem conter o vetor normal agrave

superfiacutecie e assim o surfel pode ser visto como um disco orientado A superfiacutecie

tambeacutem pode ser vista como uma superfiacutecie orientada

35 Aquisiccedilatildeo do modelo

Esta introduccedilatildeo sobre aquisiccedilatildeo do modelo aqui apresentada baseia-se no

tutorial de W T Correcirca [13]

O processo de aquisiccedilatildeo consiste em obter uma amostragem de pontos da

superfiacutecie do objeto real por meio de equipamentos como por exemplo o

scanner 3D Eacute uma aacuterea que tem progredido muito nos uacuteltimos anos A

resoluccedilatildeo e a precisatildeo dos equipamentos de aquisiccedilatildeo tecircm melhorado bastante

e o custo deles reduzido de forma significativa Isso possibilita que a aquisiccedilatildeo

de modelos 3D seja usada em aplicaccedilotildees de desenho industrial arte ou em

produtos para a aacuterea de entretenimento O consequumlente maior uso destes

equipamentos criou a necessidade de avanccedilos no tratamento dos seus dados de

saiacuteda que satildeo um conjunto de pontos

Este processo pode ser dividido em trecircs partes [13] aquisiccedilatildeo da

geometria aquisiccedilatildeo da textura e correccedilatildeo de falhas da aquisiccedilatildeo

351 Aquisiccedilatildeo da geometria

Existem vaacuterios meacutetodos de aquisiccedilatildeo da geometria Curless [8] e

Rusinkiewicz [9] classificaram estes meacutetodos em trecircs categorias meacutetodos por

contato transmissatildeo e reflexatildeo

O meacutetodo por contato toca a superfiacutecie do objeto com uma sonda e grava

a posiccedilatildeo Este meacutetodo do qual o Coordinate Measuring Machines (CMMs) eacute

Modelagem por Pontos 24

um exemplo eacute bastante preciso mas eacute muito lento e natildeo adequado a objetos

fraacutegeis

Meacutetodos por transmissatildeo projetam ondas de energia sobre o objeto e

gravam a energia transmitida Por exemplo tomografia computadorizada que

projeta ondas de raio-x sobre o objeto e mede a quantidade de radiaccedilatildeo que

passa atraveacutes dele O resultado eacute um modelo geomeacutetrico de alta resoluccedilatildeo Este

meacutetodo pode captar detalhes do objeto que natildeo satildeo visiacuteveis de fora do objeto

Por outro lado ele eacute caro e arriscado

Meacutetodos por reflexatildeo podem ser oacuteticos ou natildeo-oacuteticos Natildeo-oacuteticos incluem

radares que medem a distacircncia a um objeto enviando microondas ou ondas

sonoras para o objeto e gravando o tempo que a onda gasta para retornar Estes

meacutetodos natildeo satildeo muito precisos nem raacutepidos

Meacutetodos por reflexatildeo oacuteticos podem ser passivos ou ativos Meacutetodos oacuteticos

passivos natildeo interagem com o objeto e incluem teacutecnicas de visatildeo computacional

como shape-from-shading stereo triangulation optical flow e meacutetodos de

decomposiccedilatildeo para video streams Estes meacutetodos raramente constroem

modelos precisos e sua maior aplicaccedilatildeo eacute em reconhecimento de objetos

Meacutetodos oacuteticos ativos projetam luz sobre um objeto de maneira estruturada

e atraveacutes da reflexatildeo da luz determinam a forma do objeto Exemplos satildeo depth

from defocus photometric stereo projected-light triangulation time of flight

Meacutetodos por reflexatildeo oacuteticos ativos tecircm muitas vantagens sobre os passivos tecircm

um melhor desempenho quando natildeo existe textura satildeo mais baratos e mais

robustos e produzem uma amostragem precisa

352 Aquisiccedilatildeo da textura

Idealmente noacutes gostariacuteamos de ter uma completa descriccedilatildeo de como um

ponto da superfiacutecie reflete a luz dependendo do vetor normal a esta superfiacutecie

da direccedilatildeo do raio de luz incidente e do comprimento de onda Tal descriccedilatildeo eacute

conhecida como Bidirectional Reflectance Distribution Function (BRDF) Medir

BRDFs com precisatildeo eacute um problema difiacutecil

Pode-se ter uma aproximaccedilatildeo da aquisiccedilatildeo de cores do objeto tirando

fotos dele O objeto eacute fotografado e a cor de cada ponto da superfiacutecie eacute obtida a

partir de um mapeamento das fotos 2D para o modelo 3D Para mapear a

fotografia agrave geometria precisamos conhecer os paracircmetros de projeccedilatildeo da

cacircmera e a sua posiccedilatildeo no momento em que a foto foi batida Para cada ponto

Modelagem por Pontos 25

3D do modelo encontramos sua projeccedilatildeo 2D no plano da cacircmera e associamos

a cor do pixel nesta projeccedilatildeo agrave cor do ponto 3D

353 Correccedilatildeo das falhas da aquisiccedilatildeo

O processo de aquisiccedilatildeo deixa frequumlentemente buracos no modelo devido

a ruiacutedos no processo ou agrave impossibilidade de aquisiccedilatildeo de determinadas partes

de uma superfiacutecie Estes buracos devem ser corrigidos Pode-se usar por

exemplo um filtro de passa-baixa para remoccedilatildeo de ruiacutedos [14] Meacutetodos de

difusatildeo geomeacutetrica tecircm sido aplicados para preenchimento dos buracos [15] A

correccedilatildeo das falhas eacute tida como um preacute-processamento para o processo de

reconstruccedilatildeo da superfiacutecie contiacutenua (seccedilatildeo 36)

36 Reconstruccedilatildeo da superfiacutecie (contiacutenua) a partir do modelo (discreto)

A reconstruccedilatildeo da superfiacutecie contiacutenua consiste em a partir de um conjunto

natildeo estruturado de pontos obter um modelo contiacutenuo desta superfiacutecie Esta

reconstruccedilatildeo eacute frequumlentemente exigida para um modelo por pontos Na sua

visualizaccedilatildeo podemos desejar focar qualquer parte do modelo Para fazermos

operaccedilotildees booleanas com os modelos podemos querer determinar exatamente

onde eles se intersectam

No entanto natildeo precisamos ter necessariamente a representaccedilatildeo contiacutenua

de todo o objeto ao mesmo tempo A reconstruccedilatildeo desta superfiacutecie a partir dos

pontos amostrados pode ser feita no momento que for mais adequado agrave

aplicaccedilatildeo Na visualizaccedilatildeo a reconstruccedilatildeo pode ser feita na projeccedilatildeo 2D da

parte do modelo em foco (seccedilatildeo 37) Para operaccedilotildees booleanas pode-se

reconstruir apenas a aacuterea da interseccedilatildeo dos modelos

Este processo de reconstruccedilatildeo de superfiacutecie tem sido muito estudado em

modelagem geomeacutetrica e geometria computacional nos uacuteltimos anos O trabalho

mais importante desta aacuterea eacute o trabalho de Amenta et al [10] que foi a primeira

soluccedilatildeo com garantias demonstraacuteveis para este problema de reconstruccedilatildeo de

superfiacutecie A seccedilatildeo 44 explica estes conceitos e o trabalho [10] Este trabalho

demonstra que teoricamente para que a reconstruccedilatildeo da superfiacutecie (contiacutenua) a

partir das amostras seja correta a amostragem deve ser adequada Ele usa o

conceito de ldquoEixo Medialrdquo para definir o que eacute uma amostragem adequada

Modelagem por Pontos 26

(seccedilatildeo 44) Em duas dimensotildees os veacutertices de Voronoi de uma amostragem

densa aproximam o ldquoEixo Medialrdquo da amostragem

Por meio deste conceito de Eixo Medial [1016] obtecircm-se paracircmetros

teoacutericos para a definiccedilatildeo de amostragem adequada e baseado neste conceito

o algoritmo apresentado em [10] traz uma soluccedilatildeo praacutetica para o problema

obtendo uma malha poligonal a partir do modelo por pontos

O PointShop 3D [11] software de ediccedilatildeo de modelos por pontos utilizado

nesta pesquisa faz quando necessaacuterio a reconstruccedilatildeo da superfiacutecie Para isso

o PointShop 3D explora a vizinhanccedila local (surfels vizinhos de acordo com suas

posiccedilotildees) Ele usa o conceito de Eixo Medial para justificar seu meacutetodo de

reconstruccedilatildeo da superfiacutecie que na praacutetica apresenta resultados bastante

satisfatoacuterios apesar de teoricamente natildeo ter garantias [16]

37 Visualizaccedilatildeo do modelo

A primeira abordagem para visualizaccedilatildeo de um modelo por pontos foi

construir uma malha de poliacutegonos a partir dos surfels e renderizaacute-la Mas a

construccedilatildeo de malhas a partir dos surfels eacute um processo muito caro e lento

principalmente para modelos complexos Na tentativa de obter uma visualizaccedilatildeo

interativa do modelo por pontos estatildeo sendo estudadas teacutecnicas que utilizam

surfels como primitiva de visualizaccedilatildeo A ideacuteia foi apresentada inicialmente por

Levoy [4]

Figura 3 [21] -Modelo por pontos e sua renderizaccedilatildeo usando Surface Splatting

Modelagem por Pontos 27

O objetivo da renderizaccedilatildeo a partir dos surfels eacute projetaacute-los na tela e

reconstruir as superfiacutecies de forma contiacutenua sem buracos Para que esta

renderizaccedilatildeo seja amplamente utilizada deve-se ter cuidado com o uso de

memoacuteria e com a qualidade da imagem gerada Teacutecnicas recentes como Surface

Splatting [6] faz a renderizaccedilatildeo interativamente com qualidade (Figura 3)

comparada a outros meacutetodos de renderizaccedilatildeo como Image Based Rendering

Em geral a visualizaccedilatildeo do modelo por pontos pode ser dividida nas seguintes

etapas

- warping - projeccedilatildeo em perspectiva de cada ponto do modelo na tela

processo anaacutelogo agrave projeccedilatildeo de veacutertices dos triacircngulos na malha triangular Se

um pixel da tela estiver contido em mais de uma projeccedilatildeo de surfels (vizinhos)

ou seja mais de um ponto cobre este pixel os atributos destes pontos seratildeo

combinados

- shading por ponto - o processo de shading eacute realizado para cada ponto

visiacutevel (os pontos que natildeo satildeo vistos do ponto de vista em questatildeo devem ser

retirados) Qualquer modelo local de shading pode ser aplicado Uma nova

teacutecnica foi proposta em Surface Splatting [6]

- reconstruccedilatildeo da imagem ndash pixels que natildeo ldquoreceberamrdquo projeccedilatildeo de

nenhum ponto formam buracos na imagem Esta imagem deve ser reconstruiacuteda

sem buracos sem aliasing e as superfiacutecies devem ser reconstruiacutedas de forma

contiacutenua e devem ser ldquosuavizadasrdquo (smooth surface)

Os algoritmos de renderizaccedilatildeo por pontos podem tratar a questatildeo de

buracos na visualizaccedilatildeo de trecircs formas [17]

Detecccedilatildeo e preenchimento de buracos no espaccedilo da tela pontos satildeo

projetados na tela e pixels que natildeo receberam pontos satildeo detectados (buracos)

Para preencher estes buracos que natildeo receberam pontos eacute feita uma

interpolaccedilatildeo entre os vizinhos

Geraccedilatildeo de mais pontos a superfiacutecie eacute interpolada no espaccedilo do modelo

para garantir que todos os pixels recebam pelo menos a projeccedilatildeo de um ponto

Splatting um surfel eacute projetado na tela e sua contribuiccedilatildeo eacute espalhada de

forma diferenciada para os pixels vizinhos Agrave medida em que o vizinho se torna

mais distante a contribuiccedilatildeo do surfel diminui

Raumlsaumlnen faz uma analogia do processo de renderizaccedilatildeo proposto em [6]

com o mapeamento de textura [15] No mapeamento de textura para um

determinado pixel da tela satildeo encontrados os pontos da textura que afetam este

Modelagem por Pontos 28

pixel Num sentido inverso em splatting para um determinado surfel (que

representa a textura) satildeo encontrados os pixels da tela que este surfel afeta

38 Ediccedilatildeo do modelo

Ediccedilatildeo de um modelo 3D consiste em operaccedilotildees que modificam

caracteriacutesticas deste modelo como cor textura forma ou criam novos modelos

O software PointShop 3D [11] software de ediccedilatildeo de modelos por pontos 3D

implementa vaacuterias destas operaccedilotildees (ver seccedilatildeo 52)

Para modificar a forma de um modelo ou criar um novo satildeo muito usadas

as operaccedilotildees booleanas que eacute o nosso enfoque nesta dissertaccedilatildeo Na

modelagem CSG (Constructive Solid Geometry) as operaccedilotildees booleanas satildeo

usadas juntamente com primitivas soacutelidas para definir um modelo No entanto

em alguns tipos de modelos estas operaccedilotildees satildeo difiacuteceis como por exemplo

em malhas poligonais Com pontos elas podem ser feitas interativamente [32]

Operaccedilotildees Booleanas com Pontos 29

4 Operaccedilotildees Booleanas com Pontos

Operaccedilotildees booleanas satildeo as operaccedilotildees de uniatildeo interseccedilatildeo e diferenccedila

definidas na teoria matemaacutetica de conjuntos Estas operaccedilotildees satildeo aplicadas em

modelos soacutelidos para alteraacute-los ou para criar novos modelos A Figura 4 abaixo

mostra a criaccedilatildeo de trecircs novos modelos a partir de quatro modelos iniciais

Figura 4 [22] Trecircs modelos novos foram criados a partir dos quatro iniciais (esfera

cilindro dois cubos) O primeiro eacute a esfera menos um cubo em seguida retirou-se outro

cubo e por uacuteltimo retirou-se o cilindro

Estas operaccedilotildees satildeo aplicadas em objetos modelados por pontos em dois

trabalhos no trabalho de Bart Adams e Philip Dutreacute [2] e no trabalho de Pauly

et Al [3] Neste capiacutetulo a seccedilatildeo 41 apresenta a parte comum aos dois

trabalhos e as seccedilotildees 42 e 43 apresentam as particularidades de cada um A

seccedilatildeo 44 discute uma questatildeo natildeo explicitada em nenhum dos dois trabalhos

41 Meacutetodos para realizar operaccedilotildees booleanas em objetos modelados por pontos

A Figura 5 mostra o resultado do meacutetodo de Adams[2] operaccedilotildees de

uniatildeo diferenccedila e interseccedilatildeo de objetos soacutelidos 3D modelados por pontos

Operaccedilotildees Booleanas com Pontos 30

Figura 5 [2]-A partir de dois modelos por pontos uma heacutelice e uma cabeccedila as trecircs operaccedilotildees booleanas satildeo mostradas da esquerda para a direita uniatildeo diferenccedila e interseccedilatildeo

Sejam A e B objetos 3D soacutelidos modelados por pontos Definem-se os

seguintes elementos

Af ndash superfiacutecie (contorno) de A que estaacute fora de B

Ad ndash superfiacutecie (contorno) de A que estaacute dentro de B

Bf ndash superfiacutecie (contorno) de B que estaacute fora de A

Bd ndash superfiacutecie (contorno) de B que estaacute dentro de A

O resultado da operaccedilatildeo booleana entre A e B seraacute um modelo C cuja

superfiacutecie de contorno pode ser determinada pela seguinte regra [2] que aqui

chamamos de Regra 1

Regra 1 A U B Af + Bf

A cap B Ad + Bd

A ndash B Af + Bd (com a orientaccedilatildeo invertida)

B ndash A Ad (com a orientaccedilatildeo invertida) + Bf

A Figura 6 mostra as operaccedilotildees com dois modelos A e B

(a) (b)

Operaccedilotildees Booleanas com Pontos 31

(c) (d)

Figura 6 [22] (a) Dois modelos A e B (b) Posicionados de forma que A tem

uma parte dentro de B eacute mostrado o resultado A U B Af + Bf (c) Resultado de A ndash B Af

+ Bd (d) Resultado de A cap B Ad + Bd

Bart [2] e Pauly [3] apresentam dois meacutetodos para determinar os

elementos acima Estes dois meacutetodos satildeo construiacutedos a partir dos seguintes

conceitos os elementos Af Ad Bf Bd satildeo uma parte da superfiacutecie modelada por

pontos e portanto satildeo conjuntos de surfels Para determinaacute-los eacute necessaacuteria

entatildeo a classificaccedilatildeo de um surfel (que pode se resumir agrave classificaccedilatildeo de um

ponto que eacute o seu centro) de uma superfiacutecie como dentro ou fora de um outro

modelo Os dois meacutetodos utilizam a seguinte regra para esta classificaccedilatildeo aqui

denominada Regra 2

Regra 2 Dado um ponto x qualquer um volume V determinado por uma superfiacutecie

de contorno S uma amostragem P da superfiacutecie S um ponto p є P que eacute a

amostra mais proacutexima a x um vetor np normal agrave S em p e orientado para fora de

S temos que

(x ndash p) np gt 0 x notinV

Ou seja para classificar um ponto em relaccedilatildeo a um modelo verificamos o

produto interno entre a normal em p (surfel mais proacuteximo a x) e o vetor (x - p)

se este produto interno for maior que zero x natildeo pertence ao volume V e seraacute

classificado como fora senatildeo seraacute classificado como dentro De maneira

ainda mais informal se a normal em p apontar para a direccedilatildeo oposta a x x seraacute

classificado como dentro se apontar para x x seraacute classificado como fora

A Figura 7 mostra a Regra 2

Operaccedilotildees Booleanas com Pontos 32

Figura 7 Para classificar o ponto x encontra-se o surfel p (com normal np) mais proacuteximo

a x Se o produto interno entre np e (x ndash p) for maior que zero entatildeo x eacute classificado como

fora senatildeo seraacute classificado como dentro

A validade da Regra 2 eacute discutida na Seccedilatildeo 44 Uma das restriccedilotildees

teoacutericas para garantir-lhe a validade eacute que a superfiacutecie seja suave

Cada um dos dois meacutetodos daacute um tratamento diferente para o uso desta

regra Pauly usa a regra diretamente encontrando o surfel mais proacuteximo a um

ponto e classificando este ponto a partir deste surfel Ele utiliza tambeacutem a

representaccedilatildeo impliacutecita MLS (Moving Least Squares [18]) para casos em que a

Regra 2 poderia falhar e para tratamento de interseccedilotildees [3] Seu meacutetodo vale

para modelos soacutelidos ou natildeo soacutelidos O meacutetodo de Adams e Dutreacute [2] utiliza

octrees [1] criando uma classificaccedilatildeo dos noacutes da octree a partir desta Regra 2

Os pontos satildeo entatildeo classificados de acordo com o noacute da octree que o conteacutem

Este segundo meacutetodo aplica-se somente a modelos soacutelidos Os dois meacutetodos

seratildeo descritos em detalhes nas seccedilotildees abaixo

Como um surfel eacute considerado um disco podemos dizer que surfels de

dois modelos diferentes podem se intersectar A interseccedilatildeo destes dois surfels

corresponde agrave interseccedilatildeo destes dois discos Estes surfels geram problemas

para visualizaccedilatildeo se forem acrescentados ao resultado sem um tratamento

especiacutefico apresentaratildeo artefatos natildeo desejaacuteveis na renderizaccedilatildeo do modelo

resultado (Figura 8) se natildeo forem acrescentados ao resultado deixaratildeo buracos

no modelo

Operaccedilotildees Booleanas com Pontos 33

Figura 8 [2] -Interseccedilatildeo de duas esferas agrave esquerda sem nenhum tratamento de interseccedilatildeo agrave direita apoacutes o tratamento de interseccedilatildeo

Aleacutem disso nem sempre esta interseccedilatildeo forma uma superfiacutecie suave

Esta interseccedilatildeo pode formar uma aresta viva (seccedilatildeo 4223) gerando

problemas tambeacutem para o uso da Regra 2 que eacute vaacutelida apenas para superfiacutecies

suaves Eacute necessaacuterio entatildeo fazer um tratamento desta superfiacutecie de interseccedilatildeo

(formada por surfels originados de diferentes modelos) O tratamento de cada

um dos meacutetodos para este caso seraacute tambeacutem abaixo apresentado

42 Meacutetodo de Adams e Dutreacute

O meacutetodo aplica-se somente a modelos soacutelidos Para determinaccedilatildeo dos

elementos da aqui chamada Regra 1 (seccedilatildeo 41) este meacutetodo utiliza uma octree

[1] que subdivide o espaccedilo do modelo em trecircs fora dentro ou no contorno do

modelo Estes espaccedilos satildeo determinados pela classificaccedilatildeo dos noacutes da octree a

partir da Regra 2 Tambeacutem eacute usado o meacutetodo TINN - Triangle Inequality Nearest

Neighbour [19] - para otimizar a pesquisa dentro do noacute A seguir descrevemos o

modelo usado neste meacutetodo apresentando os dados associados aos pontos o

tipo de distribuiccedilatildeo e o algoritmo que realiza as operaccedilotildees

421 Modelo por Pontos em Adams e Dutreacute

Os surfels neste meacutetodo contecircm as seguintes informaccedilotildees posiccedilatildeo do

surfel xs orientaccedilatildeo do surfel ns e raio de alcance do surfel rs O surfel pode ser

pensado como um disco ortogonal a ns com centro xs e raio rs O raio eacute

escolhido de tal forma que a projeccedilatildeo dos discos no plano da imagem se

sobreponham

Operaccedilotildees Booleanas com Pontos 34

Os objetos representados satildeo soacutelidos A distribuiccedilatildeo dos surfels eacute

uniforme embora o algoritmo natildeo exija esta condiccedilatildeo Para cada soacutelido eacute

definido um rmax = Max rs o raio de alcance do maior surfel pertencente agrave

superfiacutecie do soacutelido Como o raio eacute escolhido de tal forma que a projeccedilatildeo dos

discos no plano da imagem se sobreponham o controle da amostragem eacute

entatildeo ligado agrave renderizaccedilatildeo

422 Algoritmo de Operaccedilotildees Booleanas

Utilizando objetos modelados da forma descrita acima o meacutetodo realiza

operaccedilotildees de uniatildeo interseccedilatildeo e diferenccedila com modelos soacutelidos Supondo dois

modelos soacutelidos S1 e S2 O algoritmo pode ser dividido nas seguintes etapas

Criaccedilatildeo de uma octree para cada modelo Teste Dentro-Fora Tratamento da

interseccedilatildeo Estas etapas satildeo apresentadas nas proacuteximas seccedilotildees

4221 Criaccedilatildeo de uma octree para cada modelo

Eacute criada uma octree [1] para cada modelo A criaccedilatildeo de uma octree eacute feita

da seguinte forma

Gera-se a ldquoCaixa envolventerdquo caixa alinhada com os eixos que conteacutem

todo o modelo A ldquoCaixa envolventerdquo corresponde ao noacute raiz da octree Este noacute

conteacutem inicialmente todos os surfels do modelo Em seguida o noacute raiz eacute

dividido em oito noacutes filhos Os surfels satildeo distribuiacutedos entre estes oito noacutes Cada

um deles caso contenha surfels eacute dividido novamente em 8 filhos e seus surfels

satildeo redistribuiacutedos entre eles Este processo eacute repetido recursivamente enquanto

o nuacutemero de surfels do noacute for maior que zero ou ateacute uma profundidade maacutexima

preacute-definida da octree ser alcanccedilada

Cada noacute da octree deve ser classificado O objetivo desta classificaccedilatildeo eacute

determinar que parte da octree estaacute dentro do modelo e que parte estaacute fora Os

noacutes da octree satildeo entatildeo classificados como ldquodentrordquo ldquoforardquo e ldquocontornordquo

Podemos ilustrar esta classificaccedilatildeo em 2D a Figura 9 mostra uma quadtree

classificada

Operaccedilotildees Booleanas com Pontos 35

Figura 9-Um objeto representado por pontos com suas normais e sua quadtree correspondente classificada os noacutes cinza claro estatildeo dentro do modelo noacutes cinza mais escuro estatildeo fora do modelo e noacutes com cinza intermediaacuterio satildeo noacutes cheios noacutes que conteacutem pontos

O noacutes que conteacutem surfels satildeo classificados como ldquocontornordquo Para

classificar um noacute vazio existem trecircs casos

o noacute vazio tem apenas um vizinho-irmatildeo natildeo vazio

o noacute vazio tem mais de um vizinho-irmatildeo natildeo vazio

o noacute vazio natildeo tem vizinhos-irmatildeos natildeo vazios

No primeiro caso o noacute vazio eacute classificado pelo seu vizinho natildeo vazio No

segundo caso considera-se qualquer um dos vizinhos natildeo vazios No terceiro

caso classifica-se primeiro os noacutes vizinhos e eacute dada a mesma classificaccedilatildeo para

o noacute vazio Como cada noacute natildeo folha de uma octree tem pelo menos um noacute filho

natildeo vazio sempre pode ser feita a classificaccedilatildeo dos noacutes vazios A classificaccedilatildeo

eacute feita da seguinte forma dentre os surfels do vizinho-irmatildeo escolhido encontra-

se o surfel mais proacuteximo ao noacute a ser classificado Se a normal deste surfel

aponta para o noacute vazio a ser classificado entatildeo ele eacute classificado como ldquoforardquo

Se a normal aponta no sentido contraacuterio entatildeo ele eacute classificado como ldquodentrordquo

De maneira mais formal sejam cv e cc coordenadas dos centros do noacute vazio e

do noacute contorno respectivamente Seja s o surfel mais proacuteximo ao noacute vazio e ns

a normal em s Se ( cv - cc )٠ ns gt 0 ( produto interno entre a normal em s e o

vetor cv - cc for maior que zero ) o noacute vazio seraacute classificado como ldquoforardquo

Senatildeo seraacute classificado como ldquodentrordquo

Em geral os noacutes ldquocontornordquo satildeo subdivididos em trecircs partes uma que estaacute

fora do modelo uma que estaacute dentro do modelo e uma terceira que conteacutem os

surfels Esta subdivisatildeo eacute feita por meio da criaccedilatildeo de dois planos paralelos que

Operaccedilotildees Booleanas com Pontos 36

dividem o noacute Para determinar estes planos calcula-se o vetor nm igual agrave

meacutedia das normais dos surfels do noacute nm = sum ns sum ns onde ns eacute a normal de

cada surfel do noacute

Em seguida encontra-se o surfel com maior produto interno entre a sua

normal e a normal meacutedia d1=Max(nm ٠ ns) Este surfel juntamente com a normal

meacutedia define um dos planos Encontra-se tambeacutem o surfel com menor produto

interno entre a sua normal e a normal meacutedia d2=Min(nm ٠ ns) Este surfel

juntamente com a normal meacutedia define o outro plano A Figura 10 mostra a

divisatildeo de um noacute de uma quadtree nas trecircs partes dentro do modelo fora do

modelo e no ldquocontornordquo

Esta subdivisatildeo aplica-se apenas a noacutes que conteacutem surfels cujas direccedilotildees

natildeo variem em mais de 90 graus Caso isso ocorra ele natildeo seraacute subdividido Ou

seja se um noacute possuir dois vetores normais (de dois surfels diferentes) que

formem um acircngulo maior que 90 graus ele natildeo seraacute subdividido

Figura 10 [2] -Divisatildeo de noacute de contorno a parte agrave esquerda estaacute fora do modelo a parte agrave direita estaacute dentro do modelo e a faixa intermediaacuteria conteacutem os surfels

4222 Teste Dentro-Fora

O Teste Dentro-Fora faz a classificaccedilatildeo dos surfels de um modelo como

ldquodentrordquo ou ldquoforardquo de outro modelo Portanto aplicaremos este mesmo teste duas

vezes uma para o modelo S1 em relaccedilatildeo ao modelo S2 e outra para S2 em

relaccedilatildeo a S1 Vamos mostrar o teste Dentro-Fora para o caso da classificaccedilatildeo

dos surfels do modelo S1 em relaccedilatildeo a S2

Operaccedilotildees Booleanas com Pontos 37

No item anterior foram criadas duas octrees uma para o modelo S1 e

outra para o modelo S2 Chamemos de A e B as octrees de S1 e S2

respectivamente Para classificar S1 em relaccedilatildeo a S2 inicialmente eacute feita uma

avaliaccedilatildeo da posiccedilatildeo de A em relaccedilatildeo a B A e B podem estar nas seguintes

situaccedilotildees

- A natildeo intersecta B

- A intersecta apenas noacutes ldquoforardquo de B

- A intersecta apenas noacutes ldquodentrordquo de B

- A intersecta noacutes ldquoforardquo e noacutes ldquodentrordquo de B

Para testar estas situaccedilotildees os noacutes satildeo aumentados de rmax o raio do

maior surfel do modelo soacutelido Isto eacute feito para compensar o fato de que o surfel

natildeo eacute apenas um ponto mas sim considerado como um disco

No primeiro e no segundo caso todos os surfels de A satildeo classificados

como ldquoforardquo No terceiro caso todos os surfels de A satildeo classificados como

ldquodentrordquo

No quarto caso temos que percorrer a octree A Comeccedilando pelo noacute raiz

percorre-se os filhos deste noacute Para cada filho os quatro testes acima satildeo feitos

Se o noacute filho encontra-se em um dos trecircs primeiros casos a classificaccedilatildeo eacute dada

como foi citada acima Se um filho estaacute no quarto caso e natildeo eacute um noacute folha

repete-se recursivamente o mesmo procedimento para seus filhos ateacute encontrar-

se um noacute folha Para um noacute que estaacute no quarto caso e eacute folha percorre-se a lista

de surfels que este noacute conteacutem classificando cada um destes surfels Seja sa um

surfel desta lista Para este caso percorre-se a octree B para classificar sa

Primeiramente encontramos o noacute de B que conteacutem sa Se este noacute de B foi

dividido testa-se de acordo com esta divisatildeo do noacute se o surfel sa estaacute na parte

do noacute que estaacute dentro do modelo ele eacute classificado como ldquodentrordquo se sa estaacute na

parte que estaacute fora do modelo ele eacute classificado como ldquoforardquo se sa estaacute na parte

intermediaacuteria ou se o noacute de B natildeo foi subdividido em planos encontra-se sb que

eacute o surfel pertencente a este noacute de B que estaacute mais proacuteximo de sa sa seraacute

entatildeo classificado de acordo com sb Se ( sa - sb )٠ nb gt 0 sa eacute classificado

como ldquoforardquo senatildeo eacute classificado como ldquodentrordquo Se os discos de sb e sa se

intersectam sa eacute marcado como interseccedilatildeo Para encontrar sb o algoritmo

implementa o meacutetodo TINN ndash Triangle Inequality Nearest Neighbour [19]

Operaccedilotildees Booleanas com Pontos 38

4223 Tratamento da interseccedilatildeo

Os surfels de A que intersectam surfels de B satildeo classificados como

ldquointerseccedilatildeordquo Se eles natildeo forem incluiacutedos no modelo resultado o soacutelido resultado

teraacute buracos Se eles forem incluiacutedos sem algum tratamento eles natildeo

representaratildeo adequadamente a regiatildeo Em geral o surfel sa (um surfel

ldquointerseccedilatildeordquo de A) eacute dividido em dois pelo plano que conteacutem o surfel sb (surfel de

B que sa intersecta) uma parte que estaacute fora de B e outra que estaacute dentro de B

Dependendo da operaccedilatildeo que estaacute sendo realizada vamos querer manter uma

destas partes do surfel sa no modelo resultado Seja xa a posiccedilatildeo do surfel sa e o

surfel sa uma circunferecircncia de centro xa e raio ra igual ao raio de alcance de sa

O plano que conteacutem o surfel sb define uma corda desta circunferecircncia como

mostra a Figura 11 O surfel sa seraacute substituiacutedo por um surfel menor que

ultrapassa esta corda de uma distacircncia e definida pelo usuaacuterio Para cobrir

completamente a interseccedilatildeo seratildeo adicionados surfels menores que cruzam a

corda de interseccedilatildeo

Figura 11 -Interseccedilatildeo do surfel s e do plano que passa pelo surfel t o surfel mais proacuteximo a s O surfel s eacute substituiacutedo por trecircs surfels menores

Operaccedilotildees Booleanas com Pontos 39

O tratamento de interseccedilatildeo proposto por Adams e Dutreacute [2] natildeo soacute evita

os buracos mas tambeacutem cria uma forma de renderizaccedilatildeo de arestas vivas A

colocaccedilatildeo de vaacuterios pequenos surfels na regiatildeo da interseccedilatildeo permite esta

correta renderizaccedilatildeo das ldquoarestas vivasrdquo Desta forma o problema das arestas

vivas eacute resolvido na modelagem (Figura 12) A vantagem de se resolver o caso

na modelagem eacute que natildeo eacute necessaacuterio fazer um tratamento especial na

renderizaccedilatildeo para que mostre esta aresta viva Diferente do tratamento feito

em Pauly (seccedilatildeo 431) que resolve esta questatildeo em tempo de renderizaccedilatildeo

Aleacutem disso o tratamento resolve alguns casos onde a Regra 2 poderia falhar

(veja em Validade da Regra 2-seccedilatildeo 44)

Figura 12 [2] -Agrave direita eacute mostrado o resultado do tratamento de interseccedilatildeo para o caso de Arestas Vivas do objeto agrave esquerda

43 Meacutetodo de Pauly

O meacutetodo aplica-se a objetos soacutelidos e natildeo soacutelidos Os modelos podem ser

obtidos a partir de diferentes entradas como nuvem de pontos irregulares ou por

meio de scanners 3D Cria um modelo hiacutebrido destes objetos usa o modelo por

pontos juntamente com a representaccedilatildeo impliacutecita Moving Least Squares - MLS

[18] Realiza operaccedilotildees booleanas com pontos e utiliza adicionalmente MLS

para alguns casos de classificaccedilatildeo de surfels e no tratamento de interseccedilatildeo A

seguir apresentamos as caracteriacutesticas do modelo por pontos deste meacutetodo e o

algoritmo que realiza as operaccedilotildees

Operaccedilotildees Booleanas com Pontos 40

431 Modelo em Pauly

O modelo eacute uma estrutura hiacutebrida de pontos com a representaccedilatildeo impliacutecita

Moving Least Squares - MLS [18] Esta estrutura eacute usada para fazer operaccedilotildees

booleanas e tambeacutem operaccedilotildees de free-form (natildeo abordadas nesta

dissertaccedilatildeo) Para operaccedilotildees booleanas a representaccedilatildeo MLS permite que a

curva de interseccedilatildeo entre os modelos seja reconstruiacuteda e surfels sejam

colocados nesta curva e em alguns casos de classificaccedilatildeo de surfels mostrados

na seccedilatildeo 432 Para este modelo natildeo existem restriccedilotildees quanto agrave forma do

objeto

Os surfels contecircm informaccedilotildees sobre sua posiccedilatildeo e sua normal Aleacutem

disso surfels podem conter informaccedilotildees adicionais como textura cor

propriedades de materiais

A distribuiccedilatildeo dos surfels eacute natildeo-uniforme e a amostragem eacute

aproximadamente adequada (Veja seccedilatildeo 44)

432 Algoritmo de Operaccedilotildees Booleanas

O algoritmo classifica surfels de um modelo como ldquodentrordquo ou ldquoforardquo de

outro modelo Antes de colocarmos como eacute feita esta classificaccedilatildeo devemos

acrescentar que Pauly estende esta classificaccedilatildeo para modelos que natildeo satildeo

soacutelidos Ou seja mesmo um modelo natildeo soacutelido divide o espaccedilo da cena (espaccedilo

em que se encontra o modelo) em dois sub-espaccedilos dentro ou fora do modelo

Pauly faz esta subdivisatildeo da seguinte forma

Como a superfiacutecie que determina o modelo eacute orientada (conteacutem vetores

normais agrave superfiacutecie que apontam para ldquoforardquo do modelo) Pauly considera que

um modelo natildeo soacutelido divide o espaccedilo em dois sub-espaccedilos um ldquoforardquo do

modelo (os vetores normais apontam para este sub-espaccedilo) e um que estaacute

ldquodentrordquo do modelo (os vetores normais apontam para direccedilatildeo oposta a este sub-

espaccedilo) Por exemplo um plano eacute representado como um conjunto de surfels

contidos num determinado espaccedilo geomeacutetrico plano π Cada surfel conteacutem um

vetor normal direcionado Este modelo divide entatildeo o espaccedilo em dois sub-

espaccedilos o sub-espaccedilo que eacute apontado por estes surfels (considerado ldquoforardquo do

modelo) e o sub-espaccedilo que estaacute na direccedilatildeo oposta (considerado ldquodentrordquo do

modelo) Desta forma ele aplica as classificaccedilotildees de ldquodentrordquo e ldquoforardquo de um

modelo tambeacutem a modelos natildeo soacutelidos A partir desta consideraccedilatildeo as

Operaccedilotildees Booleanas com Pontos 41

operaccedilotildees booleanas satildeo realizadas com os modelos natildeo soacutelidos da mesma

forma que com os modelos soacutelidos

Para determinar esta classificaccedilatildeo (dentro ou fora do modelo) Pauly utiliza

a Regra 2 Para pesquisa do surfel mais proacuteximo o meacutetodo usa a estrutura Kd-

tree [16] e tambeacutem o algoritmo ANN [16] No entanto o meacutetodo apresenta uma

restriccedilatildeo da Regra 2 ela soacute deve ser usada para classificaccedilotildees de pontos x se

a distacircncia x-p for maior que o espaccedilamento da amostragem local ηp em p

Este espaccedilamento da amostragem local ηp em p eacute um caacutelculo aproximado da

distacircncia meacutedia entre os surfels vizinhos a p Se x estaacute muito proacuteximo agrave

superfiacutecie a classificaccedilatildeo pode falhar Neste caso ele calcula o ponto exato de

S mais proacuteximo a x usando a projeccedilatildeo MLS (ldquoMoving Least Squaresrdquo)

Por questotildees de melhoria de desempenho utiliza-se o fato de que sendo

Ωp (x) a classificaccedilatildeo do ponto x em relaccedilatildeo agrave amostragem P tem-se que Ωp (x)

= Ωp (xrsquo) para todos os pontos de xrsquo que estatildeo dentro da esfera de centro x e

raio igual a x-p - ηp (onde p eacute o surfel mais proacuteximo e ηp eacute o espaccedilamento

local da amostragem em p acima citado) Ou seja sendo x um ponto qualquer p

o surfel mais proacuteximo a x ηp eacute o espaccedilamento local da amostragem em p se

desenharmos uma esfera com centro x e raio igual a x-p - ηp temos que

todos os pontos xrsquo que estatildeo dentro da esfera teratildeo a mesma classificaccedilatildeo de x

Desta forma o nuacutemero de vezes que a classificaccedilatildeo eacute feita (pesquisando-se o

surfel mais proacuteximo ao ponto e usando a Regra 2) diminui em ateacute 90 Assim

em geral a classificaccedilatildeo de um surfel eacute obtida a partir do seu surfel vizinho

Dados

S1 a superfiacutecie MLS de contorno que define o modelo A

S2 a superfiacutecie MLS de contorno que define o modelo B

P1 o conjunto de surfels que representa a superfiacutecie S1

P2 o conjunto de surfels que representa a superfiacutecie S2

Ωp1 (x) a classificaccedilatildeo do ponto p em relaccedilatildeo a uma amostragem P1

Q1 o subconjunto de P1 que vai compor o resultado

Ωp2 (x) a classificaccedilatildeo do ponto p em relaccedilatildeo a uma amostragem P2

Q2 o subconjunto de P2 que vai compor o resultado

Os conjuntos Q1 e Q2 satildeo obtidos por meio da Tabela 1 mostrada abaixo

Operaccedilotildees Booleanas com Pontos 42

Tabela 1 Classificaccedilatildeo para operaccedilotildees booleanas

Para o tratamento de interseccedilatildeo neste meacutetodo satildeo computados pontos

que caem exatamente na curva de interseccedilatildeo e estes satildeo acrescentados ao

modelo resultado Estes pontos satildeo determinados de forma que a densidade da

amostragem vai crescendo agrave medida que os surfels se aproximam da curva de

interseccedilatildeo e convergem para este ponto de interseccedilatildeo como mostra a Figura

13

(a) (b) (c)

Figura 13 - Os novos surfels satildeo colocados exatamente na curva de interseccedilatildeo

e convergem para o ponto de interseccedilatildeo

A Figura 14 mostra o processo de encontrar os surfels que caem nesta

curva de interseccedilatildeo Inicialmente satildeo encontrados todos os pontos de Q1 e Q2

que estatildeo proacuteximos agrave curva de interseccedilatildeo por meio da funccedilatildeo de distacircncia do

operador de projeccedilatildeo MLS Em seguida procura-se todos os pares mais

proacuteximos (q1 є Q1 q2 є Q2 ) e computa-se o ponto q na curva de interseccedilatildeo da

seguinte forma (veja a Figura 14)Seja r o ponto na linha de interseccedilatildeo dos dois

planos tangentes em q1 e q2 e que estaacute mais proacuteximo a estes dois pontos isto eacute

que minimiza a distacircncia ||r-q1|| + ||r-q2|| r eacute a primeira aproximaccedilatildeo de q e agora

pode ser projetado sobre S1 e S2 para obter dois novos pontos de partida q1rsquo e q2

rsquo

para a iteraccedilatildeo Este procedimento pode ser repetido iterativamente ateacute que os

pontos q1 e q2 convirjam ao ponto q na curva de interseccedilatildeo Normalmente este

processo requer menos de trecircs iteraccedilotildees

Operaccedilotildees Booleanas com Pontos 43

(a) (b)

(c)

Figura 14 (a) Suponhamos a reta que eacute a interseccedilatildeo do plano tangente a S1 em q1 e o

plano tangente a S2 em q2 O ponto r eacute o ponto desta reta que estaacute mais proacuteximo a q1 e

q2 (b) r eacute projetado sobre S1 e S2 obtendo-se q1acute e q2acute dois novos pontos de partida

para nova iteraccedilatildeo (c) A nova iteraccedilatildeo gera r que eacute uma aproximaccedilatildeo melhor de q

Pauly faz o tratamento de arestas vivas em tempo de renderizaccedilatildeo Ele

faz uma alteraccedilatildeo no renderizador Marca os surfels de interseccedilatildeo e ao

renderizaacute-los satildeo cortados para gerar uma aresta viva

44 Validade da Regra 2

Os dois meacutetodos analisados nesta dissertaccedilatildeo utilizam a seguinte regra

para a classificaccedilatildeo de um surfel

Regra 2 dado um volume V determinado por uma superfiacutecie de contorno

S uma amostragem P da superfiacutecie S um ponto x qualquer um ponto p є P que

eacute a amostra mais proacutexima a x um vetor ny normal a S em p e orientado para

fora de S temos que (x ndash p) np gt 0 x notinV

Em [16] eacute colocado que esta regra eacute tirada da seguinte propriedade da

geometria diferencial (aqui chamada Propriedade 1)

Propriedade 1 Dado um volume V determinado por uma superfiacutecie de

contorno S contiacutenua e duplamente diferenciaacutevel um ponto x qualquer um ponto

Operaccedilotildees Booleanas com Pontos 44

y є S que eacute o ponto de S mais proacuteximo a x um vetor ny normal a S em y e

orientado para fora de S temos que (x ndash y) ny gt 0 x notinV

A Figura 15 ilustra esta propriedade

Figura 15 Para verificar se o ponto x estaacute fora de um contorno C encontra-se o ponto y

de C Se o produto interno entre a normal em y e o vetor que liga y a x for maior que

zero entatildeo x estaacute fora de C senatildeo estaacute dentro de C

Pauly assume que tendo uma amostragem P da superfiacutecie S podemos

usar a Propriedade 1 substituindo y por p o surfel mais proacuteximo ao ponto x (x ndash

p) np gt 0 x notinV (Regra 2) Esta amostragem P em seu trabalho eacute

(aproximadamente) uma ldquoamostragem adequadardquo Tambeacutem seu tratamento de

interseccedilatildeo cria uma aproximaccedilatildeo dela (seccedilatildeo 43) Empiricamente a

ldquodiscretizaccedilatildeo da propriedaderdquo eacute vaacutelida a partir desta suposiccedilatildeo Mas isso natildeo foi

demonstrado teoricamente em seu trabalho

Pauly coloca em [16] que natildeo existe ainda uma teoria matemaacutetica rigorosa

de amostragem anaacuteloga a teoria de Fourier para superfiacutecies discretas

A melhor aproximaccedilatildeo teoacuterica para esta aacuterea eacute o uso do Eixo Medial que

foi colocado em [10] Vamos descrever este trabalho brevemente nesta seccedilatildeo

Este trabalho apresenta um algoritmo de reconstruccedilatildeo de superfiacutecie que parte de

uma amostragem adequada (abaixo definida) de pontos e obteacutem uma malha

que eacute topologicamente equivalente agrave superfiacutecie do objeto e agrave medida que a

densidade da amostragem cresce a saiacuteda converge para esta superfiacutecie

Para definir amostragem adequada o trabalho parte do conceito de Eixo

Medial

Operaccedilotildees Booleanas com Pontos 45

ldquoEixo Medialrdquo de uma superfiacutecie 2D posicionada no R3 eacute o conjunto

(fechado) de pontos pi para os quais buscando-se o ponto da superfiacutecie que

estaacute mais proacuteximo a pi mais de um ponto pertencentes a esta superfiacutecie satildeo

encontrados A Figura 16 abaixo ilustra o Eixo Medial em 2D

Figura 16 [10] As curvas de cor mais clara satildeo o Eixo Medial da curva em preto

Em duas dimensotildees os veacutertices de Voronoi de uma amostragem densa

aproximam o ldquoEixo Medialrdquo da amostragem (mas esta propriedade natildeo se

estende a 3D) A Figura 17 mostra o Eixo Medial em 3D

Figura 17 [10] Em 3D geralmente o Eixo Medial eacute uma superfiacutecie 2D (em cor mais

clara) Aqui o quadrado eacute o Eixo Medial da superfiacutecie transparente que o contorna

Podemos definir agora a amostragem adequada da seguinte forma

Supondo uma superfiacutecie suave que quer dizer uma 2-manifold duplamente

diferenciaacutevel posicionada no R3 uma ldquoamostragem adequadardquo desta superfiacutecie eacute

aquela na qual a densidade da amostragem eacute (pelo menos) inversamente

proporcional agrave distacircncia ao ldquoEixo Medialrdquo A Figura 18 mostra uma amostragem

adequada

Operaccedilotildees Booleanas com Pontos 46

Figura 18 [10] A figura mostra o diagrama de Voronoi de uma amostragem de pontos S

Da mesma forma que o a amostragem aproxima a curva os veacutertices de Voronoi

aproximam o Eixo Medial

Na praacutetica na reconstruccedilatildeo da superfiacutecie uma aproximaccedilatildeo deste ldquoEixo

Medialrdquo eacute computada (devido agrave dificuldade de computaacute-lo exatamente e em

alguns casos ateacute impossibilidade)

Melhorias Propostas 47

5 Melhorias Propostas

No capiacutetulo 4 apresentamos dois meacutetodos que realizam operaccedilotildees

booleanas em modelos por pontos o meacutetodo de Adams e Dutreacute [2] e o meacutetodo

de Pauly[3] Para esta dissertaccedilatildeo usamos o meacutetodo de Adams e Dutreacute [2] e

propomos as seguintes melhorias

- Alteramos o momento em que eacute feita a classificaccedilatildeo da octree Fazemos

esta classificaccedilatildeo durante a sua criaccedilatildeo Os noacutes filhos de um noacute pai P qualquer

satildeo classificados logo apoacutes a criaccedilatildeo de todos estes filhos de P

independentemente do restante da octree ter sido criada Isso pode ser feito

porque a octree eacute construiacuteda na ordem raiz-esquerda-direita (preorder

traversal) e portanto apoacutes todos os filhos de um noacute pai serem criados a parte

necessaacuteria da octree para a classificaccedilatildeo destes filhos jaacute estaacute criada

- A classificaccedilatildeo da octree eacute otimizada classificando-se os cantos dos seus

noacutes como dentro ou fora do modelo Na classificaccedilatildeo de um noacute n1 a partir de seu

vizinho n2 se os cantos que satildeo comuns a n1 e n2 tiverem a mesma

classificaccedilatildeo esta seraacute dada ao noacute Assim diminuiacutemos o nuacutemero de pesquisas

pelo surfel mais proacuteximo que eacute a parte criacutetica da classificaccedilatildeo dos noacutes da octree

em termos de tempo de processamento

- Acrescentamos um valor miacutenimo (maior que zero) para o nuacutemero de

surfels contidos em um noacute que eacute uma das condiccedilotildees de parada na criaccedilatildeo da

octree Verificamos que desta forma diminui-se a chance de erro na classificaccedilatildeo

de partes criacuteticas como ldquoarestas vivasrdquo

Uma comparaccedilatildeo entre a nossa implementaccedilatildeo e a de Pauly tambeacutem seraacute

feita no capiacutetulo 6

51 Descriccedilatildeo do algoritmo

O algoritmo implementado para esta dissertaccedilatildeo baseado no meacutetodo de

Adams e Dutreacute [2] pode ser dividido nas seguintes partes Criaccedilatildeo e

classificaccedilatildeo de uma octree para cada modelo Teste DentroFora Criaccedilatildeo do

modelo resultado Natildeo foi implementado tratamento especial algum de

interseccedilatildeo para o nosso plugin As proacuteximas seccedilotildees apresentam estas partes

Melhorias Propostas 48

511 Criaccedilatildeo e classificaccedilatildeo de uma octree para cada modelo

As ideacuteias do algoritmo satildeo aqui ilustradas em 2D mas a extensatildeo delas

para 3D eacute feita facilmente

Para cada modelo a octree eacute criada e classificada da seguinte forma

Figura 19-Quadtree classificada Os noacutes mais escuros estatildeo fora do modelo os mais claros dentro e os em tom intermediaacuterio satildeo noacutes de contorno

Gera-se uma ldquocaixa envolventerdquo do modelo contendo todos os surfels e

cria-se o noacute raiz da octree que corresponde a esta ldquocaixa envolventerdquo Este noacute

raiz eacute subdividido em oito filhos e seus surfels satildeo distribuiacutedos entre eles Ao

inveacutes de testarmos os valores de xy e z para cada surfel a fim de determinar

para qual filho ele iraacute utilizamos listas auxiliares Primeiro os surfels satildeo

subdivididos em dois grupos pelos valores de x e armazenados em uma lista

auxiliar Em seguida cada uma das listas eacute subdividida pelo valor de y e as

quatro listas obtidas seratildeo subdivididas pelo valor de z Ao final teremos 8 listas

de surfels cada uma delas pertencente a um filho

Cada noacute seraacute entatildeo novamente subdividido enquanto contiver um nuacutemero

de surfels gt nmin (valor preacute-definido) ou enquanto a profundidade da aacutervore lt pmax

(valor preacute-definido) Na figura 19 pmax = 3 e nmin = 3

Melhorias Propostas 49

Figura 20-O noacute cheio eacute dividido em trecircs partes agrave esquerda a regiatildeo estaacute dentro do modelo agrave direita estaacute fora e entre as duas linhas que dividem o noacute estaacute a regiatildeo que conteacutem os surfels

Os noacutes cheios recebem um tratamento especial Eles satildeo subdivididos em

trecircs partes da seguinte forma uma que estaacute fora do modelo outra que estaacute

dentro e uma que conteacutem os surfels Esta subdivisatildeo eacute feita por meio da criaccedilatildeo

de dois planos paralelos que dividem o noacute Para determinar estes planos

calcula-se o vetor nm igual agrave meacutedia das normais dos surfels do noacute nm = sum ns

sum ns onde ns eacute a normal de cada surfel do noacute Em seguida encontra-se o

surfel com maior produto interno entre a sua normal e a normal meacutedia

d1=Max(nm ٠ ns) Este surfel juntamente com a normal meacutedia define um dos

planos Encontra-se tambeacutem o surfel com menor produto interno entre a sua

normal e a normal meacutedia d2=Min (nm ٠ ns) Este surfel juntamente com a normal

meacutedia define o outro plano (Figura 20) Se o noacute conteacutem surfels de superfiacutecies de

orientaccedilotildees diferentes ele natildeo seraacute subdividido ou seja os planos coincidiratildeo

com os planos que delimitam o proacuteprio noacute Este teste foi implementado da

seguinte forma escolhe-se um surfel qualquer do noacute Calcula-se o produto

interno entre a normal deste surfel e as outras normais dos outros surfels deste

noacute Se algum produto interno for menor que zero este noacute natildeo seraacute subdividido

Apoacutes a etapa de subdivisatildeo classificam-se os oito cantos deste noacute como

dentro ou fora do modelo por meio da classificaccedilatildeo de um ponto que

descreveremos na sub-seccedilatildeo 5111

Melhorias Propostas 50

a b

c d

Figura 21-O noacute a eacute classificado pelo noacute c o noacute d tambeacutem eacute classificado pelo noacute c a classificaccedilatildeo do noacute a eacute propagada para o noacute b

Jaacute os noacutes vazios da octree seratildeo classificados como ldquodentrordquo ou ldquoforardquo do

modelo da seguinte forma cada noacute folha vazio eacute classificado a partir de um de

seus irmatildeos vizinhos adjacentes Se ele possuir um vizinho adjacente cheio ele

seraacute classificado por este vizinho se natildeo possuir os vizinhos adjacentes seratildeo

classificados primeiro e ele teraacute esta mesma classificaccedilatildeo (Figura 21) Como tem

que existir sempre pelo menos um noacute cheio entre os filhos de um noacute pai entatildeo

sempre esta classificaccedilatildeo poderaacute ser feita Com a classificaccedilatildeo de todos os

filhos tem-se tambeacutem a classificaccedilatildeo dos cantos do noacute pai

Mf03c003fmx a b

Figura 22-Os cantos a e b do noacute cheio possuem a mesma classificaccedilatildeo fora do modelo Esta classificaccedilatildeo foi dada ao noacute vazio adjacente

Melhorias Propostas 51

Para classificar um noacute vazio por meio de um noacute cheio verificam-se os

cantos comuns destes dois noacutes se todos os cantos tiverem a mesma

classificaccedilatildeo esta seraacute dada ao noacute vazio (Figura 22) Se houver classificaccedilotildees

diferentes escolhe-se o surfel do noacute cheio mais proacuteximo ao noacute vazio faz-se o

produto interno entre a normal deste surfel e o vetor que liga o centro do noacute

cheio ao centro do noacute vazio (ou o vetor que liga o surfel ao centro do noacute vazio)

Se o produto interno for maior que zero o noacute eacute classificado como ldquoforardquo senatildeo eacute

classificado como ldquodentrordquo Para encontrar o surfel (pertencente a um noacute cheio)

mais proacuteximo ao noacute vazio existem dois casos

- O noacute cheio eacute folha percorre-se toda a lista de surfels e escolhe o surfel

mais proacuteximo da fronteira entre o noacute cheio e o vazio

- O noacute cheio natildeo eacute um noacute folha percorrem-se os filhos do noacute cheio ou seja

esta pesquisa eacute feita descendo na octree a partir do noacute cheio procurando o

surfel mais proacuteximo agrave fronteira do pai com o noacute vazio a ser classificado

Classificando o centro do noacute vazio todo o noacute deve ter a mesma

classificaccedilatildeo pois este noacute natildeo conteacutem surfels Para encontrar o surfel do noacute

vazio mais proacuteximo da fronteira entre o noacute cheio e o vazio basta testar o valor da

coordenada se a fronteira eacute o lado direito do noacute cheio escolhe-se o surfel com

maior coordenada lsquoxrsquo se eacute o lado esquerdo escolhe-se o surfel com menor lsquoxrsquo

se lado superior surfel com maior lsquoyrsquo etc A seguir apresentamos a classificaccedilatildeo

de um ponto qualquer pertencente a um noacute cheio

Figura 23- Quadtree classificada

Melhorias Propostas 52

5111 Classificaccedilatildeo de um ponto de um noacute cheio

Figura 24 [2] A normal n eacute a normal meacutedia e os surfels s1 e s2 juntamente com a normal

n definem as retas que dividem o noacute O ponto a estaacute fora do modelo e o ponto b estaacute

dentro do modelo

Para um ponto localizado dentro do noacute faz-se o seguinte teste se o noacute foi

dividido testa-se de acordo com a divisatildeo do noacute se o ponto estaacute na parte do noacute

que estaacute dentro do modelo ele eacute classificado como ldquodentrordquo se o ponto estaacute na

parte que estaacute fora do modelo ele eacute classificado como ldquoforardquo (Figura 24) se o

ponto estaacute na parte que conteacutem os surfels encontra-se o surfel s pertencente ao

noacute mais proacuteximo do ponto e o classifica de acordo com s seja ns a normal em s

cs a coordenada de s cp a coordenada do ponto Se (cp - cs )٠ ns gt 0 o ponto

seraacute classificado como ldquoforardquo Senatildeo seraacute classificado como ldquodentrordquo

Se o noacute natildeo foi dividido em planos esta classificaccedilatildeo a partir do surfel

mais proacuteximo seraacute sempre feita

512 Teste DentroFora

Melhorias Propostas 53

Figura 25-Duas circunferecircncias e suas quadtrees correspondentes

O Teste DentroFora classifica os surfels de um modelo como dentro ou

fora de outro modelo ou na sua interseccedilatildeo Este teste foi aqui implementado

exatamente como foi proposto em Adams e Dutreacute [2] exceto que natildeo foi

implementado o meacutetodo TINN - Triangle Inequality Nearest Neighbour [19]

Cada octree eacute percorrida verificando-se se os seus noacutes ou surfels estatildeo dentro

fora ou no contorno do outro modelo (Figura 25) Sejam A e B duas octrees e

queremos classificar a octree A As duas octrees (AB) satildeo percorridas partindo

da raiz

Para cada noacute de A existem quatro casos (Figura 26) Para testar estas

situaccedilotildees os boxes dos noacutes satildeo aumentados de rmax o raio do maior surfel do

modelo Isto eacute feito para compensar o fato de que o surfel natildeo eacute apenas um

ponto mas sim considerado como um disco

Os quatro casos satildeo

Se o noacute de A natildeo intersecta B entatildeo todos os surfels deste noacute satildeo

classificados como fora

Se o noacute de A intersecta apenas noacutes de B que estatildeo fora do modelo

todos os surfels deste noacute satildeo fora

Se o noacute de A intersecta apenas noacutes de B que estatildeo dentro do modelo

todos os surfels deste noacute satildeo dentro

Melhorias Propostas 54

Se o noacute de A intersecta noacutes de B que estatildeo dentro e tambeacutem noacutes de B

que estatildeo fora testa-se se este noacute de A eacute ou natildeo folha Se natildeo for folha

percorre-se os filhos deste noacute de A ateacute encontrar um noacute folha cheio que

intersecta B Para cada surfel sa deste noacute folha de A encontra-se o surfel de B

mais proacuteximo e classifica-se a coordenada de sa da forma apresentada na seccedilatildeo

5111 Seja sb o surfel usado na classificaccedilatildeo de sa Se os discos de sb e sa

se intersectam sa eacute classificado como ldquointerseccedilatildeordquo

(a) (b)

(c) (d)

Figura 26- a modelos natildeo se intersectam b modelo intersecta noacutes fora c modelo intersecta apenas noacutes dentro d modelo intersecta noacutes dentro e noacutes fora

513 Criaccedilatildeo do modelo resultado

Um novo modelo eacute criado com os seguintes surfels (de acordo com a

operaccedilatildeo booleana escolhida pelo usuaacuterio - veja Regra 1 da seccedilatildeo 41)

Uniatildeo - surfels de A que estatildeo fora de B + surfels de B que estatildeo fora de A

Melhorias Propostas 55

Interseccedilatildeo - surfels de A que estatildeo dentro de B + surfels de B que estatildeo

dentro de A

Diferenccedila A-B - surfels de A que estatildeo fora de B + surfels de B que estatildeo

dentro de A (com orientaccedilatildeo invertida)

Como natildeo foi implementado tratamento especial algum de interseccedilatildeo para

o nosso plugin os surfels que se intersectam satildeo mantidos no modelo resultado

final sem modificaccedilotildees

Descrito o algoritmo vejamos a seguir a sua implementaccedilatildeo

52 Implementaccedilatildeo

Este algoritmo foi implementado na forma de um plugin para o software

PointShop 3D [11] Este plugin foi desenvolvido na linguagem C e no sistema

operacional Windows

A escolha deste tipo de implementaccedilatildeo permitiu-nos usar o software

PointShop para os testes do algoritmo Estes testes foram feitos com os modelos

disponibilizados para o PointShop [11] Nesta seccedilatildeo apresentaremos o software

PointShop e as principais estruturas de dados usadas em nosso plugin

O Pointshop eacute um software aberto com seu coacutedigo disponiacutevel e preparado

para trabalhar com plugins Eacute um software de ediccedilatildeo de modelos 3D por pontos

Ele permite aleacutem de visualizar o modelo alterar as suas caracteriacutesticas como

cor brilho e fazer mapeamento de textura iluminaccedilatildeo filtragem (Figura 27)

Melhorias Propostas 56

Figura 27-Software PointShop 3D com dois modelos carregados na sua cena

Aleacutem disso pode-se criar uma cena com vaacuterios modelos e visualizaacute-los de

qualquer ponto de vista Implementa o virtual trackball para rotacionaacute-los e

transladaacute-los Usa uma iluminaccedilatildeo simples direcional A sua arquitetura eacute

extensiacutevel permite que o usuaacuterio adicione seus proacuteprios componentes ao

sistema Possui trecircs tipos de componentes

ldquoToolsrdquo fornece funcionalidades para ediccedilatildeo interativa de superfiacutecie Satildeo

disponibilizados na ldquotoolbarrdquo

Plugins fornece funcionalidades para processar em um soacute passo

modelos ou partes deles selecionadas Satildeo disponibilizados no menu ldquoPluginsrdquo

Renderes fornece funcionalidades de display para os modelos

Para esta dissertaccedilatildeo foi escolhida a construccedilatildeo do componente Plugin

por adequar-se agrave nossa proposta e ser a mais simples de ser construiacuteda O

PointShop [11] jaacute conteacutem uma tool que executa operaccedilotildees booleanas e

deformaccedilatildeo free-form sobre os modelos carregados na cena usando o meacutetodo

de Pauly [3] apresentado no capiacutetulo 4 O nosso plugin Operaccedilotildees Booleanas

implementa o algoritmo descrito na seccedilatildeo anterior baseado na proposta de

Melhorias Propostas 57

Adams e Dutreacute [2] Uma comparaccedilatildeo entre o nosso plugin e a tool de Pauly [3] eacute

feita no capiacutetulo 6

Figura 28-Menu do PointShop com o plugin e as opccedilotildees para operaccedilotildees booleanas

Para se executar o plugin o usuaacuterio precisa carregar dois modelos na

cena do PointShop acionar o plugin informando a operaccedilatildeo que seraacute executada

O plugin executaraacute o algoritmo acima proposto e carregaraacute o resultado na cena

do Pointshop retirando os modelos anteriores

521 Estruturas de Dados

Como vimos o software PointShop [11] trabalha com modelos por pontos

Um modelo deste software descrito na seccedilatildeo 42 conteacutem todas as informaccedilotildees

que o algoritmo proposto em Bart [2] necessita Abaixo relacionamos as

Melhorias Propostas 58

principais estruturas de dados do PointShop usadas no plugin e as principais

estruturas de dados do nosso plugin

As principais classes do PointShop usadas no plugin satildeo

Classe Scene

Classe Objects

Classe SurfelColections

Classe Surfel

Classe StatusBar

Classe Transformer

A hierarquia de dados eacute a seguinte a Scene conteacutem vaacuterios Objects os

quais conteacutem SurfelColections Cada SurfelColections conteacutem Surfels que

suportam uma ou mais propriedades tais como cor difusa cor especular

Classe Scene Classe que representa uma cena que conteacutem modelos

Classe Object Um modelo eacute representado pela classe Object que

conteacutem uma SurfelCollection e as matrizes de transformaccedilatildeo para rotaccedilatildeo

escala e translaccedilatildeo Cada Object eacute identificado pelo seu nome que eacute uacutenico na

Scene O meacutetodo getUniqueName retorna um nome uacutenico Cada Object tem sua

proacutepria matriz de transformaccedilatildeo que pode ser modificada com setRotation

rotate setPosition translate setScale e scale Objects podem ser copiados com

copy Objects consiste em um conjunto de surfels os quais podem ser

recuperados pela getSurfelCollection O Object pode ser ativado com

setActiveObject e recuperado com getActiveObject

Objects podem ser adicionados ou removidos com addObject e

removeObject Os Objects podem ser obtidos pela getFirstObject e

getNextObject

Classe SurfelCollection representa o conjunto de surfels de um modelo

Cada surfelcollection consiste em um conjunto de surfels (SurfelInterface) de

tamanho obtido por getNofSurfels Os surfels podem ser recuperados com

getFirstSurfel getCurrentSurfel e getNextSurfel

A SurfelCollection conteacutem um PropertyDescriptor e uma SurfelList

A SurfelList eacute uma lista duplamente encadeada de surfels Possui os

atributos firstSurfel lastSurfel currentSurfel que satildeo ponteiros para uma

SurfelInterface nSurfels que eacute o nuacutemero de Surfels

A SurfelInterface define a API para os surfels que satildeo os menores

elementos que compotildeem um Object Podem ser considerados como pontos com

uma normal que define a orientaccedilatildeo do ciacuterculo (ou elipse) que seraacute desenhado

Melhorias Propostas 59

tatildeo logo o surfel seja renderizado Tem como atributos dois ponteiros (next e

prev) para SurfelInterface

PropertyDescriptor consiste em ateacute 32 valores descrevendo quais as

propriedades a SurfelInterface suporta

Classe Surfel classe que representa o surfel

Classe StatusBar classe que imprime mensagens na tela Os plugins

podem mandar mensagens para o usuaacuterio pela StatusBar

Mensagens texto podem ser impressas com showMessage O progresso

de uma operaccedilatildeo pode ser indicado com setProgress ou resetProgress

Classe Transformer representa a transformaccedilatildeo entre sistemas de

coordenadas Esta classe fornece meacutetodos para transformar pontos e vetores

entre os diferentes sistemas de coordenadas do Pointshop

A seguir apresentamos as principais estruturas de dados do plugin

Operaccedilotildees Booleanas

As principais estruturas de dados do plugin satildeo boundingbox tree no

lista_surfel surfel

Boundingbox conteacutem dois pontos 3D que definem uma caixa que conteacutem

o modelo um ponto com menores coordenadas xy e z e outro ponto com

maiores xyz

Tree representa a octree do modelo Cada registro conteacutem um ponteiro

para um noacute e oito ponteiros para as 8 octrees filhas

No representa um noacute da octree Conteacutem os seguintes dados

- localizaccedilatildeo do noacute que eacute o canto inferior esquerdo do noacute

- lista_surfel (preenchida apenas para noacutes folha cheios)

- quantidade de surfels do noacute

- classificaccedilatildeo do noacute como dentro fora ou contorno

- classificaccedilatildeo do noacute em relaccedilatildeo a outro modelo

- indica se o noacute eacute folha ou natildeo

- vetor que eacute a meacutedia das normais dos surfels do noacute

- ponto que eacute a meacutedia das localizaccedilotildees dos surfels do noacute

- surfel que tem (entre todos os surfels do noacute) o maior produto interno

entre a sua normal e a normal meacutedia

- surfel que tem (entre todos os surfels do noacute) o menor produto interno

entre a sua normal e a normal meacutedia

- produto interno maacuteximo e miacutenimo entre as normais dos surfels do noacute e a

normal meacutedia deste noacute

Melhorias Propostas 60

- indica se o noacute conteacutem surfels com normais em sentido oposto (produto

interno entre elas eacute menor que zero)

- classificaccedilatildeo dos oito cantos do noacute

lista_surfels lista em que cada registro conteacutem um apontador para um

surfel e um apontador para o proacuteximo registro

surfel representa o surfel da octree Conteacutem a classificaccedilatildeo em relaccedilatildeo a

outro modelo e um ponteiro para o surfel do Poinshop

Resultados 61

6 Resultados

Neste capiacutetulo apresentamos os testes realizados com o plugin para o

PointShop implementado para esta dissertaccedilatildeo a comparaccedilatildeo deste plugin com

o plugin de Pauly [3] e a comparaccedilatildeo entre o meacutetodo de Adams e Dutreacute [2] e o

meacutetodo de Pauly [3]

61 Testes

Os testes foram feitos em um PC x86 Family 6 261600 KB de RAM sem

placa graacutefica sistema operacional Windows 2000 O plugin foi implementado na

linguagem C

Os modelos usados para os testes satildeo modelos disponibilizados no

PointShop [11] Vale lembrar que o meacutetodo implementado em nosso plugin eacute

restrito a modelos soacutelidos e portanto foram usados apenas estes modelos

soacutelidos para os testes

O modelo na Figura 29 que eacute um dos modelos disponibilizados no

PointShop [11] foi usado para mostrar o resultado das operaccedilotildees realizadas

pelo plugin implementado nesta dissertaccedilatildeo O modelo Igea eacute um modelo soacutelido

que conteacutem 134345 surfels

Resultados 62

Figura 29-Modelo do PointShop Igea

Para realizar as operaccedilotildees este modelo foi carregado na cena do

PointShop duas vezes e um deles colorido de vermelho As Figuras 30 31 32

mostram o resultado da operaccedilatildeo de uniatildeo interseccedilatildeo e diferenccedila

respectivamente Os nuacutemeros de surfels dos modelos resultantes satildeo mostrados

na Tabela 2

Resultados 63

Figura 30-Resultado da uniatildeo de duas Igeas

Figura 31-Resultado da interseccedilatildeo de duas Igeas

Resultados 64

Figura 32-Resultado da diferenccedila entre duas Igeas

Tabela 2-Nuacutemero de surfels dos modelos resultantes

Observamos que o nuacutemero de surfels dos modelos resultantes estaacute

coerente com as figuras dos seus modelos

Para avaliar o tempo de processamento das operaccedilotildees foram realizados

vaacuterios testes com o objetivo de obter uma meacutedia dos tempos de realizaccedilatildeo de

cada operaccedilatildeo Tambeacutem foram armazenados os tempos da criaccedilatildeo das duas

octrees e da classificaccedilatildeo de todos os surfels dos dois objetos (como dentro ou

fora do outro modelo) Estes testes foram feitos usando o modelo Igea A meacutedia

dos tempos de processamento foi calculada e os resultados satildeo mostrados na

Tabela 3 Verificamos que o maior tempo gasto eacute para criaccedilatildeo das octrees

Verificamos tambeacutem que este resultado apresentado eacute similar ao resultado

verificado empiricamente com o plugin de Pauly [3] Os tempos gastos para

realizar as operaccedilotildees satildeo similares e o maior tempo gasto no plugin de Pauly

tambeacutem eacute para inicializaccedilatildeo de suas estruturas de dados que incluem a kd-tree

Operaccedilatildeo Nuacutemero de surfels do modelo resultado

Uniatildeo 189715

Interseccedilatildeo 72225

Diferenccedila 134552

Resultados 65

Operaccedilatildeo Criaccedilatildeo das

Octrees (seg)

Classificaccedilatildeo

(seg)

Criaccedilatildeo do

resultado (seg)

Total (seg)

Uniatildeo 39375 1324 18925 7154

Interseccedilatildeo 38585 1585 09547 63982

Diferenccedila 399875 1504 1729 729475

Tabela 3- Meacutedia dos tempos de processamento para as operaccedilotildees com duas Igeas

Com o objetivo de expor melhor os resultados deste trabalho

apresentamos abaixo mais um teste das operaccedilotildees booleanas usando o nosso

plugin Os modelos usados para este segundo teste satildeo o Max Planck e o Male

ambos modelos soacutelidos disponibilizados no PointShop Estes modelos satildeo

mostrados nas figura 33 e 34

O primeiro Max Planck conteacutem 52809 surfels

Figura 33-Modelo do PointShop MaxPlanck

O segundo modelo abaixo Male conteacutem 148138 surfels

Resultados 66

Figura 34-Modelo do PointShop Male

As Figuras 353637 mostram o resultado da operaccedilatildeo de uniatildeo interseccedilatildeo

e diferenccedila respectivamente usando os dois modelos acima Podemos observar

pela figura 35 que o resultado da operaccedilatildeo de diferenccedila neste caso gerou um

modelo resultado com trecircs partes desconexas Os nuacutemeros de surfels de cada

modelo resultado satildeo mostrados na Tabela 5

Figura 35- Resultado da Uniatildeo do modelo Male com MaxPlanck

Resultados 67

Figura 36-Resultado da interseccedilatildeo do modelo Male com o MaxPlanck

Figura 37-Resultado da diferenccedila do modelo Male do modelo MaxPlanck

As meacutedias de tempos de processamento foram calculadas da mesma

forma que o primeiro teste com o modelo Igea acima apresentado Os

resultados satildeo mostrados na Tabela 4 Podemos observar que este teste

Resultados 68

apresenta tempos um pouco menores que o teste com o modelo Igea Isto se

deve ao fato de que o modelo MaxPlanck ser significativamente menor que o

modelo Igea MaxPlanck possui 52809 surfels e Igea conteacutem 134345 surfels

Operaccedilatildeo Criaccedilatildeo das

Octrees (seg)

Classificaccedilatildeo

(seg)

Criaccedilatildeo do

resultado (seg)

Total

(seg)

Uniatildeo 3012 1254 102 5285

Interseccedilatildeo 2985 0901 0861 4747

Diferenccedila 2965 0911 0791 4667

Tabela 4-Tempo de processamento das operaccedilotildees com os modelos MaxPlanck e Male

Operaccedilatildeo Nuacutemero de surfels do resultado

Uniatildeo 126532

Interseccedilatildeo 88414

Diferenccedila 77635

Tabela 5-Nuacutemero de surfels dos modelos resultados das operaccedilotildees com os modelos MaxPlanck e Male

Em seguida apresentaremos uma comparaccedilatildeo entre o nosso plugin e o

plugin de Pauly[3] e tambeacutem uma comparaccedilatildeo entre o meacutetodo de Adams e Dutreacute

[2] e o meacutetodo de Pauly [3]

62 Comparaccedilatildeo entre os dois meacutetodos que realizam operaccedilotildees booleanas

A comparaccedilatildeo entre os meacutetodos de Pauly[3] e de Adams e Dutreacute foi feita

em termos de tempo de processamento e em termos conceituais Em termos de

tempo de processamento comparamos o plugin de Pauly[3] com o nosso plugin

Em termos de tempo de processamento verifica-se empiricamente que os

dois meacutetodos apresentam tempos bastante similares Entretanto o tempo de

processamento do algoritmo aqui implementado ainda pode ser melhorado com

Resultados 69

o uso do meacutetodo TINN [19] que foi proposto em Adams[2] - para otimizar a

pesquisa do surfel mais proacuteximo a um ponto que estaacute localizado na regiatildeo de um

noacute que conteacutem surfels - veja seccedilatildeo 42 O uso deste meacutetodo natildeo foi

implementado para este trabalho e a sua implementaccedilatildeo melhoraria o tempo de

resposta do algoritmo Aleacutem disso o trabalho de Sara F Frisken [12] citado no

capiacutetulo 2 apresenta uma otimizaccedilatildeo no uso de octrees que pode ser

incorporada no algoritmo implementado neste trabalho

Em termos conceituais vamos fazer a comparaccedilatildeo do uso do que

chamamos aqui de Regra 2 do tratamento de interseccedilatildeo e do tratamento de

ldquoarestas vivasrdquo

Como vimos na seccedilatildeo 41 tanto o algoritmo implementado nesta

dissertaccedilatildeo baseado no trabalho de Adams e Dutreacute como o meacutetodo de Pauly

[3] parte do que chamamos aqui de Regra 2 para realizar operaccedilotildees booleanas

com pontos Mas cada um destes meacutetodos daacute um tratamento diferente para o

uso desta regra

O meacutetodo de Pauly usa a Regra 2 para classificaccedilatildeo de cada ponto ou de

cada surfel Para classificar um surfel de B sb como dentro ou fora de A eacute

encontrado o surfel de A sa mais proacuteximo a sb e sb eacute classificado a partir de sa

Para encontrar sa Pauly utiliza uma kd-tree Como esta pesquisa para encontrar

sa eacute cara (mesmo usando uma kd-tree) Pauly utiliza uma esfera que conteacutem

pontos com a mesma classificaccedilatildeo (seccedilatildeo 432) e diminui em 90 este nuacutemero

de pesquisas Pauly utiliza tambeacutem a representaccedilatildeo impliacutecita MLS (Moving Least

Squares) para casos em que a Regra 2 poderia falhar e para tratamento de

interseccedilotildees Entretanto o nuacutemero destes casos em que a Regra 2 poderia falhar

eacute muito pequeno E a representaccedilatildeo MLS natildeo eacute uma estrutura simples de ser

implementada Portanto natildeo encontramos vantagens em usar MLS para estes

casos O meacutetodo de Adams e Dutreacute natildeo trata estes casos e na praacutetica

apresenta resultados bastante satisfatoacuterios como foi mostrado Portanto

consideramos que valeria a pena fazer algum tratamento especial para estes

casos se fosse um procedimento simples Para a execuccedilatildeo do algoritmo de

Pauly o uso de MLS natildeo interfere significativamente porque a construccedilatildeo desta

representaccedilatildeo natildeo eacute feita somente para realizar operaccedilotildees booleanas Os testes

empiacutericos que fizemos com o algoritmo de Pauly natildeo incluem a construccedilatildeo desta

representaccedilatildeo

Aparentemente os dois algoritmos satildeo bastante parecidos um usa octrees

e o outro usa kd-tree As duas estruturas de dados satildeo simples e otimizam a

classificaccedilatildeo dos surfels de um modelo como dentro ou fora do outro modelo

Resultados 70

Mas existe uma diferenccedila conceitual entre dois que merece ser destacada O

algoritmo aqui implementado usa a Regra 2 para classificaccedilatildeo dos noacutes de uma

octree e armazena esta octree classificada (ver capiacutetulo 5) Assim na maioria dos

casos natildeo seraacute necessaacuterio encontrar o surfel mais proacuteximo para classificar um

ponto (ou um surfel) como fora ou dentro de um modelo Caso o ponto esteja em

uma aacuterea da octree classificada ele teraacute a classificaccedilatildeo dada agravequela aacuterea A

pesquisa ao surfel mais proacuteximo seraacute feita apenas nos casos em que o ponto a

ser classificado estaacute localizado entre os planos que subdividem um noacute cheio

O uso desta octree classificada levanta uma questatildeo que natildeo foi citada no

trabalho de Adams e Dutreacute que eacute a proximidade desta estrutura (armazenada)

de octree classificada com uma representaccedilatildeo volumeacutetrica do objeto Sendo

assim esta estrutura pode ser aproveitada para outras funccedilotildees aleacutem da

classificaccedilatildeo dos surfels Por exemplo podemos ter uma aproximaccedilatildeo do

volume de uma cena somando os volumes aproximados dos modelos que a

compotildeem Como o enfoque deste trabalho eacute operaccedilatildeo booleana natildeo vamos nos

aprofundar nesta questatildeo

Outra importante diferenccedila entre os dois trabalhos que jaacute foi explicada na

seccedilatildeo 432 eacute que o meacutetodo de Pauly aplica-se a modelos soacutelidos ou natildeo

soacutelidos enquanto que o meacutetodo de Adams e Dutreacute aplica-se somente a modelos

soacutelidos

Quanto ao tratamento de interseccedilatildeo em termos de visualizaccedilatildeo todos os

dois resolvem bem o problema O tratamento de interseccedilatildeo nos dois trabalhos

tambeacutem resolve o problema da validade da Regra 2 (ver seccedilatildeo 44) Entretanto

o tratamento de Adams e Dutreacute natildeo depende da renderizaccedilatildeo sendo portanto

mais portaacutevel Aleacutem disso uma desvantagem do meacutetodo de Pauly eacute o uso da

representaccedilatildeo impliacutecita MLS (ldquoMoving Least Squaresrdquo) do objeto para obter os

pontos exatamente na curva de interseccedilatildeo Esta representaccedilatildeo torna o

tratamento de interseccedilatildeo mais complexo e a vantagem apresentada natildeo eacute tatildeo

significativa para este tratamento de interseccedilatildeo

Conclusatildeo 71

7 Conclusatildeo

Concluiacutemos entatildeo que as escolhas de Adams e Dutreacute por usar uma

octree classificada e pelo tratamento dado agrave interseccedilatildeo satildeo mais abrangentes

que a escolha de Pauly E consideramos que quanto mais abrangente for uma

escolha conceitual mais resultados poderemos tirar dela No caso de Adams e

Dutreacute eles estendem o problema de classificar um ponto para classificar todo o

modelo Como foi citado ele quase fornece uma representaccedilatildeo volumeacutetrica do

modelo Esta aproximada representaccedilatildeo volumeacutetrica pode nos fornecer outras

informaccedilotildees como por exemplo o volume aproximado do modelo

Aleacutem disso o uso da representaccedilatildeo impliacutecita MLS no meacutetodo de Pauly cria

uma complexidade a mais para o meacutetodo sem apresentar vantagens para a

realizaccedilatildeo de operaccedilotildees booleanas que eacute o nosso enfoque

Logo podemos dizer que o meacutetodo de Adams e Dutreacute apresenta as

seguintes vantagens em relaccedilatildeo ao de Pauly

- a estrutura de octree classificada aleacutem de ser usada para classificaccedilatildeo

fornece informaccedilotildees adicionais como volume aproximado do objeto

- o tempo de processamento no meacutetodo de Adams e Dutreacute tende a ser

melhor que no meacutetodo de Pauly se implementadas as melhorias acima citadas e

se colocaacutessemos em consideraccedilatildeo o uso da representaccedilatildeo impliacutecita MLS

(Moving Least Squares)

- o tratamento de interseccedilatildeo de Adams e Dutreacute apresenta a vantagem da

portabilidade ou seja iraacute funcionar independente do algoritmo de renderizaccedilatildeo

utilizado

E as vantagens do meacutetodo de Pauly em relaccedilatildeo ao de Adams e Dutreacute

- a colocaccedilatildeo de surfels exatamente na curva de interseccedilatildeo

- a possibilidade de trabalhar com modelos soacutelidos ou natildeo soacutelidos

E finalizando concluiacutemos que o estudo relatado nesta dissertaccedilatildeo foi

importante por

- fornecer um breve estudo sobre modelagem por pontos uma nova e

promissora aacuterea dentro da computaccedilatildeo graacutefica

Conclusatildeo 72

- por apresentar uma avaliaccedilatildeo dos dois trabalhos existentes sobre

operaccedilotildees booleanas com pontos encontrando as vantagens de cada um

e levantando questotildees que natildeo tinham sido citadas nos trabalhos originais

- por propor e implementar melhorias ao trabalho de Adams e Dutreacute

71 Trabalhos Futuros

Nossa implementaccedilatildeo pode ser ainda evoluiacuteda com as propostas

apresentadas na seccedilatildeo 62 Como observamos o tempo de processamento do

algoritmo aqui implementado ainda pode ser melhorado com o uso do meacutetodo

TINN [19] - que foi proposto em Adams[2] - para otimizar a pesquisa do surfel

mais proacuteximo a um ponto que estaacute localizado na regiatildeo de um noacute que conteacutem

surfels Aleacutem disso o trabalho Simple and Efficient Trasversal Methods for

Quadtrees and Octrees de Sara F Frisken [12] citado no capiacutetulo 2 apresenta

uma otimizaccedilatildeo no uso de octrees Outra proposta para melhorar o tempo de

processamento do algoritmo aqui implementado eacute usar a forma de trabalhar com

octrees apresentada neste trabalho

O trabalho de Adams e Dutreacute [2] eacute aplicado apenas a objetos soacutelidos O

nosso plugin portanto aplica-se somente a este tipo de objeto Jaacute o trabalho de

Pauly[3] eacute aplicado tambeacutem a modelos natildeo soacutelidos Apresentamos como

proposta a um trabalho futuro a extensatildeo do algoritmo aqui implementado para

modelos natildeo soacutelidos O surfel pode conter uma informaccedilatildeo adicional que indica

se ele estaacute delimitando um volume ou natildeo Assim pode-se ter um modelo com

ldquopartes soacutelidasrdquo e ldquopartes natildeo soacutelidasrdquo Por exemplo a uniatildeo de um plano com

uma esfera poderia resultar numa esfera com ldquoabasrdquo (seriam as partes do plano

que estariam fora da esfera) O modelo resultado teria uma parte correspondente

a um espaccedilo 3D (esfera) e outra parte que seria uma superfiacutecie 2D posicionada

no espaccedilo 3D sem delimitar algum volume (abas)

Muitos trabalhos podem ser desenvolvidos aplicando-se o modelo por

pontos em animaccedilatildeo jogos visualizaccedilatildeo de terrenos criaccedilatildeo de protoacutetipos etc

considerando-se a eficiecircncia e simplicidade do modelo E mais especificamente

as operaccedilotildees booleanas com pontos podem ser aplicadas para criaccedilatildeo de

cenaacuterios testes de colisotildees e nestes casos a representaccedilatildeo usando octrees

pode ser mais explorada considerando-se o seu potencial de representaccedilatildeo

volumeacutetrica de um objeto

Referecircncias Bibliograacuteficas 73

8 Referecircncias Bibliograacuteficas

[1] MAumlNTYLAuml M An Introduction to Solid Modeling Computer Science Press 1988

[2] ADAMS B DUTREacute P Interactive Boolean Operations on Surfel-

Bounded Solids Proceedings of SIGGRAPH 2003 San Diego USA 2003

[3] PAULY M KEISER R KOBBELT L GROSS M Shape Modeling

with Point-Sampled Geometry SIGGRAPH 2003 Computer Graphics

Proceedings Annual Conference Series ACM Press ACM SIGGRAPH 2003

[4] LEVOY M WHITTED T The Use of Points as Display Primitives

Technical Report TR 85-022 The University of North Carolina at Chapel Hill

Department of Computer Science 1985

[5] PFISTER H ZWICKER M VAN BAAR J GROSS M 2000 Surfels

Surface Elements as Rendering Primitives SIGGRAPH 2000 pp 335ndash342 New

Orleans LA July 23-28 2000

[6] ZWICKER M PFISTER H VAN BAAR J GROSS M Surface

Splatting SIGGRAPH 2001

[7] PAULY M KOBBELT L GROSS M Multiresolution Modeling of

Point-Sampled Geometry CS Techinical Report 378 September 16 2002

[8] CURLESS B New Methods for Surface Reconstruction from Range Images PhD thesis Stanford University 1997

[9] RUSINKIEWICZ S Real-time Acquisition and Rendering of Large 3D Models PhD thesis Stanford University 2001

Referecircncias Bibliograacuteficas 74

[10] AMENTA N BERN M KAMVYSSELIS M A new Voronoi-Based

Surface Reconstruction Algorithm SIGGRAPH 98 Conference proceedings pp

415-421 New York 1998

[11] ZWICKER M PAULY M KNOLL O GROSS M Pointshop 3D an

Interactive System for Point-Based Surface Editing Proceedings of SIGGRAPH 2002 San Antonio TX July 2002

[12] FRISKEN S PERRY R Simple and Efficient Traversal Methods for

Quadtrees and Octrees Journal of Graphics Tools Vol 7 Issue 3 May 2003

[13] CORREcircA W T OLIVEIRA M M Silva C T Wang J

Modeling and Rendering of Real Environments

Revista de Informaacutetica Teoacuterica e Aplicada (Brazilian Journal of Theoretic and Applied Computing) 9(2)127-156 2002

[14] DAVIS J MARSCHNER S GARR M LEVOY M Filling Holes in

Complex Surfaces Using Volumetric Diffusion First International Symposium on 3D Data Processing Visualization Transmission June 2002

[15] RAumlSAumlNEN J Surface Splatting Theory Extensions and Implementation Masterrsquos Thesis Dept of Computer Science Helsinki

University of Technology May 28 2002

[16] PAULY M Point Primitives for Interactive Modeling and Processing of 3D Geometry PhD thesis Federal Institute of Technology (ETH)

of Zurich 2003

[17] HOPPE H DEROSE T DUCHAMP T MCDONALD J

STUELZLE W Surface Reconstruction from Unorganized Points Computer Graphics 26(2)71ndash78 July 1992

[18] ALEXA M BEHR J COHEN-OR D FLEISHMAN S LEVIN D

SILVA C T Point Set Surfaces IEEE Visualization 2001 pp 21ndash28 October

2001

Referecircncias Bibliograacuteficas 75

[19] GREENSPAN M GODIN G TALBOT J Acceleration of Binning

Nearest Neighbor Methods Proceedings of Vision Interface 2000 pp 337-

344

[20] MENCL R Reconstruction of Surfaces from Unorganized Three-Dimensional Point Clouds Dissertation Dortmund Univ 2001

[21] KRIVANEK J Representing and Rendering Surfaces With Points

httpciteseernjneccomkrivanek03representinghtml Acesso em 30 jul

2003

[22] KRISTJANSSON ET AL Approximate Boolean Operations on Free-

form Solids Proceedings of SIGGRAPH 01 2001

Agrave minha matildee Tetecirc Daacutelton e Lucas

Agradecimentos Aos meus orientadores Waldemar Celes e Luiz Velho pelo apoio dedicaccedilatildeo e paciecircncia que tornaram este trabalho possiacutevel Agrave PUC-Rio pelo apoio financeiro Aos membros da banca examinadora pelas correccedilotildees e sugestotildees Agrave Cristina Griner chefe de projeto do SERPRO pelo apoio compreensatildeo e ajuda Aos meus professores de mestrado pelos conhecimentos transmitidos Agrave Mauren Paola Ruthner pela amizade e colaboraccedilatildeo durante todo o mestrado Aos colegas do Departamento de Informaacutetica da PUC-Rio pelos momentos compartilhados Agrave minha matildee pela revisatildeo do texto desta dissertaccedilatildeo e pelo total apoio sem o qual este trabalho natildeo seria possiacutevel Agrave Daacutelton e Tetecirc meus queridos irmatildeos pelo apoio incentivo e colaboraccedilatildeo

Resumo

Leal Heloisa ReisCeles Waldemar (Orientador) Operaccedilotildees Booleanas na Modelagem por Pontos Rio de Janeiro 2004 75p Dissertaccedilatildeo de Mestrado - Departamento de Informaacutetica Pontifiacutecia Universidade Catoacutelica do Rio de Janeiro

Operaccedilotildees booleanas em modelagem 3D satildeo usadas para criar novos

modelos ou para modificaacute-los Na maioria dos tipos de representaccedilatildeo de objetos

3D estas operaccedilotildees satildeo bastante complexas Nos uacuteltimos anos tem sido muito

explorado um novo tipo de modelagem a modelagem por pontos que apresenta

muitas vantagens em relaccedilatildeo agraves outras representaccedilotildees como maior simplicidade

e eficiecircncia Dois trabalhos exploram as operaccedilotildees booleanas na modelagem

por pontos o trabalho de Adams e Dutreacute e o trabalho de Pauly et al Dada a

grande importacircncia deste novo tipo de modelagem e do uso de operaccedilotildees

booleanas esta dissertaccedilatildeo apresenta uma introduccedilatildeo agrave modelagem por pontos

implementa o algoritmo proposto em Adams e Dutreacute com algumas melhorias e o

compara com o meacutetodo de Pauly et al

Palavras-chave

Modelagem 3D Modelagem por pontos Operaccedilotildees Booleanas

Computaccedilatildeo Graacutefica Interativa

Abstract

Leal Heloisa Reis Celes Waldemar(Advisor) Boolean Operations on Point-based models Rio de Janeiro 2004 75p MSc Dissertation - Departamento de Informaacutetica Pontifiacutecia Universidade Catoacutelica do Rio de Janeiro

Boolean operations are used to create or modify models These operations

in the majority of 3D object representations are very complex In the last years a

significant trend in computer graphics has been the shift towards point sampled

3D models due to their advantages over other representations such as simplicity

and efficiency Two recent works present algorithms to perform interactive

boolean operations on point-based models the work by Adams and Dutreacute and

the work by Pauly et Al Due to great importance of this novel representation

and of the use of boolean operations the present work makes an introduction to

point-based representation implements the algorithm proposed by Adams and

Dutreacute with some improvements and compares this implementation with the work

by Pauly et al

Palavras-chave

3D Modeling Point-based Modeling Boolean Operation Interactive

Computer Graphics

Sumaacuterio

1 Introduccedilatildeo 15

2 Trabalhos relacionados 18

3 Modelagem por Pontos 20 31 Ideacuteia da Representaccedilatildeo 20 32 Tipos de distribuiccedilatildeo dos surfels 22 33 Estrutura de multi-resoluccedilatildeo 22 34 Dados que um surfel pode conter 23 35 Aquisiccedilatildeo do modelo 23 351 Aquisiccedilatildeo da geometria 23 352 Aquisiccedilatildeo da textura 24 353 Correccedilatildeo das falhas da aquisiccedilatildeo 25 36 Reconstruccedilatildeo da superfiacutecie (contiacutenua) a partir do modelo (discreto) 25 37 Visualizaccedilatildeo do modelo 26 38 Ediccedilatildeo do modelo 28

4 Operaccedilotildees Booleanas com Pontos 29 41 Meacutetodos para realizar operaccedilotildees booleanas em objetos modelados por

pontos 29 42 Meacutetodo de Adams e Dutreacute 33 421 Modelo por Pontos em Adams e Dutreacute 33 422 Algoritmo de Operaccedilotildees Booleanas 34 43 Meacutetodo de Pauly 39 431 Modelo em Pauly 40 432 Algoritmo de Operaccedilotildees Booleanas 40 44 Validade da Regra 2 43

5 Melhorias Propostas 47 51 Descriccedilatildeo do algoritmo 47 511 Criaccedilatildeo e classificaccedilatildeo de uma octree para cada modelo 48

512 Teste DentroFora 52 513 Criaccedilatildeo do modelo resultado 54 52 Implementaccedilatildeo 55 521 Estruturas de Dados 57

6 Resultados 61 61 Testes 61 62 Comparaccedilatildeo entre os dois meacutetodos que realizam operaccedilotildees booleanas 68

7 Conclusatildeo 71 71 Trabalhos Futuros 72

8 Referecircncias Bibliograacuteficas 73

11

Lista de figuras

Figura 1 Um modelo por pontos e sua visualizaccedilatildeo 21 Figura 2 A superfiacutecie modelada por surfels O surfel em destaque tem raio de

alcance rt e normal n 22 Figura 3 Modelo por pontos e sua renderizaccedilatildeo usando Surface Splatting 26 Figura 4 Trecircs modelos novos foram criados a partir dos quatro iniciais (esfera

cilindro dois cubos) O primeiro eacute a esfera menos um cubo em seguida

retirou-se outro cubo e por uacuteltimo retirou-se o cilindro 29 Figura 5 A partir de dois modelos por pontos uma heacutelice e uma cabeccedila as trecircs

operaccedilotildees booleanas satildeo mostradas da esquerda para a direita uniatildeo

diferenccedila e interseccedilatildeo 30 Figura 6 (a) Dois modelos A e B (b) Posicionados de forma que A tem uma parte

dentro de B eacute mostrado o resultado A U B Af + Bf (c) Resultado de A ndash B Af

+ Bd (d) Resultado de A cap B Ad + Bd 31 Figura 7 Para classificar o ponto x encontra-se o surfel p (com normal np) mais

proacuteximo a x Se o produto interno entre np e (x ndash p) for maior que zero entatildeo

x eacute classificado como fora senatildeo seraacute classificado como dentro 32 Figura 8 Interseccedilatildeo de duas esferas agrave esquerda sem nenhum tratamento de

interseccedilatildeo agrave direita apoacutes o tratamento de interseccedilatildeo 33 Figura 9 Um objeto representado por pontos com suas normais e sua quadtree

correspondente classificada os noacutes cinza claro estatildeo dentro do modelo noacutes

cinza mais escuro estatildeo fora do modelo e noacutes com cinza intermediaacuterio satildeo

noacutes cheios noacutes que conteacutem pontos 35 Figura 10 Divisatildeo de noacute de contorno a parte agrave esquerda estaacute fora do modelo a

parte agrave direita estaacute dentro do modelo e a faixa intermediaacuteria conteacutem os

surfels 36 Figura 11 Interseccedilatildeo do surfel s e do plano que passa pelo surfel t o surfel mais

proacuteximo a s O surfel s eacute substituiacutedo por trecircs surfels menores 38 Figura 12 Agrave direita eacute mostrado o resultado do tratamento de interseccedilatildeo para o

caso de Arestas Vivas do objeto agrave esquerda 39 Figura 13 Os novos surfels satildeo colocados exatamente na curva de interseccedilatildeo e

convergem para o ponto de interseccedilatildeo 42 Figura 14 (a) Suponhamos a reta que eacute a interseccedilatildeo do plano tangente a S1 em

q1 e o plano tangente a S2 em q2 O ponto r eacute o ponto desta reta que estaacute

12

mais proacuteximo a q1 e q2 (b) r eacute projetado sobre S1 e S2 obtendo-se q1acute e q2acute

dois novos pontos de partida para nova iteraccedilatildeo (c) A nova iteraccedilatildeo gera r

que eacute uma aproximaccedilatildeo melhor de q 43 Figura 15 Para verificar se o ponto x estaacute fora de um contorno C encontra-se o

ponto y de C Se o produto interno entre a normal em y e o vetor que liga y a

x for maior que zero entatildeo x estaacute fora de C senatildeo estaacute dentro de C 44 Figura 16 As curvas vermelhas satildeo o Eixo Medial da curva em preto 45 Figura 17 Em 3D geralmente o Eixo Medial eacute uma superfiacutecie 2D (em vermelho)

Aqui o quadrado eacute o Eixo Medial da superfiacutecie transparente que o contorna

45 Figura 18 A figura mostra o diagrama de Voronoi de uma amostragem de pontos

S Da mesma forma que a amostragem aproxima a curva os veacutertices de

Voronoi aproximam o Eixo Medial 46 Figura 19 Quadtree classificada Os noacutes mais escuros estatildeo fora do modelo os

mais claros dentro e os em tom intermediaacuterio satildeo noacutes de contorno 48 Figura 20 O noacute cheio eacute dividido em trecircs partes agrave esquerda a regiatildeo estaacute dentro

do modelo agrave direita estaacute fora e entre as duas linhas que dividem o noacute estaacute a

regiatildeo que conteacutem os surfels 49 Figura 21 O noacute a eacute classificado pelo noacute c o noacute d tambeacutem eacute classificado pelo noacute c

a classificaccedilatildeo do noacute a eacute propagada para o noacute b 50 Figura 22 Os cantos a e b do noacute cheio possuem a mesma classificaccedilatildeo fora do

modelo Esta classificaccedilatildeo foi dada ao noacute vazio adjacente 50 Figura 23 Quadtree classificada 51 Figura 24 A normal n eacute a normal meacutedia e os surfels s1 e s2 juntamente com a

normal n definem as retas que dividem o noacute 52 Figura 25 Duas circunferecircncias e suas quadtrees correspondentes 53 Figura 26 a modelos natildeo se intersectam b modelo intersecta noacutes fora c

modelo intersecta apenas noacutes dentro d modelo intersecta noacutes dentro e noacutes

fora 54 Figura 27 Software PointShop 3D com dois modelos carregados na sua cena 56 Figura 28 Menu do PointShop com o plugin e as opccedilotildees para operaccedilotildees

booleanas 57 Figura 29 Modelo do PointShop Igea 62 Figura 30 Resultado da uniatildeo de duas Igeas 63 Figura 31 Resultado da interseccedilatildeo de duas Igeas 63 Figura 32 Resultado da diferenccedila entre duas Igeas 64

13

Figura 33 Modelo do PointShop MaxPlanck 65 Figura 34 Modelo do PointShop Male 66 Figura 35 Resultado da Uniatildeo do modelo Male com MaxPlanck 66 Figura 36 Resultado da interseccedilatildeo do modelo Male com o MaxPlanck 67 Figura 37 Resultado da diferenccedila do modelo Male do modelo MaxPlanck 67

14

Lista de tabelas

Tabela 1 Classificaccedilatildeo para operaccedilotildees booleanas 42

Tabela 2- Nuacutemero de surfels dos modelos resultantes 64 Tabela 3- Meacutedia dos tempos de processamento para as operaccedilotildees com duas

Igeas 65

Tabela 4-Tempo de processamento das operaccedilotildees com os modelos MaxPlanck

e Male 68 Tabela 5- Nuacutemero de surfels dos modelos resultados das operaccedilotildees com os

modelos MaxPlanck e Male 68

15

1 Introduccedilatildeo

O mundo digital estaacute conquistando cada vez mais espaccedilo nos meios de

comunicaccedilatildeo Sons imagens viacutedeos digitais satildeo miacutedias muito usadas em

diversas aacutereas como entretenimento medicina desenho industrial engenharia

arquitetura educaccedilatildeo arte ciecircncia entre outras Podemos citar alguns

exemplos dentro destas aacutereas como jogos efeitos especiais filmes digitais

visualizaccedilatildeo cientiacutefica viacutedeo-conferecircncia comeacutercio na internet Nos uacuteltimos anos

verificamos que o modelo 3D vem se tornando um novo meio de comunicaccedilatildeo

digital Com o desenvolvimento da tecnologia de aquisiccedilatildeo e do processamento

de modelos 3D ele vem sendo cada vez mais utilizado Jogos 3D animaccedilotildees

aplicaccedilotildees em realidade virtual visualizaccedilatildeo cientiacutefica aplicaccedilotildees para aacuterea

meacutedica e odontoloacutegica criaccedilatildeo de reacuteplicas para estudo e preservaccedilatildeo do

patrimocircnio histoacuterico sistemas CADCAM cataacutelogos de modelos 3D na Web para

comercializaccedilatildeo criaccedilatildeo de protoacutetipos para arquitetura engenharia satildeo alguns

exemplos de aplicaccedilotildees que usam modelos 3D

A aacuterea que estuda a representaccedilatildeo de um modelo 3D no computador eacute

chamada de modelagem em computaccedilatildeo graacutefica Existem diversos tipos de

modelagem para as diversas aplicaccedilotildees que usam um modelo 3D como por

exemplo representaccedilotildees poligonais como malhas triangulares que satildeo

geralmente usadas na aacuterea de entretenimento Este trabalho explora um novo

tipo de modelagem a modelagem por pontos

A modelagem por pontos comeccedilou a ser largamente explorada nesta

deacutecada e trata-se de uma aacuterea muito promissora em computaccedilatildeo graacutefica dadas

agraves vaacuterias e grandes vantagens em relaccedilatildeo aos outros tipos de representaccedilatildeo

como esquema de representaccedilatildeo CSG (Constructive Solid Geometry) [1] ou

malhas poligonais Dentre as principais vantagens podemos citar grande

simplicidade e flexibilidade boa performance robustez Mas a principal

vantagem desta modelagem que foi o fator que impulsionou o seu grande

desenvolvimento nesta deacutecada eacute que esta modelagem por pontos eacute a melhor

opccedilatildeo para tratar os dados de saiacuteda de equipamentos de aquisiccedilatildeo de modelos

3D O uso destes equipamentos tem aumentado muito nesta deacutecada A

16

tecnologia destes equipamentos tem progredido muito e eles tecircm se tornado

mais baratos A tendecircncia eacute que o uso destes equipamentos se torne o mais

utilizado meio de obtenccedilatildeo de modelos 3D Isto porque construir modelos 3D

bastante detalhados por meio de um software de modelagem eacute muito trabalhoso

O processo de aquisiccedilatildeo de modelos por meio destes equipamentos automatiza

este processo de construccedilatildeo

No trabalho com modelos 3D frequumlentemente satildeo usadas as operaccedilotildees

booleanas que satildeo operaccedilotildees de uniatildeo interseccedilatildeo ou diferenccedila No esquema

de representaccedilatildeo CSG estas operaccedilotildees fazem parte da representaccedilatildeo do

objeto Estas operaccedilotildees tambeacutem podem ser usadas para criar novos modelos ou

para alteraacute-los Na maioria dos tipos de representaccedilatildeo de objetos 3D estas

operaccedilotildees satildeo bastante complexas

A simplicidade da representaccedilatildeo por pontos permite que as operaccedilotildees

booleanas sejam realizadas com facilidade se compararmos com a realizaccedilatildeo

destas operaccedilotildees em outros tipos de representaccedilatildeo como malhas poligonais

Motivada pelas vantagens desta modelagem e pela utilidade destas operaccedilotildees

esta dissertaccedilatildeo apresenta uma introduccedilatildeo geral de modelagem por pontos e

trabalha mais especificamente com operaccedilotildees booleanas em objetos

modelados por pontos Dois trabalhos que exploram as operaccedilotildees booleanas na

modelagem por pontos seratildeo abordados o trabalho de Adams e Dutreacute [2] e o

trabalho de Pauly et al [3] O presente trabalho implementa o meacutetodo de Adams

e Dutreacute com algumas melhorias e faz uma comparaccedilatildeo entre o meacutetodo de Pauly

[3] e o meacutetodo de Adams e Dutreacute [2] com nossas melhorias

Como contribuiccedilotildees dadas por este trabalho apresentamos

- um estudo sobre modelagem por pontos

- um estudo sobre operaccedilotildees booleanas com pontos

- proposta de melhorias ao algoritmo proposto por Adams e Dutreacute [2]

- comparaccedilatildeo dos dois meacutetodos propostos para realizar estas operaccedilotildees

meacutetodo de Pauly et al [3] e de Adams e Dutreacute [2]

Este trabalho vem apresentado nesta dissertaccedilatildeo organizada em sete

capiacutetulos conforme descrito resumidamente a seguir

O capiacutetulo 2 cita alguns trabalhos sobre modelagem por pontos que estatildeo

relacionados a este trabalho

O capiacutetulo 3 apresenta uma visatildeo geral do modelo por pontos e explica

melhor alguns trabalhos citados no capiacutetulo 2

17

O capiacutetulo 4 apresenta operaccedilotildees booleanas com pontos e os dois

meacutetodos para realizaacute-las na modelagem por pontos meacutetodo de Pauly et al [3] e

de Adams e Dutreacute [2]

O capiacutetulo 5 apresenta algumas melhorias ao algoritmo de Adams e Dutreacute

[2] e a nossa implementaccedilatildeo deste algoritmo

O capiacutetulo 6 traz os resultados obtidos

E finalmente o capiacutetulo 7 encerra o trabalho com uma conclusatildeo e com

possiacuteveis trabalhos futuros

Trabalhos relacionados 18

2 Trabalhos relacionados

O primeiro pesquisador a propor o uso de pontos como primitiva graacutefica foi

Levoy em [4] Ele propotildee o uso de pontos como primitiva de renderizaccedilatildeo e

discute a conversatildeo dos outros modelos para o modelo por pontos

Nos uacuteltimos anos vaacuterios trabalhos importantes tecircm sido realizados na aacuterea

em diversos segmentos em visualizaccedilatildeo podemos destacar os trabalhos de

Pfister [5] e de Zwicker [6] que usam pontos como primitiva de renderizaccedilatildeo e

com resultados praacuteticos interativos muito bons

Em [7] Pauly et al propotildeem algoritmos para modelagem multi-resoluccedilatildeo

em modelos por pontos

Os trabalhos de Curless [8] e Rusinkiewicz [9] discutem os meacutetodos de

aquisiccedilatildeo que consistem em obter uma amostragem de pontos da superfiacutecie do

objeto real por meio de equipamentos como por exemplo o scanner 3D

Nas operaccedilotildees booleanas a interseccedilatildeo das superfiacutecies dos modelos

iniciais seraacute parte do modelo resultado e para ser representada corretamente

precisa ser reconstruiacuteda A reconstruccedilatildeo da superfiacutecie tambeacutem eacute usada na

visualizaccedilatildeo de um modelo Um trabalho significativo na aacuterea de reconstruccedilatildeo de

superfiacutecies estaacute em [10] de N Amenta etal Este trabalho apresenta uma

soluccedilatildeo praacutetica com garantias teoacutericas para este problema e uma heuriacutestica para

o tratamento de arestas vivas a questatildeo mais difiacutecil desta aacuterea Um exemplo

de uma aresta viva eacute o encontro de dois planos natildeo coincidentes

Frequumlentemente a interseccedilatildeo citada acima (interseccedilatildeo entre os modelos iniciais)

gera uma aresta viva (seccedilatildeo 4223)

O algoritmo aqui implementado eacute um plugin para o software PointShop 3D

[11] de Zwicker et al software de ediccedilatildeo de modelos com pontos O PointShop

tem seu coacutedigo aberto documentaccedilatildeo e trabalha com plugins Ele permite a

visualizaccedilatildeo e ediccedilatildeo interativa do modelo por pontos Eacute o uacutenico software livre

disponiacutevel com estas caracteriacutesticas Esta implementaccedilatildeo na forma de um plugin

facilitou muito o trabalho pois natildeo foi necessaacuterio implementar a visualizaccedilatildeo do

modelo 3D Aleacutem disso o Pointshop conteacutem tambeacutem um plugin com a

implementaccedilatildeo do meacutetodo de Pauly et al [3] discutido nesta dissertaccedilatildeo A

Trabalhos relacionados 19

execuccedilatildeo dos dois plugins que realizam operaccedilotildees booleanas pocircde ser

comparada

Os trabalhos aqui discutidos satildeo o de Bart Adams e Philip Dutreacute [2] e de

Pauly et al[3] que apresentam meacutetodos diferentes para realizaccedilatildeo de

operaccedilotildees booleanas com pontos Adams e Dutreacute utilizam octrees [1] e Pauly

Kd-Tree [16] e MLS (Moving Least Squares) [18] Estes algoritmos satildeo

discutidos no capiacutetulo 4

O trabalho de Sara F Frisken [12] apresenta um algoritmo para realizar

operaccedilotildees em octree de forma mais eficiente Como estas operaccedilotildees estatildeo

presentes em todo o nosso algoritmo este trabalho certamente oferece uma

forma de otimizaccedilatildeo mas que natildeo foi implementada

Modelagem por Pontos 20

3 Modelagem por Pontos

A computaccedilatildeo graacutefica natildeo lida diretamente com o objeto ou com o

fenocircmeno fiacutesico lida com modelos graacuteficos ou geomeacutetricos Modelos graacuteficos

satildeo estruturas computacionais (abstratas) que capturam aspectos de objetos de

interesse para uma aplicaccedilatildeo como forma cor textura etc Se apenas a forma

ou a geometria do objeto eacute relevante temos modelos geomeacutetricos

Estes modelos satildeo usados em vaacuterias aplicaccedilotildees em computaccedilatildeo graacutefica

como roboacutetica visatildeo computacional simulaccedilotildees realistas anaacutelises estruturais

prototipagem projeto e manufatura de produtos eletromecacircnicos arquitetura

Existem vaacuterios tipos de modelos graacuteficos Esta dissertaccedilatildeo trata de um tipo

muito em voga atualmente que eacute o modelo por pontos

Neste capiacutetulo daremos uma visatildeo geral do modelo por pontos

Introduziremos este modelo e seu processo de criaccedilatildeo Seraacute apresentado o que

eacute um modelo por pontos e o conceito de surfel [5] introduziremos os tipos de

distribuiccedilatildeo dos surfels uma estruturaccedilatildeo aplicada a estes surfels e dados que

eles podem conter As quatro proacuteximas subseccedilotildees (Ideacuteia da representaccedilatildeo

Tipos de distribuiccedilatildeo dos surfels Estrutura de multi-resoluccedilatildeo e Dados que um

surfel pode conter) tratam destes toacutepicos Um modelo por pontos pode ser criado

a partir da conversatildeo de outros tipos de modelagem NURBS por exemplo para

o modelo por pontos ou a partir de um processo de aquisiccedilatildeo Esta uacuteltima forma

de criaccedilatildeo pode ser dividida em duas etapas aquisiccedilatildeo do modelo reconstruccedilatildeo

da superfiacutecie As subseccedilotildees 35 e 36 tratam destas duas etapas

respectivamente A ediccedilatildeo do modelo 3D eacute tratada brevemente na subseccedilatildeo 38

e a sua visualizaccedilatildeo na subseccedilatildeo 37 A apresentaccedilatildeo do processo de aquisiccedilatildeo

(seccedilatildeo 35) eacute baseada no tutorial de W T Correcirca [13] A etapa de ediccedilatildeo 3D

consiste em operaccedilotildees para mudanccedila da cor textura ou forma do modelo Para

esta etapa enfocaremos as operaccedilotildees booleanas que modificam a forma do

modelo ou criam novos modelos

31 Ideacuteia da Representaccedilatildeo

Modelagem por Pontos 21

Figura 1 [20] -Um modelo por pontos e sua visualizaccedilatildeo

Um modelo por pontos representa um objeto atraveacutes de seu contorno Eacute

um tipo de representaccedilatildeo B-Rep (Boundary Representation) [1] Este contorno

consiste em uma superfiacutecie 2D posicionada no espaccedilo 3D Na modelagem por

pontos ela eacute representada por um conjunto de pontos 3D que satildeo uma

amostragem dos (infinitos) pontos que formam a superfiacutecie contiacutenua (Figura 1) A

amostragem pode ser obtida de diversas maneiras Uma delas o processo de

aquisiccedilatildeo progrediu muito nos uacuteltimos anos e este foi um dos fatores que tornou

muito importante o desenvolvimento deste modelo por pontos Outra forma de

gerar amostragem eacute fazer uma conversatildeo de um outro modelo NURBS por

exemplo para o modelo por pontos

Estes pontos satildeo denominados surfels e podem conter aleacutem da posiccedilatildeo

3D outras informaccedilotildees como normal agrave superfiacutecie cor textura raio de alcance A

Figura 2 mostra um conjunto de surfels representando uma superfiacutecie No surfel

em destaque podemos ver o raio de alcance rt e a normal n agrave superfiacutecie

Modelagem por Pontos 22

Figura 2 [5] A superfiacutecie modelada por surfels O surfel em destaque tem raio de alcance

rt e normal n

Como o modelo natildeo armazena qualquer informaccedilatildeo sobre a conexatildeo entre

os surfels a reconstruccedilatildeo da superfiacutecie contiacutenua a partir dele pode exigir

algumas restriccedilotildees na amostragem (seccedilatildeo 36)

32 Tipos de distribuiccedilatildeo dos surfels

Existem dois tipos de distribuiccedilatildeo dos surfels na modelagem por pontos

uniforme e natildeo uniforme Na distribuiccedilatildeo uniforme cada um deles descreve

partes de mesmo tamanho da superfiacutecie Na natildeo uniforme cada surfel armazena

a informaccedilatildeo de seu raio de alcance que eacute o raio do disco que este surfel

representa

A distribuiccedilatildeo uniforme tem a vantagem de ser mais simples e natildeo ser

necessaacuterio armazenar o raio de alcance do disco mas ela apresenta a seguinte

desvantagem se o modelo possui regiotildees com muito detalhe e regiotildees com

pouco detalhe ele teraacute que manter uma alta densidade mesmo nas regiotildees de

poucos detalhes

33 Estrutura de multi-resoluccedilatildeo

Um objeto pode ser representado em vaacuterios niacuteveis de detalhes Por

exemplo podemos representar um mesmo objeto com vaacuterias resoluccedilotildees

diferentes Este conceito pode ser aplicado ao modelo por pontos Desta forma

um modelo eacute representado por uma estrutura hieraacuterquica (uma aacutervore por

exemplo) onde em cada niacutevel temos uma representaccedilatildeo do objeto em uma

Modelagem por Pontos 23

determinada resoluccedilatildeo Em [7] Pauly et al propotildeem algoritmos para modelagem

multi-resoluccedilatildeo em modelos por pontos

34 Dados que um surfel pode conter

Cada surfel armazena sua localizaccedilatildeo e pode tambeacutem conter informaccedilotildees

como a cor ou coordenadas de textura Se a amostragem natildeo for uniforme o

surfel conteacutem a informaccedilatildeo do raio de alcance que eacute o raio de um disco cujo

centro eacute a posiccedilatildeo do surfel O surfel pode tambeacutem conter o vetor normal agrave

superfiacutecie e assim o surfel pode ser visto como um disco orientado A superfiacutecie

tambeacutem pode ser vista como uma superfiacutecie orientada

35 Aquisiccedilatildeo do modelo

Esta introduccedilatildeo sobre aquisiccedilatildeo do modelo aqui apresentada baseia-se no

tutorial de W T Correcirca [13]

O processo de aquisiccedilatildeo consiste em obter uma amostragem de pontos da

superfiacutecie do objeto real por meio de equipamentos como por exemplo o

scanner 3D Eacute uma aacuterea que tem progredido muito nos uacuteltimos anos A

resoluccedilatildeo e a precisatildeo dos equipamentos de aquisiccedilatildeo tecircm melhorado bastante

e o custo deles reduzido de forma significativa Isso possibilita que a aquisiccedilatildeo

de modelos 3D seja usada em aplicaccedilotildees de desenho industrial arte ou em

produtos para a aacuterea de entretenimento O consequumlente maior uso destes

equipamentos criou a necessidade de avanccedilos no tratamento dos seus dados de

saiacuteda que satildeo um conjunto de pontos

Este processo pode ser dividido em trecircs partes [13] aquisiccedilatildeo da

geometria aquisiccedilatildeo da textura e correccedilatildeo de falhas da aquisiccedilatildeo

351 Aquisiccedilatildeo da geometria

Existem vaacuterios meacutetodos de aquisiccedilatildeo da geometria Curless [8] e

Rusinkiewicz [9] classificaram estes meacutetodos em trecircs categorias meacutetodos por

contato transmissatildeo e reflexatildeo

O meacutetodo por contato toca a superfiacutecie do objeto com uma sonda e grava

a posiccedilatildeo Este meacutetodo do qual o Coordinate Measuring Machines (CMMs) eacute

Modelagem por Pontos 24

um exemplo eacute bastante preciso mas eacute muito lento e natildeo adequado a objetos

fraacutegeis

Meacutetodos por transmissatildeo projetam ondas de energia sobre o objeto e

gravam a energia transmitida Por exemplo tomografia computadorizada que

projeta ondas de raio-x sobre o objeto e mede a quantidade de radiaccedilatildeo que

passa atraveacutes dele O resultado eacute um modelo geomeacutetrico de alta resoluccedilatildeo Este

meacutetodo pode captar detalhes do objeto que natildeo satildeo visiacuteveis de fora do objeto

Por outro lado ele eacute caro e arriscado

Meacutetodos por reflexatildeo podem ser oacuteticos ou natildeo-oacuteticos Natildeo-oacuteticos incluem

radares que medem a distacircncia a um objeto enviando microondas ou ondas

sonoras para o objeto e gravando o tempo que a onda gasta para retornar Estes

meacutetodos natildeo satildeo muito precisos nem raacutepidos

Meacutetodos por reflexatildeo oacuteticos podem ser passivos ou ativos Meacutetodos oacuteticos

passivos natildeo interagem com o objeto e incluem teacutecnicas de visatildeo computacional

como shape-from-shading stereo triangulation optical flow e meacutetodos de

decomposiccedilatildeo para video streams Estes meacutetodos raramente constroem

modelos precisos e sua maior aplicaccedilatildeo eacute em reconhecimento de objetos

Meacutetodos oacuteticos ativos projetam luz sobre um objeto de maneira estruturada

e atraveacutes da reflexatildeo da luz determinam a forma do objeto Exemplos satildeo depth

from defocus photometric stereo projected-light triangulation time of flight

Meacutetodos por reflexatildeo oacuteticos ativos tecircm muitas vantagens sobre os passivos tecircm

um melhor desempenho quando natildeo existe textura satildeo mais baratos e mais

robustos e produzem uma amostragem precisa

352 Aquisiccedilatildeo da textura

Idealmente noacutes gostariacuteamos de ter uma completa descriccedilatildeo de como um

ponto da superfiacutecie reflete a luz dependendo do vetor normal a esta superfiacutecie

da direccedilatildeo do raio de luz incidente e do comprimento de onda Tal descriccedilatildeo eacute

conhecida como Bidirectional Reflectance Distribution Function (BRDF) Medir

BRDFs com precisatildeo eacute um problema difiacutecil

Pode-se ter uma aproximaccedilatildeo da aquisiccedilatildeo de cores do objeto tirando

fotos dele O objeto eacute fotografado e a cor de cada ponto da superfiacutecie eacute obtida a

partir de um mapeamento das fotos 2D para o modelo 3D Para mapear a

fotografia agrave geometria precisamos conhecer os paracircmetros de projeccedilatildeo da

cacircmera e a sua posiccedilatildeo no momento em que a foto foi batida Para cada ponto

Modelagem por Pontos 25

3D do modelo encontramos sua projeccedilatildeo 2D no plano da cacircmera e associamos

a cor do pixel nesta projeccedilatildeo agrave cor do ponto 3D

353 Correccedilatildeo das falhas da aquisiccedilatildeo

O processo de aquisiccedilatildeo deixa frequumlentemente buracos no modelo devido

a ruiacutedos no processo ou agrave impossibilidade de aquisiccedilatildeo de determinadas partes

de uma superfiacutecie Estes buracos devem ser corrigidos Pode-se usar por

exemplo um filtro de passa-baixa para remoccedilatildeo de ruiacutedos [14] Meacutetodos de

difusatildeo geomeacutetrica tecircm sido aplicados para preenchimento dos buracos [15] A

correccedilatildeo das falhas eacute tida como um preacute-processamento para o processo de

reconstruccedilatildeo da superfiacutecie contiacutenua (seccedilatildeo 36)

36 Reconstruccedilatildeo da superfiacutecie (contiacutenua) a partir do modelo (discreto)

A reconstruccedilatildeo da superfiacutecie contiacutenua consiste em a partir de um conjunto

natildeo estruturado de pontos obter um modelo contiacutenuo desta superfiacutecie Esta

reconstruccedilatildeo eacute frequumlentemente exigida para um modelo por pontos Na sua

visualizaccedilatildeo podemos desejar focar qualquer parte do modelo Para fazermos

operaccedilotildees booleanas com os modelos podemos querer determinar exatamente

onde eles se intersectam

No entanto natildeo precisamos ter necessariamente a representaccedilatildeo contiacutenua

de todo o objeto ao mesmo tempo A reconstruccedilatildeo desta superfiacutecie a partir dos

pontos amostrados pode ser feita no momento que for mais adequado agrave

aplicaccedilatildeo Na visualizaccedilatildeo a reconstruccedilatildeo pode ser feita na projeccedilatildeo 2D da

parte do modelo em foco (seccedilatildeo 37) Para operaccedilotildees booleanas pode-se

reconstruir apenas a aacuterea da interseccedilatildeo dos modelos

Este processo de reconstruccedilatildeo de superfiacutecie tem sido muito estudado em

modelagem geomeacutetrica e geometria computacional nos uacuteltimos anos O trabalho

mais importante desta aacuterea eacute o trabalho de Amenta et al [10] que foi a primeira

soluccedilatildeo com garantias demonstraacuteveis para este problema de reconstruccedilatildeo de

superfiacutecie A seccedilatildeo 44 explica estes conceitos e o trabalho [10] Este trabalho

demonstra que teoricamente para que a reconstruccedilatildeo da superfiacutecie (contiacutenua) a

partir das amostras seja correta a amostragem deve ser adequada Ele usa o

conceito de ldquoEixo Medialrdquo para definir o que eacute uma amostragem adequada

Modelagem por Pontos 26

(seccedilatildeo 44) Em duas dimensotildees os veacutertices de Voronoi de uma amostragem

densa aproximam o ldquoEixo Medialrdquo da amostragem

Por meio deste conceito de Eixo Medial [1016] obtecircm-se paracircmetros

teoacutericos para a definiccedilatildeo de amostragem adequada e baseado neste conceito

o algoritmo apresentado em [10] traz uma soluccedilatildeo praacutetica para o problema

obtendo uma malha poligonal a partir do modelo por pontos

O PointShop 3D [11] software de ediccedilatildeo de modelos por pontos utilizado

nesta pesquisa faz quando necessaacuterio a reconstruccedilatildeo da superfiacutecie Para isso

o PointShop 3D explora a vizinhanccedila local (surfels vizinhos de acordo com suas

posiccedilotildees) Ele usa o conceito de Eixo Medial para justificar seu meacutetodo de

reconstruccedilatildeo da superfiacutecie que na praacutetica apresenta resultados bastante

satisfatoacuterios apesar de teoricamente natildeo ter garantias [16]

37 Visualizaccedilatildeo do modelo

A primeira abordagem para visualizaccedilatildeo de um modelo por pontos foi

construir uma malha de poliacutegonos a partir dos surfels e renderizaacute-la Mas a

construccedilatildeo de malhas a partir dos surfels eacute um processo muito caro e lento

principalmente para modelos complexos Na tentativa de obter uma visualizaccedilatildeo

interativa do modelo por pontos estatildeo sendo estudadas teacutecnicas que utilizam

surfels como primitiva de visualizaccedilatildeo A ideacuteia foi apresentada inicialmente por

Levoy [4]

Figura 3 [21] -Modelo por pontos e sua renderizaccedilatildeo usando Surface Splatting

Modelagem por Pontos 27

O objetivo da renderizaccedilatildeo a partir dos surfels eacute projetaacute-los na tela e

reconstruir as superfiacutecies de forma contiacutenua sem buracos Para que esta

renderizaccedilatildeo seja amplamente utilizada deve-se ter cuidado com o uso de

memoacuteria e com a qualidade da imagem gerada Teacutecnicas recentes como Surface

Splatting [6] faz a renderizaccedilatildeo interativamente com qualidade (Figura 3)

comparada a outros meacutetodos de renderizaccedilatildeo como Image Based Rendering

Em geral a visualizaccedilatildeo do modelo por pontos pode ser dividida nas seguintes

etapas

- warping - projeccedilatildeo em perspectiva de cada ponto do modelo na tela

processo anaacutelogo agrave projeccedilatildeo de veacutertices dos triacircngulos na malha triangular Se

um pixel da tela estiver contido em mais de uma projeccedilatildeo de surfels (vizinhos)

ou seja mais de um ponto cobre este pixel os atributos destes pontos seratildeo

combinados

- shading por ponto - o processo de shading eacute realizado para cada ponto

visiacutevel (os pontos que natildeo satildeo vistos do ponto de vista em questatildeo devem ser

retirados) Qualquer modelo local de shading pode ser aplicado Uma nova

teacutecnica foi proposta em Surface Splatting [6]

- reconstruccedilatildeo da imagem ndash pixels que natildeo ldquoreceberamrdquo projeccedilatildeo de

nenhum ponto formam buracos na imagem Esta imagem deve ser reconstruiacuteda

sem buracos sem aliasing e as superfiacutecies devem ser reconstruiacutedas de forma

contiacutenua e devem ser ldquosuavizadasrdquo (smooth surface)

Os algoritmos de renderizaccedilatildeo por pontos podem tratar a questatildeo de

buracos na visualizaccedilatildeo de trecircs formas [17]

Detecccedilatildeo e preenchimento de buracos no espaccedilo da tela pontos satildeo

projetados na tela e pixels que natildeo receberam pontos satildeo detectados (buracos)

Para preencher estes buracos que natildeo receberam pontos eacute feita uma

interpolaccedilatildeo entre os vizinhos

Geraccedilatildeo de mais pontos a superfiacutecie eacute interpolada no espaccedilo do modelo

para garantir que todos os pixels recebam pelo menos a projeccedilatildeo de um ponto

Splatting um surfel eacute projetado na tela e sua contribuiccedilatildeo eacute espalhada de

forma diferenciada para os pixels vizinhos Agrave medida em que o vizinho se torna

mais distante a contribuiccedilatildeo do surfel diminui

Raumlsaumlnen faz uma analogia do processo de renderizaccedilatildeo proposto em [6]

com o mapeamento de textura [15] No mapeamento de textura para um

determinado pixel da tela satildeo encontrados os pontos da textura que afetam este

Modelagem por Pontos 28

pixel Num sentido inverso em splatting para um determinado surfel (que

representa a textura) satildeo encontrados os pixels da tela que este surfel afeta

38 Ediccedilatildeo do modelo

Ediccedilatildeo de um modelo 3D consiste em operaccedilotildees que modificam

caracteriacutesticas deste modelo como cor textura forma ou criam novos modelos

O software PointShop 3D [11] software de ediccedilatildeo de modelos por pontos 3D

implementa vaacuterias destas operaccedilotildees (ver seccedilatildeo 52)

Para modificar a forma de um modelo ou criar um novo satildeo muito usadas

as operaccedilotildees booleanas que eacute o nosso enfoque nesta dissertaccedilatildeo Na

modelagem CSG (Constructive Solid Geometry) as operaccedilotildees booleanas satildeo

usadas juntamente com primitivas soacutelidas para definir um modelo No entanto

em alguns tipos de modelos estas operaccedilotildees satildeo difiacuteceis como por exemplo

em malhas poligonais Com pontos elas podem ser feitas interativamente [32]

Operaccedilotildees Booleanas com Pontos 29

4 Operaccedilotildees Booleanas com Pontos

Operaccedilotildees booleanas satildeo as operaccedilotildees de uniatildeo interseccedilatildeo e diferenccedila

definidas na teoria matemaacutetica de conjuntos Estas operaccedilotildees satildeo aplicadas em

modelos soacutelidos para alteraacute-los ou para criar novos modelos A Figura 4 abaixo

mostra a criaccedilatildeo de trecircs novos modelos a partir de quatro modelos iniciais

Figura 4 [22] Trecircs modelos novos foram criados a partir dos quatro iniciais (esfera

cilindro dois cubos) O primeiro eacute a esfera menos um cubo em seguida retirou-se outro

cubo e por uacuteltimo retirou-se o cilindro

Estas operaccedilotildees satildeo aplicadas em objetos modelados por pontos em dois

trabalhos no trabalho de Bart Adams e Philip Dutreacute [2] e no trabalho de Pauly

et Al [3] Neste capiacutetulo a seccedilatildeo 41 apresenta a parte comum aos dois

trabalhos e as seccedilotildees 42 e 43 apresentam as particularidades de cada um A

seccedilatildeo 44 discute uma questatildeo natildeo explicitada em nenhum dos dois trabalhos

41 Meacutetodos para realizar operaccedilotildees booleanas em objetos modelados por pontos

A Figura 5 mostra o resultado do meacutetodo de Adams[2] operaccedilotildees de

uniatildeo diferenccedila e interseccedilatildeo de objetos soacutelidos 3D modelados por pontos

Operaccedilotildees Booleanas com Pontos 30

Figura 5 [2]-A partir de dois modelos por pontos uma heacutelice e uma cabeccedila as trecircs operaccedilotildees booleanas satildeo mostradas da esquerda para a direita uniatildeo diferenccedila e interseccedilatildeo

Sejam A e B objetos 3D soacutelidos modelados por pontos Definem-se os

seguintes elementos

Af ndash superfiacutecie (contorno) de A que estaacute fora de B

Ad ndash superfiacutecie (contorno) de A que estaacute dentro de B

Bf ndash superfiacutecie (contorno) de B que estaacute fora de A

Bd ndash superfiacutecie (contorno) de B que estaacute dentro de A

O resultado da operaccedilatildeo booleana entre A e B seraacute um modelo C cuja

superfiacutecie de contorno pode ser determinada pela seguinte regra [2] que aqui

chamamos de Regra 1

Regra 1 A U B Af + Bf

A cap B Ad + Bd

A ndash B Af + Bd (com a orientaccedilatildeo invertida)

B ndash A Ad (com a orientaccedilatildeo invertida) + Bf

A Figura 6 mostra as operaccedilotildees com dois modelos A e B

(a) (b)

Operaccedilotildees Booleanas com Pontos 31

(c) (d)

Figura 6 [22] (a) Dois modelos A e B (b) Posicionados de forma que A tem

uma parte dentro de B eacute mostrado o resultado A U B Af + Bf (c) Resultado de A ndash B Af

+ Bd (d) Resultado de A cap B Ad + Bd

Bart [2] e Pauly [3] apresentam dois meacutetodos para determinar os

elementos acima Estes dois meacutetodos satildeo construiacutedos a partir dos seguintes

conceitos os elementos Af Ad Bf Bd satildeo uma parte da superfiacutecie modelada por

pontos e portanto satildeo conjuntos de surfels Para determinaacute-los eacute necessaacuteria

entatildeo a classificaccedilatildeo de um surfel (que pode se resumir agrave classificaccedilatildeo de um

ponto que eacute o seu centro) de uma superfiacutecie como dentro ou fora de um outro

modelo Os dois meacutetodos utilizam a seguinte regra para esta classificaccedilatildeo aqui

denominada Regra 2

Regra 2 Dado um ponto x qualquer um volume V determinado por uma superfiacutecie

de contorno S uma amostragem P da superfiacutecie S um ponto p є P que eacute a

amostra mais proacutexima a x um vetor np normal agrave S em p e orientado para fora de

S temos que

(x ndash p) np gt 0 x notinV

Ou seja para classificar um ponto em relaccedilatildeo a um modelo verificamos o

produto interno entre a normal em p (surfel mais proacuteximo a x) e o vetor (x - p)

se este produto interno for maior que zero x natildeo pertence ao volume V e seraacute

classificado como fora senatildeo seraacute classificado como dentro De maneira

ainda mais informal se a normal em p apontar para a direccedilatildeo oposta a x x seraacute

classificado como dentro se apontar para x x seraacute classificado como fora

A Figura 7 mostra a Regra 2

Operaccedilotildees Booleanas com Pontos 32

Figura 7 Para classificar o ponto x encontra-se o surfel p (com normal np) mais proacuteximo

a x Se o produto interno entre np e (x ndash p) for maior que zero entatildeo x eacute classificado como

fora senatildeo seraacute classificado como dentro

A validade da Regra 2 eacute discutida na Seccedilatildeo 44 Uma das restriccedilotildees

teoacutericas para garantir-lhe a validade eacute que a superfiacutecie seja suave

Cada um dos dois meacutetodos daacute um tratamento diferente para o uso desta

regra Pauly usa a regra diretamente encontrando o surfel mais proacuteximo a um

ponto e classificando este ponto a partir deste surfel Ele utiliza tambeacutem a

representaccedilatildeo impliacutecita MLS (Moving Least Squares [18]) para casos em que a

Regra 2 poderia falhar e para tratamento de interseccedilotildees [3] Seu meacutetodo vale

para modelos soacutelidos ou natildeo soacutelidos O meacutetodo de Adams e Dutreacute [2] utiliza

octrees [1] criando uma classificaccedilatildeo dos noacutes da octree a partir desta Regra 2

Os pontos satildeo entatildeo classificados de acordo com o noacute da octree que o conteacutem

Este segundo meacutetodo aplica-se somente a modelos soacutelidos Os dois meacutetodos

seratildeo descritos em detalhes nas seccedilotildees abaixo

Como um surfel eacute considerado um disco podemos dizer que surfels de

dois modelos diferentes podem se intersectar A interseccedilatildeo destes dois surfels

corresponde agrave interseccedilatildeo destes dois discos Estes surfels geram problemas

para visualizaccedilatildeo se forem acrescentados ao resultado sem um tratamento

especiacutefico apresentaratildeo artefatos natildeo desejaacuteveis na renderizaccedilatildeo do modelo

resultado (Figura 8) se natildeo forem acrescentados ao resultado deixaratildeo buracos

no modelo

Operaccedilotildees Booleanas com Pontos 33

Figura 8 [2] -Interseccedilatildeo de duas esferas agrave esquerda sem nenhum tratamento de interseccedilatildeo agrave direita apoacutes o tratamento de interseccedilatildeo

Aleacutem disso nem sempre esta interseccedilatildeo forma uma superfiacutecie suave

Esta interseccedilatildeo pode formar uma aresta viva (seccedilatildeo 4223) gerando

problemas tambeacutem para o uso da Regra 2 que eacute vaacutelida apenas para superfiacutecies

suaves Eacute necessaacuterio entatildeo fazer um tratamento desta superfiacutecie de interseccedilatildeo

(formada por surfels originados de diferentes modelos) O tratamento de cada

um dos meacutetodos para este caso seraacute tambeacutem abaixo apresentado

42 Meacutetodo de Adams e Dutreacute

O meacutetodo aplica-se somente a modelos soacutelidos Para determinaccedilatildeo dos

elementos da aqui chamada Regra 1 (seccedilatildeo 41) este meacutetodo utiliza uma octree

[1] que subdivide o espaccedilo do modelo em trecircs fora dentro ou no contorno do

modelo Estes espaccedilos satildeo determinados pela classificaccedilatildeo dos noacutes da octree a

partir da Regra 2 Tambeacutem eacute usado o meacutetodo TINN - Triangle Inequality Nearest

Neighbour [19] - para otimizar a pesquisa dentro do noacute A seguir descrevemos o

modelo usado neste meacutetodo apresentando os dados associados aos pontos o

tipo de distribuiccedilatildeo e o algoritmo que realiza as operaccedilotildees

421 Modelo por Pontos em Adams e Dutreacute

Os surfels neste meacutetodo contecircm as seguintes informaccedilotildees posiccedilatildeo do

surfel xs orientaccedilatildeo do surfel ns e raio de alcance do surfel rs O surfel pode ser

pensado como um disco ortogonal a ns com centro xs e raio rs O raio eacute

escolhido de tal forma que a projeccedilatildeo dos discos no plano da imagem se

sobreponham

Operaccedilotildees Booleanas com Pontos 34

Os objetos representados satildeo soacutelidos A distribuiccedilatildeo dos surfels eacute

uniforme embora o algoritmo natildeo exija esta condiccedilatildeo Para cada soacutelido eacute

definido um rmax = Max rs o raio de alcance do maior surfel pertencente agrave

superfiacutecie do soacutelido Como o raio eacute escolhido de tal forma que a projeccedilatildeo dos

discos no plano da imagem se sobreponham o controle da amostragem eacute

entatildeo ligado agrave renderizaccedilatildeo

422 Algoritmo de Operaccedilotildees Booleanas

Utilizando objetos modelados da forma descrita acima o meacutetodo realiza

operaccedilotildees de uniatildeo interseccedilatildeo e diferenccedila com modelos soacutelidos Supondo dois

modelos soacutelidos S1 e S2 O algoritmo pode ser dividido nas seguintes etapas

Criaccedilatildeo de uma octree para cada modelo Teste Dentro-Fora Tratamento da

interseccedilatildeo Estas etapas satildeo apresentadas nas proacuteximas seccedilotildees

4221 Criaccedilatildeo de uma octree para cada modelo

Eacute criada uma octree [1] para cada modelo A criaccedilatildeo de uma octree eacute feita

da seguinte forma

Gera-se a ldquoCaixa envolventerdquo caixa alinhada com os eixos que conteacutem

todo o modelo A ldquoCaixa envolventerdquo corresponde ao noacute raiz da octree Este noacute

conteacutem inicialmente todos os surfels do modelo Em seguida o noacute raiz eacute

dividido em oito noacutes filhos Os surfels satildeo distribuiacutedos entre estes oito noacutes Cada

um deles caso contenha surfels eacute dividido novamente em 8 filhos e seus surfels

satildeo redistribuiacutedos entre eles Este processo eacute repetido recursivamente enquanto

o nuacutemero de surfels do noacute for maior que zero ou ateacute uma profundidade maacutexima

preacute-definida da octree ser alcanccedilada

Cada noacute da octree deve ser classificado O objetivo desta classificaccedilatildeo eacute

determinar que parte da octree estaacute dentro do modelo e que parte estaacute fora Os

noacutes da octree satildeo entatildeo classificados como ldquodentrordquo ldquoforardquo e ldquocontornordquo

Podemos ilustrar esta classificaccedilatildeo em 2D a Figura 9 mostra uma quadtree

classificada

Operaccedilotildees Booleanas com Pontos 35

Figura 9-Um objeto representado por pontos com suas normais e sua quadtree correspondente classificada os noacutes cinza claro estatildeo dentro do modelo noacutes cinza mais escuro estatildeo fora do modelo e noacutes com cinza intermediaacuterio satildeo noacutes cheios noacutes que conteacutem pontos

O noacutes que conteacutem surfels satildeo classificados como ldquocontornordquo Para

classificar um noacute vazio existem trecircs casos

o noacute vazio tem apenas um vizinho-irmatildeo natildeo vazio

o noacute vazio tem mais de um vizinho-irmatildeo natildeo vazio

o noacute vazio natildeo tem vizinhos-irmatildeos natildeo vazios

No primeiro caso o noacute vazio eacute classificado pelo seu vizinho natildeo vazio No

segundo caso considera-se qualquer um dos vizinhos natildeo vazios No terceiro

caso classifica-se primeiro os noacutes vizinhos e eacute dada a mesma classificaccedilatildeo para

o noacute vazio Como cada noacute natildeo folha de uma octree tem pelo menos um noacute filho

natildeo vazio sempre pode ser feita a classificaccedilatildeo dos noacutes vazios A classificaccedilatildeo

eacute feita da seguinte forma dentre os surfels do vizinho-irmatildeo escolhido encontra-

se o surfel mais proacuteximo ao noacute a ser classificado Se a normal deste surfel

aponta para o noacute vazio a ser classificado entatildeo ele eacute classificado como ldquoforardquo

Se a normal aponta no sentido contraacuterio entatildeo ele eacute classificado como ldquodentrordquo

De maneira mais formal sejam cv e cc coordenadas dos centros do noacute vazio e

do noacute contorno respectivamente Seja s o surfel mais proacuteximo ao noacute vazio e ns

a normal em s Se ( cv - cc )٠ ns gt 0 ( produto interno entre a normal em s e o

vetor cv - cc for maior que zero ) o noacute vazio seraacute classificado como ldquoforardquo

Senatildeo seraacute classificado como ldquodentrordquo

Em geral os noacutes ldquocontornordquo satildeo subdivididos em trecircs partes uma que estaacute

fora do modelo uma que estaacute dentro do modelo e uma terceira que conteacutem os

surfels Esta subdivisatildeo eacute feita por meio da criaccedilatildeo de dois planos paralelos que

Operaccedilotildees Booleanas com Pontos 36

dividem o noacute Para determinar estes planos calcula-se o vetor nm igual agrave

meacutedia das normais dos surfels do noacute nm = sum ns sum ns onde ns eacute a normal de

cada surfel do noacute

Em seguida encontra-se o surfel com maior produto interno entre a sua

normal e a normal meacutedia d1=Max(nm ٠ ns) Este surfel juntamente com a normal

meacutedia define um dos planos Encontra-se tambeacutem o surfel com menor produto

interno entre a sua normal e a normal meacutedia d2=Min(nm ٠ ns) Este surfel

juntamente com a normal meacutedia define o outro plano A Figura 10 mostra a

divisatildeo de um noacute de uma quadtree nas trecircs partes dentro do modelo fora do

modelo e no ldquocontornordquo

Esta subdivisatildeo aplica-se apenas a noacutes que conteacutem surfels cujas direccedilotildees

natildeo variem em mais de 90 graus Caso isso ocorra ele natildeo seraacute subdividido Ou

seja se um noacute possuir dois vetores normais (de dois surfels diferentes) que

formem um acircngulo maior que 90 graus ele natildeo seraacute subdividido

Figura 10 [2] -Divisatildeo de noacute de contorno a parte agrave esquerda estaacute fora do modelo a parte agrave direita estaacute dentro do modelo e a faixa intermediaacuteria conteacutem os surfels

4222 Teste Dentro-Fora

O Teste Dentro-Fora faz a classificaccedilatildeo dos surfels de um modelo como

ldquodentrordquo ou ldquoforardquo de outro modelo Portanto aplicaremos este mesmo teste duas

vezes uma para o modelo S1 em relaccedilatildeo ao modelo S2 e outra para S2 em

relaccedilatildeo a S1 Vamos mostrar o teste Dentro-Fora para o caso da classificaccedilatildeo

dos surfels do modelo S1 em relaccedilatildeo a S2

Operaccedilotildees Booleanas com Pontos 37

No item anterior foram criadas duas octrees uma para o modelo S1 e

outra para o modelo S2 Chamemos de A e B as octrees de S1 e S2

respectivamente Para classificar S1 em relaccedilatildeo a S2 inicialmente eacute feita uma

avaliaccedilatildeo da posiccedilatildeo de A em relaccedilatildeo a B A e B podem estar nas seguintes

situaccedilotildees

- A natildeo intersecta B

- A intersecta apenas noacutes ldquoforardquo de B

- A intersecta apenas noacutes ldquodentrordquo de B

- A intersecta noacutes ldquoforardquo e noacutes ldquodentrordquo de B

Para testar estas situaccedilotildees os noacutes satildeo aumentados de rmax o raio do

maior surfel do modelo soacutelido Isto eacute feito para compensar o fato de que o surfel

natildeo eacute apenas um ponto mas sim considerado como um disco

No primeiro e no segundo caso todos os surfels de A satildeo classificados

como ldquoforardquo No terceiro caso todos os surfels de A satildeo classificados como

ldquodentrordquo

No quarto caso temos que percorrer a octree A Comeccedilando pelo noacute raiz

percorre-se os filhos deste noacute Para cada filho os quatro testes acima satildeo feitos

Se o noacute filho encontra-se em um dos trecircs primeiros casos a classificaccedilatildeo eacute dada

como foi citada acima Se um filho estaacute no quarto caso e natildeo eacute um noacute folha

repete-se recursivamente o mesmo procedimento para seus filhos ateacute encontrar-

se um noacute folha Para um noacute que estaacute no quarto caso e eacute folha percorre-se a lista

de surfels que este noacute conteacutem classificando cada um destes surfels Seja sa um

surfel desta lista Para este caso percorre-se a octree B para classificar sa

Primeiramente encontramos o noacute de B que conteacutem sa Se este noacute de B foi

dividido testa-se de acordo com esta divisatildeo do noacute se o surfel sa estaacute na parte

do noacute que estaacute dentro do modelo ele eacute classificado como ldquodentrordquo se sa estaacute na

parte que estaacute fora do modelo ele eacute classificado como ldquoforardquo se sa estaacute na parte

intermediaacuteria ou se o noacute de B natildeo foi subdividido em planos encontra-se sb que

eacute o surfel pertencente a este noacute de B que estaacute mais proacuteximo de sa sa seraacute

entatildeo classificado de acordo com sb Se ( sa - sb )٠ nb gt 0 sa eacute classificado

como ldquoforardquo senatildeo eacute classificado como ldquodentrordquo Se os discos de sb e sa se

intersectam sa eacute marcado como interseccedilatildeo Para encontrar sb o algoritmo

implementa o meacutetodo TINN ndash Triangle Inequality Nearest Neighbour [19]

Operaccedilotildees Booleanas com Pontos 38

4223 Tratamento da interseccedilatildeo

Os surfels de A que intersectam surfels de B satildeo classificados como

ldquointerseccedilatildeordquo Se eles natildeo forem incluiacutedos no modelo resultado o soacutelido resultado

teraacute buracos Se eles forem incluiacutedos sem algum tratamento eles natildeo

representaratildeo adequadamente a regiatildeo Em geral o surfel sa (um surfel

ldquointerseccedilatildeordquo de A) eacute dividido em dois pelo plano que conteacutem o surfel sb (surfel de

B que sa intersecta) uma parte que estaacute fora de B e outra que estaacute dentro de B

Dependendo da operaccedilatildeo que estaacute sendo realizada vamos querer manter uma

destas partes do surfel sa no modelo resultado Seja xa a posiccedilatildeo do surfel sa e o

surfel sa uma circunferecircncia de centro xa e raio ra igual ao raio de alcance de sa

O plano que conteacutem o surfel sb define uma corda desta circunferecircncia como

mostra a Figura 11 O surfel sa seraacute substituiacutedo por um surfel menor que

ultrapassa esta corda de uma distacircncia e definida pelo usuaacuterio Para cobrir

completamente a interseccedilatildeo seratildeo adicionados surfels menores que cruzam a

corda de interseccedilatildeo

Figura 11 -Interseccedilatildeo do surfel s e do plano que passa pelo surfel t o surfel mais proacuteximo a s O surfel s eacute substituiacutedo por trecircs surfels menores

Operaccedilotildees Booleanas com Pontos 39

O tratamento de interseccedilatildeo proposto por Adams e Dutreacute [2] natildeo soacute evita

os buracos mas tambeacutem cria uma forma de renderizaccedilatildeo de arestas vivas A

colocaccedilatildeo de vaacuterios pequenos surfels na regiatildeo da interseccedilatildeo permite esta

correta renderizaccedilatildeo das ldquoarestas vivasrdquo Desta forma o problema das arestas

vivas eacute resolvido na modelagem (Figura 12) A vantagem de se resolver o caso

na modelagem eacute que natildeo eacute necessaacuterio fazer um tratamento especial na

renderizaccedilatildeo para que mostre esta aresta viva Diferente do tratamento feito

em Pauly (seccedilatildeo 431) que resolve esta questatildeo em tempo de renderizaccedilatildeo

Aleacutem disso o tratamento resolve alguns casos onde a Regra 2 poderia falhar

(veja em Validade da Regra 2-seccedilatildeo 44)

Figura 12 [2] -Agrave direita eacute mostrado o resultado do tratamento de interseccedilatildeo para o caso de Arestas Vivas do objeto agrave esquerda

43 Meacutetodo de Pauly

O meacutetodo aplica-se a objetos soacutelidos e natildeo soacutelidos Os modelos podem ser

obtidos a partir de diferentes entradas como nuvem de pontos irregulares ou por

meio de scanners 3D Cria um modelo hiacutebrido destes objetos usa o modelo por

pontos juntamente com a representaccedilatildeo impliacutecita Moving Least Squares - MLS

[18] Realiza operaccedilotildees booleanas com pontos e utiliza adicionalmente MLS

para alguns casos de classificaccedilatildeo de surfels e no tratamento de interseccedilatildeo A

seguir apresentamos as caracteriacutesticas do modelo por pontos deste meacutetodo e o

algoritmo que realiza as operaccedilotildees

Operaccedilotildees Booleanas com Pontos 40

431 Modelo em Pauly

O modelo eacute uma estrutura hiacutebrida de pontos com a representaccedilatildeo impliacutecita

Moving Least Squares - MLS [18] Esta estrutura eacute usada para fazer operaccedilotildees

booleanas e tambeacutem operaccedilotildees de free-form (natildeo abordadas nesta

dissertaccedilatildeo) Para operaccedilotildees booleanas a representaccedilatildeo MLS permite que a

curva de interseccedilatildeo entre os modelos seja reconstruiacuteda e surfels sejam

colocados nesta curva e em alguns casos de classificaccedilatildeo de surfels mostrados

na seccedilatildeo 432 Para este modelo natildeo existem restriccedilotildees quanto agrave forma do

objeto

Os surfels contecircm informaccedilotildees sobre sua posiccedilatildeo e sua normal Aleacutem

disso surfels podem conter informaccedilotildees adicionais como textura cor

propriedades de materiais

A distribuiccedilatildeo dos surfels eacute natildeo-uniforme e a amostragem eacute

aproximadamente adequada (Veja seccedilatildeo 44)

432 Algoritmo de Operaccedilotildees Booleanas

O algoritmo classifica surfels de um modelo como ldquodentrordquo ou ldquoforardquo de

outro modelo Antes de colocarmos como eacute feita esta classificaccedilatildeo devemos

acrescentar que Pauly estende esta classificaccedilatildeo para modelos que natildeo satildeo

soacutelidos Ou seja mesmo um modelo natildeo soacutelido divide o espaccedilo da cena (espaccedilo

em que se encontra o modelo) em dois sub-espaccedilos dentro ou fora do modelo

Pauly faz esta subdivisatildeo da seguinte forma

Como a superfiacutecie que determina o modelo eacute orientada (conteacutem vetores

normais agrave superfiacutecie que apontam para ldquoforardquo do modelo) Pauly considera que

um modelo natildeo soacutelido divide o espaccedilo em dois sub-espaccedilos um ldquoforardquo do

modelo (os vetores normais apontam para este sub-espaccedilo) e um que estaacute

ldquodentrordquo do modelo (os vetores normais apontam para direccedilatildeo oposta a este sub-

espaccedilo) Por exemplo um plano eacute representado como um conjunto de surfels

contidos num determinado espaccedilo geomeacutetrico plano π Cada surfel conteacutem um

vetor normal direcionado Este modelo divide entatildeo o espaccedilo em dois sub-

espaccedilos o sub-espaccedilo que eacute apontado por estes surfels (considerado ldquoforardquo do

modelo) e o sub-espaccedilo que estaacute na direccedilatildeo oposta (considerado ldquodentrordquo do

modelo) Desta forma ele aplica as classificaccedilotildees de ldquodentrordquo e ldquoforardquo de um

modelo tambeacutem a modelos natildeo soacutelidos A partir desta consideraccedilatildeo as

Operaccedilotildees Booleanas com Pontos 41

operaccedilotildees booleanas satildeo realizadas com os modelos natildeo soacutelidos da mesma

forma que com os modelos soacutelidos

Para determinar esta classificaccedilatildeo (dentro ou fora do modelo) Pauly utiliza

a Regra 2 Para pesquisa do surfel mais proacuteximo o meacutetodo usa a estrutura Kd-

tree [16] e tambeacutem o algoritmo ANN [16] No entanto o meacutetodo apresenta uma

restriccedilatildeo da Regra 2 ela soacute deve ser usada para classificaccedilotildees de pontos x se

a distacircncia x-p for maior que o espaccedilamento da amostragem local ηp em p

Este espaccedilamento da amostragem local ηp em p eacute um caacutelculo aproximado da

distacircncia meacutedia entre os surfels vizinhos a p Se x estaacute muito proacuteximo agrave

superfiacutecie a classificaccedilatildeo pode falhar Neste caso ele calcula o ponto exato de

S mais proacuteximo a x usando a projeccedilatildeo MLS (ldquoMoving Least Squaresrdquo)

Por questotildees de melhoria de desempenho utiliza-se o fato de que sendo

Ωp (x) a classificaccedilatildeo do ponto x em relaccedilatildeo agrave amostragem P tem-se que Ωp (x)

= Ωp (xrsquo) para todos os pontos de xrsquo que estatildeo dentro da esfera de centro x e

raio igual a x-p - ηp (onde p eacute o surfel mais proacuteximo e ηp eacute o espaccedilamento

local da amostragem em p acima citado) Ou seja sendo x um ponto qualquer p

o surfel mais proacuteximo a x ηp eacute o espaccedilamento local da amostragem em p se

desenharmos uma esfera com centro x e raio igual a x-p - ηp temos que

todos os pontos xrsquo que estatildeo dentro da esfera teratildeo a mesma classificaccedilatildeo de x

Desta forma o nuacutemero de vezes que a classificaccedilatildeo eacute feita (pesquisando-se o

surfel mais proacuteximo ao ponto e usando a Regra 2) diminui em ateacute 90 Assim

em geral a classificaccedilatildeo de um surfel eacute obtida a partir do seu surfel vizinho

Dados

S1 a superfiacutecie MLS de contorno que define o modelo A

S2 a superfiacutecie MLS de contorno que define o modelo B

P1 o conjunto de surfels que representa a superfiacutecie S1

P2 o conjunto de surfels que representa a superfiacutecie S2

Ωp1 (x) a classificaccedilatildeo do ponto p em relaccedilatildeo a uma amostragem P1

Q1 o subconjunto de P1 que vai compor o resultado

Ωp2 (x) a classificaccedilatildeo do ponto p em relaccedilatildeo a uma amostragem P2

Q2 o subconjunto de P2 que vai compor o resultado

Os conjuntos Q1 e Q2 satildeo obtidos por meio da Tabela 1 mostrada abaixo

Operaccedilotildees Booleanas com Pontos 42

Tabela 1 Classificaccedilatildeo para operaccedilotildees booleanas

Para o tratamento de interseccedilatildeo neste meacutetodo satildeo computados pontos

que caem exatamente na curva de interseccedilatildeo e estes satildeo acrescentados ao

modelo resultado Estes pontos satildeo determinados de forma que a densidade da

amostragem vai crescendo agrave medida que os surfels se aproximam da curva de

interseccedilatildeo e convergem para este ponto de interseccedilatildeo como mostra a Figura

13

(a) (b) (c)

Figura 13 - Os novos surfels satildeo colocados exatamente na curva de interseccedilatildeo

e convergem para o ponto de interseccedilatildeo

A Figura 14 mostra o processo de encontrar os surfels que caem nesta

curva de interseccedilatildeo Inicialmente satildeo encontrados todos os pontos de Q1 e Q2

que estatildeo proacuteximos agrave curva de interseccedilatildeo por meio da funccedilatildeo de distacircncia do

operador de projeccedilatildeo MLS Em seguida procura-se todos os pares mais

proacuteximos (q1 є Q1 q2 є Q2 ) e computa-se o ponto q na curva de interseccedilatildeo da

seguinte forma (veja a Figura 14)Seja r o ponto na linha de interseccedilatildeo dos dois

planos tangentes em q1 e q2 e que estaacute mais proacuteximo a estes dois pontos isto eacute

que minimiza a distacircncia ||r-q1|| + ||r-q2|| r eacute a primeira aproximaccedilatildeo de q e agora

pode ser projetado sobre S1 e S2 para obter dois novos pontos de partida q1rsquo e q2

rsquo

para a iteraccedilatildeo Este procedimento pode ser repetido iterativamente ateacute que os

pontos q1 e q2 convirjam ao ponto q na curva de interseccedilatildeo Normalmente este

processo requer menos de trecircs iteraccedilotildees

Operaccedilotildees Booleanas com Pontos 43

(a) (b)

(c)

Figura 14 (a) Suponhamos a reta que eacute a interseccedilatildeo do plano tangente a S1 em q1 e o

plano tangente a S2 em q2 O ponto r eacute o ponto desta reta que estaacute mais proacuteximo a q1 e

q2 (b) r eacute projetado sobre S1 e S2 obtendo-se q1acute e q2acute dois novos pontos de partida

para nova iteraccedilatildeo (c) A nova iteraccedilatildeo gera r que eacute uma aproximaccedilatildeo melhor de q

Pauly faz o tratamento de arestas vivas em tempo de renderizaccedilatildeo Ele

faz uma alteraccedilatildeo no renderizador Marca os surfels de interseccedilatildeo e ao

renderizaacute-los satildeo cortados para gerar uma aresta viva

44 Validade da Regra 2

Os dois meacutetodos analisados nesta dissertaccedilatildeo utilizam a seguinte regra

para a classificaccedilatildeo de um surfel

Regra 2 dado um volume V determinado por uma superfiacutecie de contorno

S uma amostragem P da superfiacutecie S um ponto x qualquer um ponto p є P que

eacute a amostra mais proacutexima a x um vetor ny normal a S em p e orientado para

fora de S temos que (x ndash p) np gt 0 x notinV

Em [16] eacute colocado que esta regra eacute tirada da seguinte propriedade da

geometria diferencial (aqui chamada Propriedade 1)

Propriedade 1 Dado um volume V determinado por uma superfiacutecie de

contorno S contiacutenua e duplamente diferenciaacutevel um ponto x qualquer um ponto

Operaccedilotildees Booleanas com Pontos 44

y є S que eacute o ponto de S mais proacuteximo a x um vetor ny normal a S em y e

orientado para fora de S temos que (x ndash y) ny gt 0 x notinV

A Figura 15 ilustra esta propriedade

Figura 15 Para verificar se o ponto x estaacute fora de um contorno C encontra-se o ponto y

de C Se o produto interno entre a normal em y e o vetor que liga y a x for maior que

zero entatildeo x estaacute fora de C senatildeo estaacute dentro de C

Pauly assume que tendo uma amostragem P da superfiacutecie S podemos

usar a Propriedade 1 substituindo y por p o surfel mais proacuteximo ao ponto x (x ndash

p) np gt 0 x notinV (Regra 2) Esta amostragem P em seu trabalho eacute

(aproximadamente) uma ldquoamostragem adequadardquo Tambeacutem seu tratamento de

interseccedilatildeo cria uma aproximaccedilatildeo dela (seccedilatildeo 43) Empiricamente a

ldquodiscretizaccedilatildeo da propriedaderdquo eacute vaacutelida a partir desta suposiccedilatildeo Mas isso natildeo foi

demonstrado teoricamente em seu trabalho

Pauly coloca em [16] que natildeo existe ainda uma teoria matemaacutetica rigorosa

de amostragem anaacuteloga a teoria de Fourier para superfiacutecies discretas

A melhor aproximaccedilatildeo teoacuterica para esta aacuterea eacute o uso do Eixo Medial que

foi colocado em [10] Vamos descrever este trabalho brevemente nesta seccedilatildeo

Este trabalho apresenta um algoritmo de reconstruccedilatildeo de superfiacutecie que parte de

uma amostragem adequada (abaixo definida) de pontos e obteacutem uma malha

que eacute topologicamente equivalente agrave superfiacutecie do objeto e agrave medida que a

densidade da amostragem cresce a saiacuteda converge para esta superfiacutecie

Para definir amostragem adequada o trabalho parte do conceito de Eixo

Medial

Operaccedilotildees Booleanas com Pontos 45

ldquoEixo Medialrdquo de uma superfiacutecie 2D posicionada no R3 eacute o conjunto

(fechado) de pontos pi para os quais buscando-se o ponto da superfiacutecie que

estaacute mais proacuteximo a pi mais de um ponto pertencentes a esta superfiacutecie satildeo

encontrados A Figura 16 abaixo ilustra o Eixo Medial em 2D

Figura 16 [10] As curvas de cor mais clara satildeo o Eixo Medial da curva em preto

Em duas dimensotildees os veacutertices de Voronoi de uma amostragem densa

aproximam o ldquoEixo Medialrdquo da amostragem (mas esta propriedade natildeo se

estende a 3D) A Figura 17 mostra o Eixo Medial em 3D

Figura 17 [10] Em 3D geralmente o Eixo Medial eacute uma superfiacutecie 2D (em cor mais

clara) Aqui o quadrado eacute o Eixo Medial da superfiacutecie transparente que o contorna

Podemos definir agora a amostragem adequada da seguinte forma

Supondo uma superfiacutecie suave que quer dizer uma 2-manifold duplamente

diferenciaacutevel posicionada no R3 uma ldquoamostragem adequadardquo desta superfiacutecie eacute

aquela na qual a densidade da amostragem eacute (pelo menos) inversamente

proporcional agrave distacircncia ao ldquoEixo Medialrdquo A Figura 18 mostra uma amostragem

adequada

Operaccedilotildees Booleanas com Pontos 46

Figura 18 [10] A figura mostra o diagrama de Voronoi de uma amostragem de pontos S

Da mesma forma que o a amostragem aproxima a curva os veacutertices de Voronoi

aproximam o Eixo Medial

Na praacutetica na reconstruccedilatildeo da superfiacutecie uma aproximaccedilatildeo deste ldquoEixo

Medialrdquo eacute computada (devido agrave dificuldade de computaacute-lo exatamente e em

alguns casos ateacute impossibilidade)

Melhorias Propostas 47

5 Melhorias Propostas

No capiacutetulo 4 apresentamos dois meacutetodos que realizam operaccedilotildees

booleanas em modelos por pontos o meacutetodo de Adams e Dutreacute [2] e o meacutetodo

de Pauly[3] Para esta dissertaccedilatildeo usamos o meacutetodo de Adams e Dutreacute [2] e

propomos as seguintes melhorias

- Alteramos o momento em que eacute feita a classificaccedilatildeo da octree Fazemos

esta classificaccedilatildeo durante a sua criaccedilatildeo Os noacutes filhos de um noacute pai P qualquer

satildeo classificados logo apoacutes a criaccedilatildeo de todos estes filhos de P

independentemente do restante da octree ter sido criada Isso pode ser feito

porque a octree eacute construiacuteda na ordem raiz-esquerda-direita (preorder

traversal) e portanto apoacutes todos os filhos de um noacute pai serem criados a parte

necessaacuteria da octree para a classificaccedilatildeo destes filhos jaacute estaacute criada

- A classificaccedilatildeo da octree eacute otimizada classificando-se os cantos dos seus

noacutes como dentro ou fora do modelo Na classificaccedilatildeo de um noacute n1 a partir de seu

vizinho n2 se os cantos que satildeo comuns a n1 e n2 tiverem a mesma

classificaccedilatildeo esta seraacute dada ao noacute Assim diminuiacutemos o nuacutemero de pesquisas

pelo surfel mais proacuteximo que eacute a parte criacutetica da classificaccedilatildeo dos noacutes da octree

em termos de tempo de processamento

- Acrescentamos um valor miacutenimo (maior que zero) para o nuacutemero de

surfels contidos em um noacute que eacute uma das condiccedilotildees de parada na criaccedilatildeo da

octree Verificamos que desta forma diminui-se a chance de erro na classificaccedilatildeo

de partes criacuteticas como ldquoarestas vivasrdquo

Uma comparaccedilatildeo entre a nossa implementaccedilatildeo e a de Pauly tambeacutem seraacute

feita no capiacutetulo 6

51 Descriccedilatildeo do algoritmo

O algoritmo implementado para esta dissertaccedilatildeo baseado no meacutetodo de

Adams e Dutreacute [2] pode ser dividido nas seguintes partes Criaccedilatildeo e

classificaccedilatildeo de uma octree para cada modelo Teste DentroFora Criaccedilatildeo do

modelo resultado Natildeo foi implementado tratamento especial algum de

interseccedilatildeo para o nosso plugin As proacuteximas seccedilotildees apresentam estas partes

Melhorias Propostas 48

511 Criaccedilatildeo e classificaccedilatildeo de uma octree para cada modelo

As ideacuteias do algoritmo satildeo aqui ilustradas em 2D mas a extensatildeo delas

para 3D eacute feita facilmente

Para cada modelo a octree eacute criada e classificada da seguinte forma

Figura 19-Quadtree classificada Os noacutes mais escuros estatildeo fora do modelo os mais claros dentro e os em tom intermediaacuterio satildeo noacutes de contorno

Gera-se uma ldquocaixa envolventerdquo do modelo contendo todos os surfels e

cria-se o noacute raiz da octree que corresponde a esta ldquocaixa envolventerdquo Este noacute

raiz eacute subdividido em oito filhos e seus surfels satildeo distribuiacutedos entre eles Ao

inveacutes de testarmos os valores de xy e z para cada surfel a fim de determinar

para qual filho ele iraacute utilizamos listas auxiliares Primeiro os surfels satildeo

subdivididos em dois grupos pelos valores de x e armazenados em uma lista

auxiliar Em seguida cada uma das listas eacute subdividida pelo valor de y e as

quatro listas obtidas seratildeo subdivididas pelo valor de z Ao final teremos 8 listas

de surfels cada uma delas pertencente a um filho

Cada noacute seraacute entatildeo novamente subdividido enquanto contiver um nuacutemero

de surfels gt nmin (valor preacute-definido) ou enquanto a profundidade da aacutervore lt pmax

(valor preacute-definido) Na figura 19 pmax = 3 e nmin = 3

Melhorias Propostas 49

Figura 20-O noacute cheio eacute dividido em trecircs partes agrave esquerda a regiatildeo estaacute dentro do modelo agrave direita estaacute fora e entre as duas linhas que dividem o noacute estaacute a regiatildeo que conteacutem os surfels

Os noacutes cheios recebem um tratamento especial Eles satildeo subdivididos em

trecircs partes da seguinte forma uma que estaacute fora do modelo outra que estaacute

dentro e uma que conteacutem os surfels Esta subdivisatildeo eacute feita por meio da criaccedilatildeo

de dois planos paralelos que dividem o noacute Para determinar estes planos

calcula-se o vetor nm igual agrave meacutedia das normais dos surfels do noacute nm = sum ns

sum ns onde ns eacute a normal de cada surfel do noacute Em seguida encontra-se o

surfel com maior produto interno entre a sua normal e a normal meacutedia

d1=Max(nm ٠ ns) Este surfel juntamente com a normal meacutedia define um dos

planos Encontra-se tambeacutem o surfel com menor produto interno entre a sua

normal e a normal meacutedia d2=Min (nm ٠ ns) Este surfel juntamente com a normal

meacutedia define o outro plano (Figura 20) Se o noacute conteacutem surfels de superfiacutecies de

orientaccedilotildees diferentes ele natildeo seraacute subdividido ou seja os planos coincidiratildeo

com os planos que delimitam o proacuteprio noacute Este teste foi implementado da

seguinte forma escolhe-se um surfel qualquer do noacute Calcula-se o produto

interno entre a normal deste surfel e as outras normais dos outros surfels deste

noacute Se algum produto interno for menor que zero este noacute natildeo seraacute subdividido

Apoacutes a etapa de subdivisatildeo classificam-se os oito cantos deste noacute como

dentro ou fora do modelo por meio da classificaccedilatildeo de um ponto que

descreveremos na sub-seccedilatildeo 5111

Melhorias Propostas 50

a b

c d

Figura 21-O noacute a eacute classificado pelo noacute c o noacute d tambeacutem eacute classificado pelo noacute c a classificaccedilatildeo do noacute a eacute propagada para o noacute b

Jaacute os noacutes vazios da octree seratildeo classificados como ldquodentrordquo ou ldquoforardquo do

modelo da seguinte forma cada noacute folha vazio eacute classificado a partir de um de

seus irmatildeos vizinhos adjacentes Se ele possuir um vizinho adjacente cheio ele

seraacute classificado por este vizinho se natildeo possuir os vizinhos adjacentes seratildeo

classificados primeiro e ele teraacute esta mesma classificaccedilatildeo (Figura 21) Como tem

que existir sempre pelo menos um noacute cheio entre os filhos de um noacute pai entatildeo

sempre esta classificaccedilatildeo poderaacute ser feita Com a classificaccedilatildeo de todos os

filhos tem-se tambeacutem a classificaccedilatildeo dos cantos do noacute pai

Mf03c003fmx a b

Figura 22-Os cantos a e b do noacute cheio possuem a mesma classificaccedilatildeo fora do modelo Esta classificaccedilatildeo foi dada ao noacute vazio adjacente

Melhorias Propostas 51

Para classificar um noacute vazio por meio de um noacute cheio verificam-se os

cantos comuns destes dois noacutes se todos os cantos tiverem a mesma

classificaccedilatildeo esta seraacute dada ao noacute vazio (Figura 22) Se houver classificaccedilotildees

diferentes escolhe-se o surfel do noacute cheio mais proacuteximo ao noacute vazio faz-se o

produto interno entre a normal deste surfel e o vetor que liga o centro do noacute

cheio ao centro do noacute vazio (ou o vetor que liga o surfel ao centro do noacute vazio)

Se o produto interno for maior que zero o noacute eacute classificado como ldquoforardquo senatildeo eacute

classificado como ldquodentrordquo Para encontrar o surfel (pertencente a um noacute cheio)

mais proacuteximo ao noacute vazio existem dois casos

- O noacute cheio eacute folha percorre-se toda a lista de surfels e escolhe o surfel

mais proacuteximo da fronteira entre o noacute cheio e o vazio

- O noacute cheio natildeo eacute um noacute folha percorrem-se os filhos do noacute cheio ou seja

esta pesquisa eacute feita descendo na octree a partir do noacute cheio procurando o

surfel mais proacuteximo agrave fronteira do pai com o noacute vazio a ser classificado

Classificando o centro do noacute vazio todo o noacute deve ter a mesma

classificaccedilatildeo pois este noacute natildeo conteacutem surfels Para encontrar o surfel do noacute

vazio mais proacuteximo da fronteira entre o noacute cheio e o vazio basta testar o valor da

coordenada se a fronteira eacute o lado direito do noacute cheio escolhe-se o surfel com

maior coordenada lsquoxrsquo se eacute o lado esquerdo escolhe-se o surfel com menor lsquoxrsquo

se lado superior surfel com maior lsquoyrsquo etc A seguir apresentamos a classificaccedilatildeo

de um ponto qualquer pertencente a um noacute cheio

Figura 23- Quadtree classificada

Melhorias Propostas 52

5111 Classificaccedilatildeo de um ponto de um noacute cheio

Figura 24 [2] A normal n eacute a normal meacutedia e os surfels s1 e s2 juntamente com a normal

n definem as retas que dividem o noacute O ponto a estaacute fora do modelo e o ponto b estaacute

dentro do modelo

Para um ponto localizado dentro do noacute faz-se o seguinte teste se o noacute foi

dividido testa-se de acordo com a divisatildeo do noacute se o ponto estaacute na parte do noacute

que estaacute dentro do modelo ele eacute classificado como ldquodentrordquo se o ponto estaacute na

parte que estaacute fora do modelo ele eacute classificado como ldquoforardquo (Figura 24) se o

ponto estaacute na parte que conteacutem os surfels encontra-se o surfel s pertencente ao

noacute mais proacuteximo do ponto e o classifica de acordo com s seja ns a normal em s

cs a coordenada de s cp a coordenada do ponto Se (cp - cs )٠ ns gt 0 o ponto

seraacute classificado como ldquoforardquo Senatildeo seraacute classificado como ldquodentrordquo

Se o noacute natildeo foi dividido em planos esta classificaccedilatildeo a partir do surfel

mais proacuteximo seraacute sempre feita

512 Teste DentroFora

Melhorias Propostas 53

Figura 25-Duas circunferecircncias e suas quadtrees correspondentes

O Teste DentroFora classifica os surfels de um modelo como dentro ou

fora de outro modelo ou na sua interseccedilatildeo Este teste foi aqui implementado

exatamente como foi proposto em Adams e Dutreacute [2] exceto que natildeo foi

implementado o meacutetodo TINN - Triangle Inequality Nearest Neighbour [19]

Cada octree eacute percorrida verificando-se se os seus noacutes ou surfels estatildeo dentro

fora ou no contorno do outro modelo (Figura 25) Sejam A e B duas octrees e

queremos classificar a octree A As duas octrees (AB) satildeo percorridas partindo

da raiz

Para cada noacute de A existem quatro casos (Figura 26) Para testar estas

situaccedilotildees os boxes dos noacutes satildeo aumentados de rmax o raio do maior surfel do

modelo Isto eacute feito para compensar o fato de que o surfel natildeo eacute apenas um

ponto mas sim considerado como um disco

Os quatro casos satildeo

Se o noacute de A natildeo intersecta B entatildeo todos os surfels deste noacute satildeo

classificados como fora

Se o noacute de A intersecta apenas noacutes de B que estatildeo fora do modelo

todos os surfels deste noacute satildeo fora

Se o noacute de A intersecta apenas noacutes de B que estatildeo dentro do modelo

todos os surfels deste noacute satildeo dentro

Melhorias Propostas 54

Se o noacute de A intersecta noacutes de B que estatildeo dentro e tambeacutem noacutes de B

que estatildeo fora testa-se se este noacute de A eacute ou natildeo folha Se natildeo for folha

percorre-se os filhos deste noacute de A ateacute encontrar um noacute folha cheio que

intersecta B Para cada surfel sa deste noacute folha de A encontra-se o surfel de B

mais proacuteximo e classifica-se a coordenada de sa da forma apresentada na seccedilatildeo

5111 Seja sb o surfel usado na classificaccedilatildeo de sa Se os discos de sb e sa

se intersectam sa eacute classificado como ldquointerseccedilatildeordquo

(a) (b)

(c) (d)

Figura 26- a modelos natildeo se intersectam b modelo intersecta noacutes fora c modelo intersecta apenas noacutes dentro d modelo intersecta noacutes dentro e noacutes fora

513 Criaccedilatildeo do modelo resultado

Um novo modelo eacute criado com os seguintes surfels (de acordo com a

operaccedilatildeo booleana escolhida pelo usuaacuterio - veja Regra 1 da seccedilatildeo 41)

Uniatildeo - surfels de A que estatildeo fora de B + surfels de B que estatildeo fora de A

Melhorias Propostas 55

Interseccedilatildeo - surfels de A que estatildeo dentro de B + surfels de B que estatildeo

dentro de A

Diferenccedila A-B - surfels de A que estatildeo fora de B + surfels de B que estatildeo

dentro de A (com orientaccedilatildeo invertida)

Como natildeo foi implementado tratamento especial algum de interseccedilatildeo para

o nosso plugin os surfels que se intersectam satildeo mantidos no modelo resultado

final sem modificaccedilotildees

Descrito o algoritmo vejamos a seguir a sua implementaccedilatildeo

52 Implementaccedilatildeo

Este algoritmo foi implementado na forma de um plugin para o software

PointShop 3D [11] Este plugin foi desenvolvido na linguagem C e no sistema

operacional Windows

A escolha deste tipo de implementaccedilatildeo permitiu-nos usar o software

PointShop para os testes do algoritmo Estes testes foram feitos com os modelos

disponibilizados para o PointShop [11] Nesta seccedilatildeo apresentaremos o software

PointShop e as principais estruturas de dados usadas em nosso plugin

O Pointshop eacute um software aberto com seu coacutedigo disponiacutevel e preparado

para trabalhar com plugins Eacute um software de ediccedilatildeo de modelos 3D por pontos

Ele permite aleacutem de visualizar o modelo alterar as suas caracteriacutesticas como

cor brilho e fazer mapeamento de textura iluminaccedilatildeo filtragem (Figura 27)

Melhorias Propostas 56

Figura 27-Software PointShop 3D com dois modelos carregados na sua cena

Aleacutem disso pode-se criar uma cena com vaacuterios modelos e visualizaacute-los de

qualquer ponto de vista Implementa o virtual trackball para rotacionaacute-los e

transladaacute-los Usa uma iluminaccedilatildeo simples direcional A sua arquitetura eacute

extensiacutevel permite que o usuaacuterio adicione seus proacuteprios componentes ao

sistema Possui trecircs tipos de componentes

ldquoToolsrdquo fornece funcionalidades para ediccedilatildeo interativa de superfiacutecie Satildeo

disponibilizados na ldquotoolbarrdquo

Plugins fornece funcionalidades para processar em um soacute passo

modelos ou partes deles selecionadas Satildeo disponibilizados no menu ldquoPluginsrdquo

Renderes fornece funcionalidades de display para os modelos

Para esta dissertaccedilatildeo foi escolhida a construccedilatildeo do componente Plugin

por adequar-se agrave nossa proposta e ser a mais simples de ser construiacuteda O

PointShop [11] jaacute conteacutem uma tool que executa operaccedilotildees booleanas e

deformaccedilatildeo free-form sobre os modelos carregados na cena usando o meacutetodo

de Pauly [3] apresentado no capiacutetulo 4 O nosso plugin Operaccedilotildees Booleanas

implementa o algoritmo descrito na seccedilatildeo anterior baseado na proposta de

Melhorias Propostas 57

Adams e Dutreacute [2] Uma comparaccedilatildeo entre o nosso plugin e a tool de Pauly [3] eacute

feita no capiacutetulo 6

Figura 28-Menu do PointShop com o plugin e as opccedilotildees para operaccedilotildees booleanas

Para se executar o plugin o usuaacuterio precisa carregar dois modelos na

cena do PointShop acionar o plugin informando a operaccedilatildeo que seraacute executada

O plugin executaraacute o algoritmo acima proposto e carregaraacute o resultado na cena

do Pointshop retirando os modelos anteriores

521 Estruturas de Dados

Como vimos o software PointShop [11] trabalha com modelos por pontos

Um modelo deste software descrito na seccedilatildeo 42 conteacutem todas as informaccedilotildees

que o algoritmo proposto em Bart [2] necessita Abaixo relacionamos as

Melhorias Propostas 58

principais estruturas de dados do PointShop usadas no plugin e as principais

estruturas de dados do nosso plugin

As principais classes do PointShop usadas no plugin satildeo

Classe Scene

Classe Objects

Classe SurfelColections

Classe Surfel

Classe StatusBar

Classe Transformer

A hierarquia de dados eacute a seguinte a Scene conteacutem vaacuterios Objects os

quais conteacutem SurfelColections Cada SurfelColections conteacutem Surfels que

suportam uma ou mais propriedades tais como cor difusa cor especular

Classe Scene Classe que representa uma cena que conteacutem modelos

Classe Object Um modelo eacute representado pela classe Object que

conteacutem uma SurfelCollection e as matrizes de transformaccedilatildeo para rotaccedilatildeo

escala e translaccedilatildeo Cada Object eacute identificado pelo seu nome que eacute uacutenico na

Scene O meacutetodo getUniqueName retorna um nome uacutenico Cada Object tem sua

proacutepria matriz de transformaccedilatildeo que pode ser modificada com setRotation

rotate setPosition translate setScale e scale Objects podem ser copiados com

copy Objects consiste em um conjunto de surfels os quais podem ser

recuperados pela getSurfelCollection O Object pode ser ativado com

setActiveObject e recuperado com getActiveObject

Objects podem ser adicionados ou removidos com addObject e

removeObject Os Objects podem ser obtidos pela getFirstObject e

getNextObject

Classe SurfelCollection representa o conjunto de surfels de um modelo

Cada surfelcollection consiste em um conjunto de surfels (SurfelInterface) de

tamanho obtido por getNofSurfels Os surfels podem ser recuperados com

getFirstSurfel getCurrentSurfel e getNextSurfel

A SurfelCollection conteacutem um PropertyDescriptor e uma SurfelList

A SurfelList eacute uma lista duplamente encadeada de surfels Possui os

atributos firstSurfel lastSurfel currentSurfel que satildeo ponteiros para uma

SurfelInterface nSurfels que eacute o nuacutemero de Surfels

A SurfelInterface define a API para os surfels que satildeo os menores

elementos que compotildeem um Object Podem ser considerados como pontos com

uma normal que define a orientaccedilatildeo do ciacuterculo (ou elipse) que seraacute desenhado

Melhorias Propostas 59

tatildeo logo o surfel seja renderizado Tem como atributos dois ponteiros (next e

prev) para SurfelInterface

PropertyDescriptor consiste em ateacute 32 valores descrevendo quais as

propriedades a SurfelInterface suporta

Classe Surfel classe que representa o surfel

Classe StatusBar classe que imprime mensagens na tela Os plugins

podem mandar mensagens para o usuaacuterio pela StatusBar

Mensagens texto podem ser impressas com showMessage O progresso

de uma operaccedilatildeo pode ser indicado com setProgress ou resetProgress

Classe Transformer representa a transformaccedilatildeo entre sistemas de

coordenadas Esta classe fornece meacutetodos para transformar pontos e vetores

entre os diferentes sistemas de coordenadas do Pointshop

A seguir apresentamos as principais estruturas de dados do plugin

Operaccedilotildees Booleanas

As principais estruturas de dados do plugin satildeo boundingbox tree no

lista_surfel surfel

Boundingbox conteacutem dois pontos 3D que definem uma caixa que conteacutem

o modelo um ponto com menores coordenadas xy e z e outro ponto com

maiores xyz

Tree representa a octree do modelo Cada registro conteacutem um ponteiro

para um noacute e oito ponteiros para as 8 octrees filhas

No representa um noacute da octree Conteacutem os seguintes dados

- localizaccedilatildeo do noacute que eacute o canto inferior esquerdo do noacute

- lista_surfel (preenchida apenas para noacutes folha cheios)

- quantidade de surfels do noacute

- classificaccedilatildeo do noacute como dentro fora ou contorno

- classificaccedilatildeo do noacute em relaccedilatildeo a outro modelo

- indica se o noacute eacute folha ou natildeo

- vetor que eacute a meacutedia das normais dos surfels do noacute

- ponto que eacute a meacutedia das localizaccedilotildees dos surfels do noacute

- surfel que tem (entre todos os surfels do noacute) o maior produto interno

entre a sua normal e a normal meacutedia

- surfel que tem (entre todos os surfels do noacute) o menor produto interno

entre a sua normal e a normal meacutedia

- produto interno maacuteximo e miacutenimo entre as normais dos surfels do noacute e a

normal meacutedia deste noacute

Melhorias Propostas 60

- indica se o noacute conteacutem surfels com normais em sentido oposto (produto

interno entre elas eacute menor que zero)

- classificaccedilatildeo dos oito cantos do noacute

lista_surfels lista em que cada registro conteacutem um apontador para um

surfel e um apontador para o proacuteximo registro

surfel representa o surfel da octree Conteacutem a classificaccedilatildeo em relaccedilatildeo a

outro modelo e um ponteiro para o surfel do Poinshop

Resultados 61

6 Resultados

Neste capiacutetulo apresentamos os testes realizados com o plugin para o

PointShop implementado para esta dissertaccedilatildeo a comparaccedilatildeo deste plugin com

o plugin de Pauly [3] e a comparaccedilatildeo entre o meacutetodo de Adams e Dutreacute [2] e o

meacutetodo de Pauly [3]

61 Testes

Os testes foram feitos em um PC x86 Family 6 261600 KB de RAM sem

placa graacutefica sistema operacional Windows 2000 O plugin foi implementado na

linguagem C

Os modelos usados para os testes satildeo modelos disponibilizados no

PointShop [11] Vale lembrar que o meacutetodo implementado em nosso plugin eacute

restrito a modelos soacutelidos e portanto foram usados apenas estes modelos

soacutelidos para os testes

O modelo na Figura 29 que eacute um dos modelos disponibilizados no

PointShop [11] foi usado para mostrar o resultado das operaccedilotildees realizadas

pelo plugin implementado nesta dissertaccedilatildeo O modelo Igea eacute um modelo soacutelido

que conteacutem 134345 surfels

Resultados 62

Figura 29-Modelo do PointShop Igea

Para realizar as operaccedilotildees este modelo foi carregado na cena do

PointShop duas vezes e um deles colorido de vermelho As Figuras 30 31 32

mostram o resultado da operaccedilatildeo de uniatildeo interseccedilatildeo e diferenccedila

respectivamente Os nuacutemeros de surfels dos modelos resultantes satildeo mostrados

na Tabela 2

Resultados 63

Figura 30-Resultado da uniatildeo de duas Igeas

Figura 31-Resultado da interseccedilatildeo de duas Igeas

Resultados 64

Figura 32-Resultado da diferenccedila entre duas Igeas

Tabela 2-Nuacutemero de surfels dos modelos resultantes

Observamos que o nuacutemero de surfels dos modelos resultantes estaacute

coerente com as figuras dos seus modelos

Para avaliar o tempo de processamento das operaccedilotildees foram realizados

vaacuterios testes com o objetivo de obter uma meacutedia dos tempos de realizaccedilatildeo de

cada operaccedilatildeo Tambeacutem foram armazenados os tempos da criaccedilatildeo das duas

octrees e da classificaccedilatildeo de todos os surfels dos dois objetos (como dentro ou

fora do outro modelo) Estes testes foram feitos usando o modelo Igea A meacutedia

dos tempos de processamento foi calculada e os resultados satildeo mostrados na

Tabela 3 Verificamos que o maior tempo gasto eacute para criaccedilatildeo das octrees

Verificamos tambeacutem que este resultado apresentado eacute similar ao resultado

verificado empiricamente com o plugin de Pauly [3] Os tempos gastos para

realizar as operaccedilotildees satildeo similares e o maior tempo gasto no plugin de Pauly

tambeacutem eacute para inicializaccedilatildeo de suas estruturas de dados que incluem a kd-tree

Operaccedilatildeo Nuacutemero de surfels do modelo resultado

Uniatildeo 189715

Interseccedilatildeo 72225

Diferenccedila 134552

Resultados 65

Operaccedilatildeo Criaccedilatildeo das

Octrees (seg)

Classificaccedilatildeo

(seg)

Criaccedilatildeo do

resultado (seg)

Total (seg)

Uniatildeo 39375 1324 18925 7154

Interseccedilatildeo 38585 1585 09547 63982

Diferenccedila 399875 1504 1729 729475

Tabela 3- Meacutedia dos tempos de processamento para as operaccedilotildees com duas Igeas

Com o objetivo de expor melhor os resultados deste trabalho

apresentamos abaixo mais um teste das operaccedilotildees booleanas usando o nosso

plugin Os modelos usados para este segundo teste satildeo o Max Planck e o Male

ambos modelos soacutelidos disponibilizados no PointShop Estes modelos satildeo

mostrados nas figura 33 e 34

O primeiro Max Planck conteacutem 52809 surfels

Figura 33-Modelo do PointShop MaxPlanck

O segundo modelo abaixo Male conteacutem 148138 surfels

Resultados 66

Figura 34-Modelo do PointShop Male

As Figuras 353637 mostram o resultado da operaccedilatildeo de uniatildeo interseccedilatildeo

e diferenccedila respectivamente usando os dois modelos acima Podemos observar

pela figura 35 que o resultado da operaccedilatildeo de diferenccedila neste caso gerou um

modelo resultado com trecircs partes desconexas Os nuacutemeros de surfels de cada

modelo resultado satildeo mostrados na Tabela 5

Figura 35- Resultado da Uniatildeo do modelo Male com MaxPlanck

Resultados 67

Figura 36-Resultado da interseccedilatildeo do modelo Male com o MaxPlanck

Figura 37-Resultado da diferenccedila do modelo Male do modelo MaxPlanck

As meacutedias de tempos de processamento foram calculadas da mesma

forma que o primeiro teste com o modelo Igea acima apresentado Os

resultados satildeo mostrados na Tabela 4 Podemos observar que este teste

Resultados 68

apresenta tempos um pouco menores que o teste com o modelo Igea Isto se

deve ao fato de que o modelo MaxPlanck ser significativamente menor que o

modelo Igea MaxPlanck possui 52809 surfels e Igea conteacutem 134345 surfels

Operaccedilatildeo Criaccedilatildeo das

Octrees (seg)

Classificaccedilatildeo

(seg)

Criaccedilatildeo do

resultado (seg)

Total

(seg)

Uniatildeo 3012 1254 102 5285

Interseccedilatildeo 2985 0901 0861 4747

Diferenccedila 2965 0911 0791 4667

Tabela 4-Tempo de processamento das operaccedilotildees com os modelos MaxPlanck e Male

Operaccedilatildeo Nuacutemero de surfels do resultado

Uniatildeo 126532

Interseccedilatildeo 88414

Diferenccedila 77635

Tabela 5-Nuacutemero de surfels dos modelos resultados das operaccedilotildees com os modelos MaxPlanck e Male

Em seguida apresentaremos uma comparaccedilatildeo entre o nosso plugin e o

plugin de Pauly[3] e tambeacutem uma comparaccedilatildeo entre o meacutetodo de Adams e Dutreacute

[2] e o meacutetodo de Pauly [3]

62 Comparaccedilatildeo entre os dois meacutetodos que realizam operaccedilotildees booleanas

A comparaccedilatildeo entre os meacutetodos de Pauly[3] e de Adams e Dutreacute foi feita

em termos de tempo de processamento e em termos conceituais Em termos de

tempo de processamento comparamos o plugin de Pauly[3] com o nosso plugin

Em termos de tempo de processamento verifica-se empiricamente que os

dois meacutetodos apresentam tempos bastante similares Entretanto o tempo de

processamento do algoritmo aqui implementado ainda pode ser melhorado com

Resultados 69

o uso do meacutetodo TINN [19] que foi proposto em Adams[2] - para otimizar a

pesquisa do surfel mais proacuteximo a um ponto que estaacute localizado na regiatildeo de um

noacute que conteacutem surfels - veja seccedilatildeo 42 O uso deste meacutetodo natildeo foi

implementado para este trabalho e a sua implementaccedilatildeo melhoraria o tempo de

resposta do algoritmo Aleacutem disso o trabalho de Sara F Frisken [12] citado no

capiacutetulo 2 apresenta uma otimizaccedilatildeo no uso de octrees que pode ser

incorporada no algoritmo implementado neste trabalho

Em termos conceituais vamos fazer a comparaccedilatildeo do uso do que

chamamos aqui de Regra 2 do tratamento de interseccedilatildeo e do tratamento de

ldquoarestas vivasrdquo

Como vimos na seccedilatildeo 41 tanto o algoritmo implementado nesta

dissertaccedilatildeo baseado no trabalho de Adams e Dutreacute como o meacutetodo de Pauly

[3] parte do que chamamos aqui de Regra 2 para realizar operaccedilotildees booleanas

com pontos Mas cada um destes meacutetodos daacute um tratamento diferente para o

uso desta regra

O meacutetodo de Pauly usa a Regra 2 para classificaccedilatildeo de cada ponto ou de

cada surfel Para classificar um surfel de B sb como dentro ou fora de A eacute

encontrado o surfel de A sa mais proacuteximo a sb e sb eacute classificado a partir de sa

Para encontrar sa Pauly utiliza uma kd-tree Como esta pesquisa para encontrar

sa eacute cara (mesmo usando uma kd-tree) Pauly utiliza uma esfera que conteacutem

pontos com a mesma classificaccedilatildeo (seccedilatildeo 432) e diminui em 90 este nuacutemero

de pesquisas Pauly utiliza tambeacutem a representaccedilatildeo impliacutecita MLS (Moving Least

Squares) para casos em que a Regra 2 poderia falhar e para tratamento de

interseccedilotildees Entretanto o nuacutemero destes casos em que a Regra 2 poderia falhar

eacute muito pequeno E a representaccedilatildeo MLS natildeo eacute uma estrutura simples de ser

implementada Portanto natildeo encontramos vantagens em usar MLS para estes

casos O meacutetodo de Adams e Dutreacute natildeo trata estes casos e na praacutetica

apresenta resultados bastante satisfatoacuterios como foi mostrado Portanto

consideramos que valeria a pena fazer algum tratamento especial para estes

casos se fosse um procedimento simples Para a execuccedilatildeo do algoritmo de

Pauly o uso de MLS natildeo interfere significativamente porque a construccedilatildeo desta

representaccedilatildeo natildeo eacute feita somente para realizar operaccedilotildees booleanas Os testes

empiacutericos que fizemos com o algoritmo de Pauly natildeo incluem a construccedilatildeo desta

representaccedilatildeo

Aparentemente os dois algoritmos satildeo bastante parecidos um usa octrees

e o outro usa kd-tree As duas estruturas de dados satildeo simples e otimizam a

classificaccedilatildeo dos surfels de um modelo como dentro ou fora do outro modelo

Resultados 70

Mas existe uma diferenccedila conceitual entre dois que merece ser destacada O

algoritmo aqui implementado usa a Regra 2 para classificaccedilatildeo dos noacutes de uma

octree e armazena esta octree classificada (ver capiacutetulo 5) Assim na maioria dos

casos natildeo seraacute necessaacuterio encontrar o surfel mais proacuteximo para classificar um

ponto (ou um surfel) como fora ou dentro de um modelo Caso o ponto esteja em

uma aacuterea da octree classificada ele teraacute a classificaccedilatildeo dada agravequela aacuterea A

pesquisa ao surfel mais proacuteximo seraacute feita apenas nos casos em que o ponto a

ser classificado estaacute localizado entre os planos que subdividem um noacute cheio

O uso desta octree classificada levanta uma questatildeo que natildeo foi citada no

trabalho de Adams e Dutreacute que eacute a proximidade desta estrutura (armazenada)

de octree classificada com uma representaccedilatildeo volumeacutetrica do objeto Sendo

assim esta estrutura pode ser aproveitada para outras funccedilotildees aleacutem da

classificaccedilatildeo dos surfels Por exemplo podemos ter uma aproximaccedilatildeo do

volume de uma cena somando os volumes aproximados dos modelos que a

compotildeem Como o enfoque deste trabalho eacute operaccedilatildeo booleana natildeo vamos nos

aprofundar nesta questatildeo

Outra importante diferenccedila entre os dois trabalhos que jaacute foi explicada na

seccedilatildeo 432 eacute que o meacutetodo de Pauly aplica-se a modelos soacutelidos ou natildeo

soacutelidos enquanto que o meacutetodo de Adams e Dutreacute aplica-se somente a modelos

soacutelidos

Quanto ao tratamento de interseccedilatildeo em termos de visualizaccedilatildeo todos os

dois resolvem bem o problema O tratamento de interseccedilatildeo nos dois trabalhos

tambeacutem resolve o problema da validade da Regra 2 (ver seccedilatildeo 44) Entretanto

o tratamento de Adams e Dutreacute natildeo depende da renderizaccedilatildeo sendo portanto

mais portaacutevel Aleacutem disso uma desvantagem do meacutetodo de Pauly eacute o uso da

representaccedilatildeo impliacutecita MLS (ldquoMoving Least Squaresrdquo) do objeto para obter os

pontos exatamente na curva de interseccedilatildeo Esta representaccedilatildeo torna o

tratamento de interseccedilatildeo mais complexo e a vantagem apresentada natildeo eacute tatildeo

significativa para este tratamento de interseccedilatildeo

Conclusatildeo 71

7 Conclusatildeo

Concluiacutemos entatildeo que as escolhas de Adams e Dutreacute por usar uma

octree classificada e pelo tratamento dado agrave interseccedilatildeo satildeo mais abrangentes

que a escolha de Pauly E consideramos que quanto mais abrangente for uma

escolha conceitual mais resultados poderemos tirar dela No caso de Adams e

Dutreacute eles estendem o problema de classificar um ponto para classificar todo o

modelo Como foi citado ele quase fornece uma representaccedilatildeo volumeacutetrica do

modelo Esta aproximada representaccedilatildeo volumeacutetrica pode nos fornecer outras

informaccedilotildees como por exemplo o volume aproximado do modelo

Aleacutem disso o uso da representaccedilatildeo impliacutecita MLS no meacutetodo de Pauly cria

uma complexidade a mais para o meacutetodo sem apresentar vantagens para a

realizaccedilatildeo de operaccedilotildees booleanas que eacute o nosso enfoque

Logo podemos dizer que o meacutetodo de Adams e Dutreacute apresenta as

seguintes vantagens em relaccedilatildeo ao de Pauly

- a estrutura de octree classificada aleacutem de ser usada para classificaccedilatildeo

fornece informaccedilotildees adicionais como volume aproximado do objeto

- o tempo de processamento no meacutetodo de Adams e Dutreacute tende a ser

melhor que no meacutetodo de Pauly se implementadas as melhorias acima citadas e

se colocaacutessemos em consideraccedilatildeo o uso da representaccedilatildeo impliacutecita MLS

(Moving Least Squares)

- o tratamento de interseccedilatildeo de Adams e Dutreacute apresenta a vantagem da

portabilidade ou seja iraacute funcionar independente do algoritmo de renderizaccedilatildeo

utilizado

E as vantagens do meacutetodo de Pauly em relaccedilatildeo ao de Adams e Dutreacute

- a colocaccedilatildeo de surfels exatamente na curva de interseccedilatildeo

- a possibilidade de trabalhar com modelos soacutelidos ou natildeo soacutelidos

E finalizando concluiacutemos que o estudo relatado nesta dissertaccedilatildeo foi

importante por

- fornecer um breve estudo sobre modelagem por pontos uma nova e

promissora aacuterea dentro da computaccedilatildeo graacutefica

Conclusatildeo 72

- por apresentar uma avaliaccedilatildeo dos dois trabalhos existentes sobre

operaccedilotildees booleanas com pontos encontrando as vantagens de cada um

e levantando questotildees que natildeo tinham sido citadas nos trabalhos originais

- por propor e implementar melhorias ao trabalho de Adams e Dutreacute

71 Trabalhos Futuros

Nossa implementaccedilatildeo pode ser ainda evoluiacuteda com as propostas

apresentadas na seccedilatildeo 62 Como observamos o tempo de processamento do

algoritmo aqui implementado ainda pode ser melhorado com o uso do meacutetodo

TINN [19] - que foi proposto em Adams[2] - para otimizar a pesquisa do surfel

mais proacuteximo a um ponto que estaacute localizado na regiatildeo de um noacute que conteacutem

surfels Aleacutem disso o trabalho Simple and Efficient Trasversal Methods for

Quadtrees and Octrees de Sara F Frisken [12] citado no capiacutetulo 2 apresenta

uma otimizaccedilatildeo no uso de octrees Outra proposta para melhorar o tempo de

processamento do algoritmo aqui implementado eacute usar a forma de trabalhar com

octrees apresentada neste trabalho

O trabalho de Adams e Dutreacute [2] eacute aplicado apenas a objetos soacutelidos O

nosso plugin portanto aplica-se somente a este tipo de objeto Jaacute o trabalho de

Pauly[3] eacute aplicado tambeacutem a modelos natildeo soacutelidos Apresentamos como

proposta a um trabalho futuro a extensatildeo do algoritmo aqui implementado para

modelos natildeo soacutelidos O surfel pode conter uma informaccedilatildeo adicional que indica

se ele estaacute delimitando um volume ou natildeo Assim pode-se ter um modelo com

ldquopartes soacutelidasrdquo e ldquopartes natildeo soacutelidasrdquo Por exemplo a uniatildeo de um plano com

uma esfera poderia resultar numa esfera com ldquoabasrdquo (seriam as partes do plano

que estariam fora da esfera) O modelo resultado teria uma parte correspondente

a um espaccedilo 3D (esfera) e outra parte que seria uma superfiacutecie 2D posicionada

no espaccedilo 3D sem delimitar algum volume (abas)

Muitos trabalhos podem ser desenvolvidos aplicando-se o modelo por

pontos em animaccedilatildeo jogos visualizaccedilatildeo de terrenos criaccedilatildeo de protoacutetipos etc

considerando-se a eficiecircncia e simplicidade do modelo E mais especificamente

as operaccedilotildees booleanas com pontos podem ser aplicadas para criaccedilatildeo de

cenaacuterios testes de colisotildees e nestes casos a representaccedilatildeo usando octrees

pode ser mais explorada considerando-se o seu potencial de representaccedilatildeo

volumeacutetrica de um objeto

Referecircncias Bibliograacuteficas 73

8 Referecircncias Bibliograacuteficas

[1] MAumlNTYLAuml M An Introduction to Solid Modeling Computer Science Press 1988

[2] ADAMS B DUTREacute P Interactive Boolean Operations on Surfel-

Bounded Solids Proceedings of SIGGRAPH 2003 San Diego USA 2003

[3] PAULY M KEISER R KOBBELT L GROSS M Shape Modeling

with Point-Sampled Geometry SIGGRAPH 2003 Computer Graphics

Proceedings Annual Conference Series ACM Press ACM SIGGRAPH 2003

[4] LEVOY M WHITTED T The Use of Points as Display Primitives

Technical Report TR 85-022 The University of North Carolina at Chapel Hill

Department of Computer Science 1985

[5] PFISTER H ZWICKER M VAN BAAR J GROSS M 2000 Surfels

Surface Elements as Rendering Primitives SIGGRAPH 2000 pp 335ndash342 New

Orleans LA July 23-28 2000

[6] ZWICKER M PFISTER H VAN BAAR J GROSS M Surface

Splatting SIGGRAPH 2001

[7] PAULY M KOBBELT L GROSS M Multiresolution Modeling of

Point-Sampled Geometry CS Techinical Report 378 September 16 2002

[8] CURLESS B New Methods for Surface Reconstruction from Range Images PhD thesis Stanford University 1997

[9] RUSINKIEWICZ S Real-time Acquisition and Rendering of Large 3D Models PhD thesis Stanford University 2001

Referecircncias Bibliograacuteficas 74

[10] AMENTA N BERN M KAMVYSSELIS M A new Voronoi-Based

Surface Reconstruction Algorithm SIGGRAPH 98 Conference proceedings pp

415-421 New York 1998

[11] ZWICKER M PAULY M KNOLL O GROSS M Pointshop 3D an

Interactive System for Point-Based Surface Editing Proceedings of SIGGRAPH 2002 San Antonio TX July 2002

[12] FRISKEN S PERRY R Simple and Efficient Traversal Methods for

Quadtrees and Octrees Journal of Graphics Tools Vol 7 Issue 3 May 2003

[13] CORREcircA W T OLIVEIRA M M Silva C T Wang J

Modeling and Rendering of Real Environments

Revista de Informaacutetica Teoacuterica e Aplicada (Brazilian Journal of Theoretic and Applied Computing) 9(2)127-156 2002

[14] DAVIS J MARSCHNER S GARR M LEVOY M Filling Holes in

Complex Surfaces Using Volumetric Diffusion First International Symposium on 3D Data Processing Visualization Transmission June 2002

[15] RAumlSAumlNEN J Surface Splatting Theory Extensions and Implementation Masterrsquos Thesis Dept of Computer Science Helsinki

University of Technology May 28 2002

[16] PAULY M Point Primitives for Interactive Modeling and Processing of 3D Geometry PhD thesis Federal Institute of Technology (ETH)

of Zurich 2003

[17] HOPPE H DEROSE T DUCHAMP T MCDONALD J

STUELZLE W Surface Reconstruction from Unorganized Points Computer Graphics 26(2)71ndash78 July 1992

[18] ALEXA M BEHR J COHEN-OR D FLEISHMAN S LEVIN D

SILVA C T Point Set Surfaces IEEE Visualization 2001 pp 21ndash28 October

2001

Referecircncias Bibliograacuteficas 75

[19] GREENSPAN M GODIN G TALBOT J Acceleration of Binning

Nearest Neighbor Methods Proceedings of Vision Interface 2000 pp 337-

344

[20] MENCL R Reconstruction of Surfaces from Unorganized Three-Dimensional Point Clouds Dissertation Dortmund Univ 2001

[21] KRIVANEK J Representing and Rendering Surfaces With Points

httpciteseernjneccomkrivanek03representinghtml Acesso em 30 jul

2003

[22] KRISTJANSSON ET AL Approximate Boolean Operations on Free-

form Solids Proceedings of SIGGRAPH 01 2001

Agradecimentos Aos meus orientadores Waldemar Celes e Luiz Velho pelo apoio dedicaccedilatildeo e paciecircncia que tornaram este trabalho possiacutevel Agrave PUC-Rio pelo apoio financeiro Aos membros da banca examinadora pelas correccedilotildees e sugestotildees Agrave Cristina Griner chefe de projeto do SERPRO pelo apoio compreensatildeo e ajuda Aos meus professores de mestrado pelos conhecimentos transmitidos Agrave Mauren Paola Ruthner pela amizade e colaboraccedilatildeo durante todo o mestrado Aos colegas do Departamento de Informaacutetica da PUC-Rio pelos momentos compartilhados Agrave minha matildee pela revisatildeo do texto desta dissertaccedilatildeo e pelo total apoio sem o qual este trabalho natildeo seria possiacutevel Agrave Daacutelton e Tetecirc meus queridos irmatildeos pelo apoio incentivo e colaboraccedilatildeo

Resumo

Leal Heloisa ReisCeles Waldemar (Orientador) Operaccedilotildees Booleanas na Modelagem por Pontos Rio de Janeiro 2004 75p Dissertaccedilatildeo de Mestrado - Departamento de Informaacutetica Pontifiacutecia Universidade Catoacutelica do Rio de Janeiro

Operaccedilotildees booleanas em modelagem 3D satildeo usadas para criar novos

modelos ou para modificaacute-los Na maioria dos tipos de representaccedilatildeo de objetos

3D estas operaccedilotildees satildeo bastante complexas Nos uacuteltimos anos tem sido muito

explorado um novo tipo de modelagem a modelagem por pontos que apresenta

muitas vantagens em relaccedilatildeo agraves outras representaccedilotildees como maior simplicidade

e eficiecircncia Dois trabalhos exploram as operaccedilotildees booleanas na modelagem

por pontos o trabalho de Adams e Dutreacute e o trabalho de Pauly et al Dada a

grande importacircncia deste novo tipo de modelagem e do uso de operaccedilotildees

booleanas esta dissertaccedilatildeo apresenta uma introduccedilatildeo agrave modelagem por pontos

implementa o algoritmo proposto em Adams e Dutreacute com algumas melhorias e o

compara com o meacutetodo de Pauly et al

Palavras-chave

Modelagem 3D Modelagem por pontos Operaccedilotildees Booleanas

Computaccedilatildeo Graacutefica Interativa

Abstract

Leal Heloisa Reis Celes Waldemar(Advisor) Boolean Operations on Point-based models Rio de Janeiro 2004 75p MSc Dissertation - Departamento de Informaacutetica Pontifiacutecia Universidade Catoacutelica do Rio de Janeiro

Boolean operations are used to create or modify models These operations

in the majority of 3D object representations are very complex In the last years a

significant trend in computer graphics has been the shift towards point sampled

3D models due to their advantages over other representations such as simplicity

and efficiency Two recent works present algorithms to perform interactive

boolean operations on point-based models the work by Adams and Dutreacute and

the work by Pauly et Al Due to great importance of this novel representation

and of the use of boolean operations the present work makes an introduction to

point-based representation implements the algorithm proposed by Adams and

Dutreacute with some improvements and compares this implementation with the work

by Pauly et al

Palavras-chave

3D Modeling Point-based Modeling Boolean Operation Interactive

Computer Graphics

Sumaacuterio

1 Introduccedilatildeo 15

2 Trabalhos relacionados 18

3 Modelagem por Pontos 20 31 Ideacuteia da Representaccedilatildeo 20 32 Tipos de distribuiccedilatildeo dos surfels 22 33 Estrutura de multi-resoluccedilatildeo 22 34 Dados que um surfel pode conter 23 35 Aquisiccedilatildeo do modelo 23 351 Aquisiccedilatildeo da geometria 23 352 Aquisiccedilatildeo da textura 24 353 Correccedilatildeo das falhas da aquisiccedilatildeo 25 36 Reconstruccedilatildeo da superfiacutecie (contiacutenua) a partir do modelo (discreto) 25 37 Visualizaccedilatildeo do modelo 26 38 Ediccedilatildeo do modelo 28

4 Operaccedilotildees Booleanas com Pontos 29 41 Meacutetodos para realizar operaccedilotildees booleanas em objetos modelados por

pontos 29 42 Meacutetodo de Adams e Dutreacute 33 421 Modelo por Pontos em Adams e Dutreacute 33 422 Algoritmo de Operaccedilotildees Booleanas 34 43 Meacutetodo de Pauly 39 431 Modelo em Pauly 40 432 Algoritmo de Operaccedilotildees Booleanas 40 44 Validade da Regra 2 43

5 Melhorias Propostas 47 51 Descriccedilatildeo do algoritmo 47 511 Criaccedilatildeo e classificaccedilatildeo de uma octree para cada modelo 48

512 Teste DentroFora 52 513 Criaccedilatildeo do modelo resultado 54 52 Implementaccedilatildeo 55 521 Estruturas de Dados 57

6 Resultados 61 61 Testes 61 62 Comparaccedilatildeo entre os dois meacutetodos que realizam operaccedilotildees booleanas 68

7 Conclusatildeo 71 71 Trabalhos Futuros 72

8 Referecircncias Bibliograacuteficas 73

11

Lista de figuras

Figura 1 Um modelo por pontos e sua visualizaccedilatildeo 21 Figura 2 A superfiacutecie modelada por surfels O surfel em destaque tem raio de

alcance rt e normal n 22 Figura 3 Modelo por pontos e sua renderizaccedilatildeo usando Surface Splatting 26 Figura 4 Trecircs modelos novos foram criados a partir dos quatro iniciais (esfera

cilindro dois cubos) O primeiro eacute a esfera menos um cubo em seguida

retirou-se outro cubo e por uacuteltimo retirou-se o cilindro 29 Figura 5 A partir de dois modelos por pontos uma heacutelice e uma cabeccedila as trecircs

operaccedilotildees booleanas satildeo mostradas da esquerda para a direita uniatildeo

diferenccedila e interseccedilatildeo 30 Figura 6 (a) Dois modelos A e B (b) Posicionados de forma que A tem uma parte

dentro de B eacute mostrado o resultado A U B Af + Bf (c) Resultado de A ndash B Af

+ Bd (d) Resultado de A cap B Ad + Bd 31 Figura 7 Para classificar o ponto x encontra-se o surfel p (com normal np) mais

proacuteximo a x Se o produto interno entre np e (x ndash p) for maior que zero entatildeo

x eacute classificado como fora senatildeo seraacute classificado como dentro 32 Figura 8 Interseccedilatildeo de duas esferas agrave esquerda sem nenhum tratamento de

interseccedilatildeo agrave direita apoacutes o tratamento de interseccedilatildeo 33 Figura 9 Um objeto representado por pontos com suas normais e sua quadtree

correspondente classificada os noacutes cinza claro estatildeo dentro do modelo noacutes

cinza mais escuro estatildeo fora do modelo e noacutes com cinza intermediaacuterio satildeo

noacutes cheios noacutes que conteacutem pontos 35 Figura 10 Divisatildeo de noacute de contorno a parte agrave esquerda estaacute fora do modelo a

parte agrave direita estaacute dentro do modelo e a faixa intermediaacuteria conteacutem os

surfels 36 Figura 11 Interseccedilatildeo do surfel s e do plano que passa pelo surfel t o surfel mais

proacuteximo a s O surfel s eacute substituiacutedo por trecircs surfels menores 38 Figura 12 Agrave direita eacute mostrado o resultado do tratamento de interseccedilatildeo para o

caso de Arestas Vivas do objeto agrave esquerda 39 Figura 13 Os novos surfels satildeo colocados exatamente na curva de interseccedilatildeo e

convergem para o ponto de interseccedilatildeo 42 Figura 14 (a) Suponhamos a reta que eacute a interseccedilatildeo do plano tangente a S1 em

q1 e o plano tangente a S2 em q2 O ponto r eacute o ponto desta reta que estaacute

12

mais proacuteximo a q1 e q2 (b) r eacute projetado sobre S1 e S2 obtendo-se q1acute e q2acute

dois novos pontos de partida para nova iteraccedilatildeo (c) A nova iteraccedilatildeo gera r

que eacute uma aproximaccedilatildeo melhor de q 43 Figura 15 Para verificar se o ponto x estaacute fora de um contorno C encontra-se o

ponto y de C Se o produto interno entre a normal em y e o vetor que liga y a

x for maior que zero entatildeo x estaacute fora de C senatildeo estaacute dentro de C 44 Figura 16 As curvas vermelhas satildeo o Eixo Medial da curva em preto 45 Figura 17 Em 3D geralmente o Eixo Medial eacute uma superfiacutecie 2D (em vermelho)

Aqui o quadrado eacute o Eixo Medial da superfiacutecie transparente que o contorna

45 Figura 18 A figura mostra o diagrama de Voronoi de uma amostragem de pontos

S Da mesma forma que a amostragem aproxima a curva os veacutertices de

Voronoi aproximam o Eixo Medial 46 Figura 19 Quadtree classificada Os noacutes mais escuros estatildeo fora do modelo os

mais claros dentro e os em tom intermediaacuterio satildeo noacutes de contorno 48 Figura 20 O noacute cheio eacute dividido em trecircs partes agrave esquerda a regiatildeo estaacute dentro

do modelo agrave direita estaacute fora e entre as duas linhas que dividem o noacute estaacute a

regiatildeo que conteacutem os surfels 49 Figura 21 O noacute a eacute classificado pelo noacute c o noacute d tambeacutem eacute classificado pelo noacute c

a classificaccedilatildeo do noacute a eacute propagada para o noacute b 50 Figura 22 Os cantos a e b do noacute cheio possuem a mesma classificaccedilatildeo fora do

modelo Esta classificaccedilatildeo foi dada ao noacute vazio adjacente 50 Figura 23 Quadtree classificada 51 Figura 24 A normal n eacute a normal meacutedia e os surfels s1 e s2 juntamente com a

normal n definem as retas que dividem o noacute 52 Figura 25 Duas circunferecircncias e suas quadtrees correspondentes 53 Figura 26 a modelos natildeo se intersectam b modelo intersecta noacutes fora c

modelo intersecta apenas noacutes dentro d modelo intersecta noacutes dentro e noacutes

fora 54 Figura 27 Software PointShop 3D com dois modelos carregados na sua cena 56 Figura 28 Menu do PointShop com o plugin e as opccedilotildees para operaccedilotildees

booleanas 57 Figura 29 Modelo do PointShop Igea 62 Figura 30 Resultado da uniatildeo de duas Igeas 63 Figura 31 Resultado da interseccedilatildeo de duas Igeas 63 Figura 32 Resultado da diferenccedila entre duas Igeas 64

13

Figura 33 Modelo do PointShop MaxPlanck 65 Figura 34 Modelo do PointShop Male 66 Figura 35 Resultado da Uniatildeo do modelo Male com MaxPlanck 66 Figura 36 Resultado da interseccedilatildeo do modelo Male com o MaxPlanck 67 Figura 37 Resultado da diferenccedila do modelo Male do modelo MaxPlanck 67

14

Lista de tabelas

Tabela 1 Classificaccedilatildeo para operaccedilotildees booleanas 42

Tabela 2- Nuacutemero de surfels dos modelos resultantes 64 Tabela 3- Meacutedia dos tempos de processamento para as operaccedilotildees com duas

Igeas 65

Tabela 4-Tempo de processamento das operaccedilotildees com os modelos MaxPlanck

e Male 68 Tabela 5- Nuacutemero de surfels dos modelos resultados das operaccedilotildees com os

modelos MaxPlanck e Male 68

15

1 Introduccedilatildeo

O mundo digital estaacute conquistando cada vez mais espaccedilo nos meios de

comunicaccedilatildeo Sons imagens viacutedeos digitais satildeo miacutedias muito usadas em

diversas aacutereas como entretenimento medicina desenho industrial engenharia

arquitetura educaccedilatildeo arte ciecircncia entre outras Podemos citar alguns

exemplos dentro destas aacutereas como jogos efeitos especiais filmes digitais

visualizaccedilatildeo cientiacutefica viacutedeo-conferecircncia comeacutercio na internet Nos uacuteltimos anos

verificamos que o modelo 3D vem se tornando um novo meio de comunicaccedilatildeo

digital Com o desenvolvimento da tecnologia de aquisiccedilatildeo e do processamento

de modelos 3D ele vem sendo cada vez mais utilizado Jogos 3D animaccedilotildees

aplicaccedilotildees em realidade virtual visualizaccedilatildeo cientiacutefica aplicaccedilotildees para aacuterea

meacutedica e odontoloacutegica criaccedilatildeo de reacuteplicas para estudo e preservaccedilatildeo do

patrimocircnio histoacuterico sistemas CADCAM cataacutelogos de modelos 3D na Web para

comercializaccedilatildeo criaccedilatildeo de protoacutetipos para arquitetura engenharia satildeo alguns

exemplos de aplicaccedilotildees que usam modelos 3D

A aacuterea que estuda a representaccedilatildeo de um modelo 3D no computador eacute

chamada de modelagem em computaccedilatildeo graacutefica Existem diversos tipos de

modelagem para as diversas aplicaccedilotildees que usam um modelo 3D como por

exemplo representaccedilotildees poligonais como malhas triangulares que satildeo

geralmente usadas na aacuterea de entretenimento Este trabalho explora um novo

tipo de modelagem a modelagem por pontos

A modelagem por pontos comeccedilou a ser largamente explorada nesta

deacutecada e trata-se de uma aacuterea muito promissora em computaccedilatildeo graacutefica dadas

agraves vaacuterias e grandes vantagens em relaccedilatildeo aos outros tipos de representaccedilatildeo

como esquema de representaccedilatildeo CSG (Constructive Solid Geometry) [1] ou

malhas poligonais Dentre as principais vantagens podemos citar grande

simplicidade e flexibilidade boa performance robustez Mas a principal

vantagem desta modelagem que foi o fator que impulsionou o seu grande

desenvolvimento nesta deacutecada eacute que esta modelagem por pontos eacute a melhor

opccedilatildeo para tratar os dados de saiacuteda de equipamentos de aquisiccedilatildeo de modelos

3D O uso destes equipamentos tem aumentado muito nesta deacutecada A

16

tecnologia destes equipamentos tem progredido muito e eles tecircm se tornado

mais baratos A tendecircncia eacute que o uso destes equipamentos se torne o mais

utilizado meio de obtenccedilatildeo de modelos 3D Isto porque construir modelos 3D

bastante detalhados por meio de um software de modelagem eacute muito trabalhoso

O processo de aquisiccedilatildeo de modelos por meio destes equipamentos automatiza

este processo de construccedilatildeo

No trabalho com modelos 3D frequumlentemente satildeo usadas as operaccedilotildees

booleanas que satildeo operaccedilotildees de uniatildeo interseccedilatildeo ou diferenccedila No esquema

de representaccedilatildeo CSG estas operaccedilotildees fazem parte da representaccedilatildeo do

objeto Estas operaccedilotildees tambeacutem podem ser usadas para criar novos modelos ou

para alteraacute-los Na maioria dos tipos de representaccedilatildeo de objetos 3D estas

operaccedilotildees satildeo bastante complexas

A simplicidade da representaccedilatildeo por pontos permite que as operaccedilotildees

booleanas sejam realizadas com facilidade se compararmos com a realizaccedilatildeo

destas operaccedilotildees em outros tipos de representaccedilatildeo como malhas poligonais

Motivada pelas vantagens desta modelagem e pela utilidade destas operaccedilotildees

esta dissertaccedilatildeo apresenta uma introduccedilatildeo geral de modelagem por pontos e

trabalha mais especificamente com operaccedilotildees booleanas em objetos

modelados por pontos Dois trabalhos que exploram as operaccedilotildees booleanas na

modelagem por pontos seratildeo abordados o trabalho de Adams e Dutreacute [2] e o

trabalho de Pauly et al [3] O presente trabalho implementa o meacutetodo de Adams

e Dutreacute com algumas melhorias e faz uma comparaccedilatildeo entre o meacutetodo de Pauly

[3] e o meacutetodo de Adams e Dutreacute [2] com nossas melhorias

Como contribuiccedilotildees dadas por este trabalho apresentamos

- um estudo sobre modelagem por pontos

- um estudo sobre operaccedilotildees booleanas com pontos

- proposta de melhorias ao algoritmo proposto por Adams e Dutreacute [2]

- comparaccedilatildeo dos dois meacutetodos propostos para realizar estas operaccedilotildees

meacutetodo de Pauly et al [3] e de Adams e Dutreacute [2]

Este trabalho vem apresentado nesta dissertaccedilatildeo organizada em sete

capiacutetulos conforme descrito resumidamente a seguir

O capiacutetulo 2 cita alguns trabalhos sobre modelagem por pontos que estatildeo

relacionados a este trabalho

O capiacutetulo 3 apresenta uma visatildeo geral do modelo por pontos e explica

melhor alguns trabalhos citados no capiacutetulo 2

17

O capiacutetulo 4 apresenta operaccedilotildees booleanas com pontos e os dois

meacutetodos para realizaacute-las na modelagem por pontos meacutetodo de Pauly et al [3] e

de Adams e Dutreacute [2]

O capiacutetulo 5 apresenta algumas melhorias ao algoritmo de Adams e Dutreacute

[2] e a nossa implementaccedilatildeo deste algoritmo

O capiacutetulo 6 traz os resultados obtidos

E finalmente o capiacutetulo 7 encerra o trabalho com uma conclusatildeo e com

possiacuteveis trabalhos futuros

Trabalhos relacionados 18

2 Trabalhos relacionados

O primeiro pesquisador a propor o uso de pontos como primitiva graacutefica foi

Levoy em [4] Ele propotildee o uso de pontos como primitiva de renderizaccedilatildeo e

discute a conversatildeo dos outros modelos para o modelo por pontos

Nos uacuteltimos anos vaacuterios trabalhos importantes tecircm sido realizados na aacuterea

em diversos segmentos em visualizaccedilatildeo podemos destacar os trabalhos de

Pfister [5] e de Zwicker [6] que usam pontos como primitiva de renderizaccedilatildeo e

com resultados praacuteticos interativos muito bons

Em [7] Pauly et al propotildeem algoritmos para modelagem multi-resoluccedilatildeo

em modelos por pontos

Os trabalhos de Curless [8] e Rusinkiewicz [9] discutem os meacutetodos de

aquisiccedilatildeo que consistem em obter uma amostragem de pontos da superfiacutecie do

objeto real por meio de equipamentos como por exemplo o scanner 3D

Nas operaccedilotildees booleanas a interseccedilatildeo das superfiacutecies dos modelos

iniciais seraacute parte do modelo resultado e para ser representada corretamente

precisa ser reconstruiacuteda A reconstruccedilatildeo da superfiacutecie tambeacutem eacute usada na

visualizaccedilatildeo de um modelo Um trabalho significativo na aacuterea de reconstruccedilatildeo de

superfiacutecies estaacute em [10] de N Amenta etal Este trabalho apresenta uma

soluccedilatildeo praacutetica com garantias teoacutericas para este problema e uma heuriacutestica para

o tratamento de arestas vivas a questatildeo mais difiacutecil desta aacuterea Um exemplo

de uma aresta viva eacute o encontro de dois planos natildeo coincidentes

Frequumlentemente a interseccedilatildeo citada acima (interseccedilatildeo entre os modelos iniciais)

gera uma aresta viva (seccedilatildeo 4223)

O algoritmo aqui implementado eacute um plugin para o software PointShop 3D

[11] de Zwicker et al software de ediccedilatildeo de modelos com pontos O PointShop

tem seu coacutedigo aberto documentaccedilatildeo e trabalha com plugins Ele permite a

visualizaccedilatildeo e ediccedilatildeo interativa do modelo por pontos Eacute o uacutenico software livre

disponiacutevel com estas caracteriacutesticas Esta implementaccedilatildeo na forma de um plugin

facilitou muito o trabalho pois natildeo foi necessaacuterio implementar a visualizaccedilatildeo do

modelo 3D Aleacutem disso o Pointshop conteacutem tambeacutem um plugin com a

implementaccedilatildeo do meacutetodo de Pauly et al [3] discutido nesta dissertaccedilatildeo A

Trabalhos relacionados 19

execuccedilatildeo dos dois plugins que realizam operaccedilotildees booleanas pocircde ser

comparada

Os trabalhos aqui discutidos satildeo o de Bart Adams e Philip Dutreacute [2] e de

Pauly et al[3] que apresentam meacutetodos diferentes para realizaccedilatildeo de

operaccedilotildees booleanas com pontos Adams e Dutreacute utilizam octrees [1] e Pauly

Kd-Tree [16] e MLS (Moving Least Squares) [18] Estes algoritmos satildeo

discutidos no capiacutetulo 4

O trabalho de Sara F Frisken [12] apresenta um algoritmo para realizar

operaccedilotildees em octree de forma mais eficiente Como estas operaccedilotildees estatildeo

presentes em todo o nosso algoritmo este trabalho certamente oferece uma

forma de otimizaccedilatildeo mas que natildeo foi implementada

Modelagem por Pontos 20

3 Modelagem por Pontos

A computaccedilatildeo graacutefica natildeo lida diretamente com o objeto ou com o

fenocircmeno fiacutesico lida com modelos graacuteficos ou geomeacutetricos Modelos graacuteficos

satildeo estruturas computacionais (abstratas) que capturam aspectos de objetos de

interesse para uma aplicaccedilatildeo como forma cor textura etc Se apenas a forma

ou a geometria do objeto eacute relevante temos modelos geomeacutetricos

Estes modelos satildeo usados em vaacuterias aplicaccedilotildees em computaccedilatildeo graacutefica

como roboacutetica visatildeo computacional simulaccedilotildees realistas anaacutelises estruturais

prototipagem projeto e manufatura de produtos eletromecacircnicos arquitetura

Existem vaacuterios tipos de modelos graacuteficos Esta dissertaccedilatildeo trata de um tipo

muito em voga atualmente que eacute o modelo por pontos

Neste capiacutetulo daremos uma visatildeo geral do modelo por pontos

Introduziremos este modelo e seu processo de criaccedilatildeo Seraacute apresentado o que

eacute um modelo por pontos e o conceito de surfel [5] introduziremos os tipos de

distribuiccedilatildeo dos surfels uma estruturaccedilatildeo aplicada a estes surfels e dados que

eles podem conter As quatro proacuteximas subseccedilotildees (Ideacuteia da representaccedilatildeo

Tipos de distribuiccedilatildeo dos surfels Estrutura de multi-resoluccedilatildeo e Dados que um

surfel pode conter) tratam destes toacutepicos Um modelo por pontos pode ser criado

a partir da conversatildeo de outros tipos de modelagem NURBS por exemplo para

o modelo por pontos ou a partir de um processo de aquisiccedilatildeo Esta uacuteltima forma

de criaccedilatildeo pode ser dividida em duas etapas aquisiccedilatildeo do modelo reconstruccedilatildeo

da superfiacutecie As subseccedilotildees 35 e 36 tratam destas duas etapas

respectivamente A ediccedilatildeo do modelo 3D eacute tratada brevemente na subseccedilatildeo 38

e a sua visualizaccedilatildeo na subseccedilatildeo 37 A apresentaccedilatildeo do processo de aquisiccedilatildeo

(seccedilatildeo 35) eacute baseada no tutorial de W T Correcirca [13] A etapa de ediccedilatildeo 3D

consiste em operaccedilotildees para mudanccedila da cor textura ou forma do modelo Para

esta etapa enfocaremos as operaccedilotildees booleanas que modificam a forma do

modelo ou criam novos modelos

31 Ideacuteia da Representaccedilatildeo

Modelagem por Pontos 21

Figura 1 [20] -Um modelo por pontos e sua visualizaccedilatildeo

Um modelo por pontos representa um objeto atraveacutes de seu contorno Eacute

um tipo de representaccedilatildeo B-Rep (Boundary Representation) [1] Este contorno

consiste em uma superfiacutecie 2D posicionada no espaccedilo 3D Na modelagem por

pontos ela eacute representada por um conjunto de pontos 3D que satildeo uma

amostragem dos (infinitos) pontos que formam a superfiacutecie contiacutenua (Figura 1) A

amostragem pode ser obtida de diversas maneiras Uma delas o processo de

aquisiccedilatildeo progrediu muito nos uacuteltimos anos e este foi um dos fatores que tornou

muito importante o desenvolvimento deste modelo por pontos Outra forma de

gerar amostragem eacute fazer uma conversatildeo de um outro modelo NURBS por

exemplo para o modelo por pontos

Estes pontos satildeo denominados surfels e podem conter aleacutem da posiccedilatildeo

3D outras informaccedilotildees como normal agrave superfiacutecie cor textura raio de alcance A

Figura 2 mostra um conjunto de surfels representando uma superfiacutecie No surfel

em destaque podemos ver o raio de alcance rt e a normal n agrave superfiacutecie

Modelagem por Pontos 22

Figura 2 [5] A superfiacutecie modelada por surfels O surfel em destaque tem raio de alcance

rt e normal n

Como o modelo natildeo armazena qualquer informaccedilatildeo sobre a conexatildeo entre

os surfels a reconstruccedilatildeo da superfiacutecie contiacutenua a partir dele pode exigir

algumas restriccedilotildees na amostragem (seccedilatildeo 36)

32 Tipos de distribuiccedilatildeo dos surfels

Existem dois tipos de distribuiccedilatildeo dos surfels na modelagem por pontos

uniforme e natildeo uniforme Na distribuiccedilatildeo uniforme cada um deles descreve

partes de mesmo tamanho da superfiacutecie Na natildeo uniforme cada surfel armazena

a informaccedilatildeo de seu raio de alcance que eacute o raio do disco que este surfel

representa

A distribuiccedilatildeo uniforme tem a vantagem de ser mais simples e natildeo ser

necessaacuterio armazenar o raio de alcance do disco mas ela apresenta a seguinte

desvantagem se o modelo possui regiotildees com muito detalhe e regiotildees com

pouco detalhe ele teraacute que manter uma alta densidade mesmo nas regiotildees de

poucos detalhes

33 Estrutura de multi-resoluccedilatildeo

Um objeto pode ser representado em vaacuterios niacuteveis de detalhes Por

exemplo podemos representar um mesmo objeto com vaacuterias resoluccedilotildees

diferentes Este conceito pode ser aplicado ao modelo por pontos Desta forma

um modelo eacute representado por uma estrutura hieraacuterquica (uma aacutervore por

exemplo) onde em cada niacutevel temos uma representaccedilatildeo do objeto em uma

Modelagem por Pontos 23

determinada resoluccedilatildeo Em [7] Pauly et al propotildeem algoritmos para modelagem

multi-resoluccedilatildeo em modelos por pontos

34 Dados que um surfel pode conter

Cada surfel armazena sua localizaccedilatildeo e pode tambeacutem conter informaccedilotildees

como a cor ou coordenadas de textura Se a amostragem natildeo for uniforme o

surfel conteacutem a informaccedilatildeo do raio de alcance que eacute o raio de um disco cujo

centro eacute a posiccedilatildeo do surfel O surfel pode tambeacutem conter o vetor normal agrave

superfiacutecie e assim o surfel pode ser visto como um disco orientado A superfiacutecie

tambeacutem pode ser vista como uma superfiacutecie orientada

35 Aquisiccedilatildeo do modelo

Esta introduccedilatildeo sobre aquisiccedilatildeo do modelo aqui apresentada baseia-se no

tutorial de W T Correcirca [13]

O processo de aquisiccedilatildeo consiste em obter uma amostragem de pontos da

superfiacutecie do objeto real por meio de equipamentos como por exemplo o

scanner 3D Eacute uma aacuterea que tem progredido muito nos uacuteltimos anos A

resoluccedilatildeo e a precisatildeo dos equipamentos de aquisiccedilatildeo tecircm melhorado bastante

e o custo deles reduzido de forma significativa Isso possibilita que a aquisiccedilatildeo

de modelos 3D seja usada em aplicaccedilotildees de desenho industrial arte ou em

produtos para a aacuterea de entretenimento O consequumlente maior uso destes

equipamentos criou a necessidade de avanccedilos no tratamento dos seus dados de

saiacuteda que satildeo um conjunto de pontos

Este processo pode ser dividido em trecircs partes [13] aquisiccedilatildeo da

geometria aquisiccedilatildeo da textura e correccedilatildeo de falhas da aquisiccedilatildeo

351 Aquisiccedilatildeo da geometria

Existem vaacuterios meacutetodos de aquisiccedilatildeo da geometria Curless [8] e

Rusinkiewicz [9] classificaram estes meacutetodos em trecircs categorias meacutetodos por

contato transmissatildeo e reflexatildeo

O meacutetodo por contato toca a superfiacutecie do objeto com uma sonda e grava

a posiccedilatildeo Este meacutetodo do qual o Coordinate Measuring Machines (CMMs) eacute

Modelagem por Pontos 24

um exemplo eacute bastante preciso mas eacute muito lento e natildeo adequado a objetos

fraacutegeis

Meacutetodos por transmissatildeo projetam ondas de energia sobre o objeto e

gravam a energia transmitida Por exemplo tomografia computadorizada que

projeta ondas de raio-x sobre o objeto e mede a quantidade de radiaccedilatildeo que

passa atraveacutes dele O resultado eacute um modelo geomeacutetrico de alta resoluccedilatildeo Este

meacutetodo pode captar detalhes do objeto que natildeo satildeo visiacuteveis de fora do objeto

Por outro lado ele eacute caro e arriscado

Meacutetodos por reflexatildeo podem ser oacuteticos ou natildeo-oacuteticos Natildeo-oacuteticos incluem

radares que medem a distacircncia a um objeto enviando microondas ou ondas

sonoras para o objeto e gravando o tempo que a onda gasta para retornar Estes

meacutetodos natildeo satildeo muito precisos nem raacutepidos

Meacutetodos por reflexatildeo oacuteticos podem ser passivos ou ativos Meacutetodos oacuteticos

passivos natildeo interagem com o objeto e incluem teacutecnicas de visatildeo computacional

como shape-from-shading stereo triangulation optical flow e meacutetodos de

decomposiccedilatildeo para video streams Estes meacutetodos raramente constroem

modelos precisos e sua maior aplicaccedilatildeo eacute em reconhecimento de objetos

Meacutetodos oacuteticos ativos projetam luz sobre um objeto de maneira estruturada

e atraveacutes da reflexatildeo da luz determinam a forma do objeto Exemplos satildeo depth

from defocus photometric stereo projected-light triangulation time of flight

Meacutetodos por reflexatildeo oacuteticos ativos tecircm muitas vantagens sobre os passivos tecircm

um melhor desempenho quando natildeo existe textura satildeo mais baratos e mais

robustos e produzem uma amostragem precisa

352 Aquisiccedilatildeo da textura

Idealmente noacutes gostariacuteamos de ter uma completa descriccedilatildeo de como um

ponto da superfiacutecie reflete a luz dependendo do vetor normal a esta superfiacutecie

da direccedilatildeo do raio de luz incidente e do comprimento de onda Tal descriccedilatildeo eacute

conhecida como Bidirectional Reflectance Distribution Function (BRDF) Medir

BRDFs com precisatildeo eacute um problema difiacutecil

Pode-se ter uma aproximaccedilatildeo da aquisiccedilatildeo de cores do objeto tirando

fotos dele O objeto eacute fotografado e a cor de cada ponto da superfiacutecie eacute obtida a

partir de um mapeamento das fotos 2D para o modelo 3D Para mapear a

fotografia agrave geometria precisamos conhecer os paracircmetros de projeccedilatildeo da

cacircmera e a sua posiccedilatildeo no momento em que a foto foi batida Para cada ponto

Modelagem por Pontos 25

3D do modelo encontramos sua projeccedilatildeo 2D no plano da cacircmera e associamos

a cor do pixel nesta projeccedilatildeo agrave cor do ponto 3D

353 Correccedilatildeo das falhas da aquisiccedilatildeo

O processo de aquisiccedilatildeo deixa frequumlentemente buracos no modelo devido

a ruiacutedos no processo ou agrave impossibilidade de aquisiccedilatildeo de determinadas partes

de uma superfiacutecie Estes buracos devem ser corrigidos Pode-se usar por

exemplo um filtro de passa-baixa para remoccedilatildeo de ruiacutedos [14] Meacutetodos de

difusatildeo geomeacutetrica tecircm sido aplicados para preenchimento dos buracos [15] A

correccedilatildeo das falhas eacute tida como um preacute-processamento para o processo de

reconstruccedilatildeo da superfiacutecie contiacutenua (seccedilatildeo 36)

36 Reconstruccedilatildeo da superfiacutecie (contiacutenua) a partir do modelo (discreto)

A reconstruccedilatildeo da superfiacutecie contiacutenua consiste em a partir de um conjunto

natildeo estruturado de pontos obter um modelo contiacutenuo desta superfiacutecie Esta

reconstruccedilatildeo eacute frequumlentemente exigida para um modelo por pontos Na sua

visualizaccedilatildeo podemos desejar focar qualquer parte do modelo Para fazermos

operaccedilotildees booleanas com os modelos podemos querer determinar exatamente

onde eles se intersectam

No entanto natildeo precisamos ter necessariamente a representaccedilatildeo contiacutenua

de todo o objeto ao mesmo tempo A reconstruccedilatildeo desta superfiacutecie a partir dos

pontos amostrados pode ser feita no momento que for mais adequado agrave

aplicaccedilatildeo Na visualizaccedilatildeo a reconstruccedilatildeo pode ser feita na projeccedilatildeo 2D da

parte do modelo em foco (seccedilatildeo 37) Para operaccedilotildees booleanas pode-se

reconstruir apenas a aacuterea da interseccedilatildeo dos modelos

Este processo de reconstruccedilatildeo de superfiacutecie tem sido muito estudado em

modelagem geomeacutetrica e geometria computacional nos uacuteltimos anos O trabalho

mais importante desta aacuterea eacute o trabalho de Amenta et al [10] que foi a primeira

soluccedilatildeo com garantias demonstraacuteveis para este problema de reconstruccedilatildeo de

superfiacutecie A seccedilatildeo 44 explica estes conceitos e o trabalho [10] Este trabalho

demonstra que teoricamente para que a reconstruccedilatildeo da superfiacutecie (contiacutenua) a

partir das amostras seja correta a amostragem deve ser adequada Ele usa o

conceito de ldquoEixo Medialrdquo para definir o que eacute uma amostragem adequada

Modelagem por Pontos 26

(seccedilatildeo 44) Em duas dimensotildees os veacutertices de Voronoi de uma amostragem

densa aproximam o ldquoEixo Medialrdquo da amostragem

Por meio deste conceito de Eixo Medial [1016] obtecircm-se paracircmetros

teoacutericos para a definiccedilatildeo de amostragem adequada e baseado neste conceito

o algoritmo apresentado em [10] traz uma soluccedilatildeo praacutetica para o problema

obtendo uma malha poligonal a partir do modelo por pontos

O PointShop 3D [11] software de ediccedilatildeo de modelos por pontos utilizado

nesta pesquisa faz quando necessaacuterio a reconstruccedilatildeo da superfiacutecie Para isso

o PointShop 3D explora a vizinhanccedila local (surfels vizinhos de acordo com suas

posiccedilotildees) Ele usa o conceito de Eixo Medial para justificar seu meacutetodo de

reconstruccedilatildeo da superfiacutecie que na praacutetica apresenta resultados bastante

satisfatoacuterios apesar de teoricamente natildeo ter garantias [16]

37 Visualizaccedilatildeo do modelo

A primeira abordagem para visualizaccedilatildeo de um modelo por pontos foi

construir uma malha de poliacutegonos a partir dos surfels e renderizaacute-la Mas a

construccedilatildeo de malhas a partir dos surfels eacute um processo muito caro e lento

principalmente para modelos complexos Na tentativa de obter uma visualizaccedilatildeo

interativa do modelo por pontos estatildeo sendo estudadas teacutecnicas que utilizam

surfels como primitiva de visualizaccedilatildeo A ideacuteia foi apresentada inicialmente por

Levoy [4]

Figura 3 [21] -Modelo por pontos e sua renderizaccedilatildeo usando Surface Splatting

Modelagem por Pontos 27

O objetivo da renderizaccedilatildeo a partir dos surfels eacute projetaacute-los na tela e

reconstruir as superfiacutecies de forma contiacutenua sem buracos Para que esta

renderizaccedilatildeo seja amplamente utilizada deve-se ter cuidado com o uso de

memoacuteria e com a qualidade da imagem gerada Teacutecnicas recentes como Surface

Splatting [6] faz a renderizaccedilatildeo interativamente com qualidade (Figura 3)

comparada a outros meacutetodos de renderizaccedilatildeo como Image Based Rendering

Em geral a visualizaccedilatildeo do modelo por pontos pode ser dividida nas seguintes

etapas

- warping - projeccedilatildeo em perspectiva de cada ponto do modelo na tela

processo anaacutelogo agrave projeccedilatildeo de veacutertices dos triacircngulos na malha triangular Se

um pixel da tela estiver contido em mais de uma projeccedilatildeo de surfels (vizinhos)

ou seja mais de um ponto cobre este pixel os atributos destes pontos seratildeo

combinados

- shading por ponto - o processo de shading eacute realizado para cada ponto

visiacutevel (os pontos que natildeo satildeo vistos do ponto de vista em questatildeo devem ser

retirados) Qualquer modelo local de shading pode ser aplicado Uma nova

teacutecnica foi proposta em Surface Splatting [6]

- reconstruccedilatildeo da imagem ndash pixels que natildeo ldquoreceberamrdquo projeccedilatildeo de

nenhum ponto formam buracos na imagem Esta imagem deve ser reconstruiacuteda

sem buracos sem aliasing e as superfiacutecies devem ser reconstruiacutedas de forma

contiacutenua e devem ser ldquosuavizadasrdquo (smooth surface)

Os algoritmos de renderizaccedilatildeo por pontos podem tratar a questatildeo de

buracos na visualizaccedilatildeo de trecircs formas [17]

Detecccedilatildeo e preenchimento de buracos no espaccedilo da tela pontos satildeo

projetados na tela e pixels que natildeo receberam pontos satildeo detectados (buracos)

Para preencher estes buracos que natildeo receberam pontos eacute feita uma

interpolaccedilatildeo entre os vizinhos

Geraccedilatildeo de mais pontos a superfiacutecie eacute interpolada no espaccedilo do modelo

para garantir que todos os pixels recebam pelo menos a projeccedilatildeo de um ponto

Splatting um surfel eacute projetado na tela e sua contribuiccedilatildeo eacute espalhada de

forma diferenciada para os pixels vizinhos Agrave medida em que o vizinho se torna

mais distante a contribuiccedilatildeo do surfel diminui

Raumlsaumlnen faz uma analogia do processo de renderizaccedilatildeo proposto em [6]

com o mapeamento de textura [15] No mapeamento de textura para um

determinado pixel da tela satildeo encontrados os pontos da textura que afetam este

Modelagem por Pontos 28

pixel Num sentido inverso em splatting para um determinado surfel (que

representa a textura) satildeo encontrados os pixels da tela que este surfel afeta

38 Ediccedilatildeo do modelo

Ediccedilatildeo de um modelo 3D consiste em operaccedilotildees que modificam

caracteriacutesticas deste modelo como cor textura forma ou criam novos modelos

O software PointShop 3D [11] software de ediccedilatildeo de modelos por pontos 3D

implementa vaacuterias destas operaccedilotildees (ver seccedilatildeo 52)

Para modificar a forma de um modelo ou criar um novo satildeo muito usadas

as operaccedilotildees booleanas que eacute o nosso enfoque nesta dissertaccedilatildeo Na

modelagem CSG (Constructive Solid Geometry) as operaccedilotildees booleanas satildeo

usadas juntamente com primitivas soacutelidas para definir um modelo No entanto

em alguns tipos de modelos estas operaccedilotildees satildeo difiacuteceis como por exemplo

em malhas poligonais Com pontos elas podem ser feitas interativamente [32]

Operaccedilotildees Booleanas com Pontos 29

4 Operaccedilotildees Booleanas com Pontos

Operaccedilotildees booleanas satildeo as operaccedilotildees de uniatildeo interseccedilatildeo e diferenccedila

definidas na teoria matemaacutetica de conjuntos Estas operaccedilotildees satildeo aplicadas em

modelos soacutelidos para alteraacute-los ou para criar novos modelos A Figura 4 abaixo

mostra a criaccedilatildeo de trecircs novos modelos a partir de quatro modelos iniciais

Figura 4 [22] Trecircs modelos novos foram criados a partir dos quatro iniciais (esfera

cilindro dois cubos) O primeiro eacute a esfera menos um cubo em seguida retirou-se outro

cubo e por uacuteltimo retirou-se o cilindro

Estas operaccedilotildees satildeo aplicadas em objetos modelados por pontos em dois

trabalhos no trabalho de Bart Adams e Philip Dutreacute [2] e no trabalho de Pauly

et Al [3] Neste capiacutetulo a seccedilatildeo 41 apresenta a parte comum aos dois

trabalhos e as seccedilotildees 42 e 43 apresentam as particularidades de cada um A

seccedilatildeo 44 discute uma questatildeo natildeo explicitada em nenhum dos dois trabalhos

41 Meacutetodos para realizar operaccedilotildees booleanas em objetos modelados por pontos

A Figura 5 mostra o resultado do meacutetodo de Adams[2] operaccedilotildees de

uniatildeo diferenccedila e interseccedilatildeo de objetos soacutelidos 3D modelados por pontos

Operaccedilotildees Booleanas com Pontos 30

Figura 5 [2]-A partir de dois modelos por pontos uma heacutelice e uma cabeccedila as trecircs operaccedilotildees booleanas satildeo mostradas da esquerda para a direita uniatildeo diferenccedila e interseccedilatildeo

Sejam A e B objetos 3D soacutelidos modelados por pontos Definem-se os

seguintes elementos

Af ndash superfiacutecie (contorno) de A que estaacute fora de B

Ad ndash superfiacutecie (contorno) de A que estaacute dentro de B

Bf ndash superfiacutecie (contorno) de B que estaacute fora de A

Bd ndash superfiacutecie (contorno) de B que estaacute dentro de A

O resultado da operaccedilatildeo booleana entre A e B seraacute um modelo C cuja

superfiacutecie de contorno pode ser determinada pela seguinte regra [2] que aqui

chamamos de Regra 1

Regra 1 A U B Af + Bf

A cap B Ad + Bd

A ndash B Af + Bd (com a orientaccedilatildeo invertida)

B ndash A Ad (com a orientaccedilatildeo invertida) + Bf

A Figura 6 mostra as operaccedilotildees com dois modelos A e B

(a) (b)

Operaccedilotildees Booleanas com Pontos 31

(c) (d)

Figura 6 [22] (a) Dois modelos A e B (b) Posicionados de forma que A tem

uma parte dentro de B eacute mostrado o resultado A U B Af + Bf (c) Resultado de A ndash B Af

+ Bd (d) Resultado de A cap B Ad + Bd

Bart [2] e Pauly [3] apresentam dois meacutetodos para determinar os

elementos acima Estes dois meacutetodos satildeo construiacutedos a partir dos seguintes

conceitos os elementos Af Ad Bf Bd satildeo uma parte da superfiacutecie modelada por

pontos e portanto satildeo conjuntos de surfels Para determinaacute-los eacute necessaacuteria

entatildeo a classificaccedilatildeo de um surfel (que pode se resumir agrave classificaccedilatildeo de um

ponto que eacute o seu centro) de uma superfiacutecie como dentro ou fora de um outro

modelo Os dois meacutetodos utilizam a seguinte regra para esta classificaccedilatildeo aqui

denominada Regra 2

Regra 2 Dado um ponto x qualquer um volume V determinado por uma superfiacutecie

de contorno S uma amostragem P da superfiacutecie S um ponto p є P que eacute a

amostra mais proacutexima a x um vetor np normal agrave S em p e orientado para fora de

S temos que

(x ndash p) np gt 0 x notinV

Ou seja para classificar um ponto em relaccedilatildeo a um modelo verificamos o

produto interno entre a normal em p (surfel mais proacuteximo a x) e o vetor (x - p)

se este produto interno for maior que zero x natildeo pertence ao volume V e seraacute

classificado como fora senatildeo seraacute classificado como dentro De maneira

ainda mais informal se a normal em p apontar para a direccedilatildeo oposta a x x seraacute

classificado como dentro se apontar para x x seraacute classificado como fora

A Figura 7 mostra a Regra 2

Operaccedilotildees Booleanas com Pontos 32

Figura 7 Para classificar o ponto x encontra-se o surfel p (com normal np) mais proacuteximo

a x Se o produto interno entre np e (x ndash p) for maior que zero entatildeo x eacute classificado como

fora senatildeo seraacute classificado como dentro

A validade da Regra 2 eacute discutida na Seccedilatildeo 44 Uma das restriccedilotildees

teoacutericas para garantir-lhe a validade eacute que a superfiacutecie seja suave

Cada um dos dois meacutetodos daacute um tratamento diferente para o uso desta

regra Pauly usa a regra diretamente encontrando o surfel mais proacuteximo a um

ponto e classificando este ponto a partir deste surfel Ele utiliza tambeacutem a

representaccedilatildeo impliacutecita MLS (Moving Least Squares [18]) para casos em que a

Regra 2 poderia falhar e para tratamento de interseccedilotildees [3] Seu meacutetodo vale

para modelos soacutelidos ou natildeo soacutelidos O meacutetodo de Adams e Dutreacute [2] utiliza

octrees [1] criando uma classificaccedilatildeo dos noacutes da octree a partir desta Regra 2

Os pontos satildeo entatildeo classificados de acordo com o noacute da octree que o conteacutem

Este segundo meacutetodo aplica-se somente a modelos soacutelidos Os dois meacutetodos

seratildeo descritos em detalhes nas seccedilotildees abaixo

Como um surfel eacute considerado um disco podemos dizer que surfels de

dois modelos diferentes podem se intersectar A interseccedilatildeo destes dois surfels

corresponde agrave interseccedilatildeo destes dois discos Estes surfels geram problemas

para visualizaccedilatildeo se forem acrescentados ao resultado sem um tratamento

especiacutefico apresentaratildeo artefatos natildeo desejaacuteveis na renderizaccedilatildeo do modelo

resultado (Figura 8) se natildeo forem acrescentados ao resultado deixaratildeo buracos

no modelo

Operaccedilotildees Booleanas com Pontos 33

Figura 8 [2] -Interseccedilatildeo de duas esferas agrave esquerda sem nenhum tratamento de interseccedilatildeo agrave direita apoacutes o tratamento de interseccedilatildeo

Aleacutem disso nem sempre esta interseccedilatildeo forma uma superfiacutecie suave

Esta interseccedilatildeo pode formar uma aresta viva (seccedilatildeo 4223) gerando

problemas tambeacutem para o uso da Regra 2 que eacute vaacutelida apenas para superfiacutecies

suaves Eacute necessaacuterio entatildeo fazer um tratamento desta superfiacutecie de interseccedilatildeo

(formada por surfels originados de diferentes modelos) O tratamento de cada

um dos meacutetodos para este caso seraacute tambeacutem abaixo apresentado

42 Meacutetodo de Adams e Dutreacute

O meacutetodo aplica-se somente a modelos soacutelidos Para determinaccedilatildeo dos

elementos da aqui chamada Regra 1 (seccedilatildeo 41) este meacutetodo utiliza uma octree

[1] que subdivide o espaccedilo do modelo em trecircs fora dentro ou no contorno do

modelo Estes espaccedilos satildeo determinados pela classificaccedilatildeo dos noacutes da octree a

partir da Regra 2 Tambeacutem eacute usado o meacutetodo TINN - Triangle Inequality Nearest

Neighbour [19] - para otimizar a pesquisa dentro do noacute A seguir descrevemos o

modelo usado neste meacutetodo apresentando os dados associados aos pontos o

tipo de distribuiccedilatildeo e o algoritmo que realiza as operaccedilotildees

421 Modelo por Pontos em Adams e Dutreacute

Os surfels neste meacutetodo contecircm as seguintes informaccedilotildees posiccedilatildeo do

surfel xs orientaccedilatildeo do surfel ns e raio de alcance do surfel rs O surfel pode ser

pensado como um disco ortogonal a ns com centro xs e raio rs O raio eacute

escolhido de tal forma que a projeccedilatildeo dos discos no plano da imagem se

sobreponham

Operaccedilotildees Booleanas com Pontos 34

Os objetos representados satildeo soacutelidos A distribuiccedilatildeo dos surfels eacute

uniforme embora o algoritmo natildeo exija esta condiccedilatildeo Para cada soacutelido eacute

definido um rmax = Max rs o raio de alcance do maior surfel pertencente agrave

superfiacutecie do soacutelido Como o raio eacute escolhido de tal forma que a projeccedilatildeo dos

discos no plano da imagem se sobreponham o controle da amostragem eacute

entatildeo ligado agrave renderizaccedilatildeo

422 Algoritmo de Operaccedilotildees Booleanas

Utilizando objetos modelados da forma descrita acima o meacutetodo realiza

operaccedilotildees de uniatildeo interseccedilatildeo e diferenccedila com modelos soacutelidos Supondo dois

modelos soacutelidos S1 e S2 O algoritmo pode ser dividido nas seguintes etapas

Criaccedilatildeo de uma octree para cada modelo Teste Dentro-Fora Tratamento da

interseccedilatildeo Estas etapas satildeo apresentadas nas proacuteximas seccedilotildees

4221 Criaccedilatildeo de uma octree para cada modelo

Eacute criada uma octree [1] para cada modelo A criaccedilatildeo de uma octree eacute feita

da seguinte forma

Gera-se a ldquoCaixa envolventerdquo caixa alinhada com os eixos que conteacutem

todo o modelo A ldquoCaixa envolventerdquo corresponde ao noacute raiz da octree Este noacute

conteacutem inicialmente todos os surfels do modelo Em seguida o noacute raiz eacute

dividido em oito noacutes filhos Os surfels satildeo distribuiacutedos entre estes oito noacutes Cada

um deles caso contenha surfels eacute dividido novamente em 8 filhos e seus surfels

satildeo redistribuiacutedos entre eles Este processo eacute repetido recursivamente enquanto

o nuacutemero de surfels do noacute for maior que zero ou ateacute uma profundidade maacutexima

preacute-definida da octree ser alcanccedilada

Cada noacute da octree deve ser classificado O objetivo desta classificaccedilatildeo eacute

determinar que parte da octree estaacute dentro do modelo e que parte estaacute fora Os

noacutes da octree satildeo entatildeo classificados como ldquodentrordquo ldquoforardquo e ldquocontornordquo

Podemos ilustrar esta classificaccedilatildeo em 2D a Figura 9 mostra uma quadtree

classificada

Operaccedilotildees Booleanas com Pontos 35

Figura 9-Um objeto representado por pontos com suas normais e sua quadtree correspondente classificada os noacutes cinza claro estatildeo dentro do modelo noacutes cinza mais escuro estatildeo fora do modelo e noacutes com cinza intermediaacuterio satildeo noacutes cheios noacutes que conteacutem pontos

O noacutes que conteacutem surfels satildeo classificados como ldquocontornordquo Para

classificar um noacute vazio existem trecircs casos

o noacute vazio tem apenas um vizinho-irmatildeo natildeo vazio

o noacute vazio tem mais de um vizinho-irmatildeo natildeo vazio

o noacute vazio natildeo tem vizinhos-irmatildeos natildeo vazios

No primeiro caso o noacute vazio eacute classificado pelo seu vizinho natildeo vazio No

segundo caso considera-se qualquer um dos vizinhos natildeo vazios No terceiro

caso classifica-se primeiro os noacutes vizinhos e eacute dada a mesma classificaccedilatildeo para

o noacute vazio Como cada noacute natildeo folha de uma octree tem pelo menos um noacute filho

natildeo vazio sempre pode ser feita a classificaccedilatildeo dos noacutes vazios A classificaccedilatildeo

eacute feita da seguinte forma dentre os surfels do vizinho-irmatildeo escolhido encontra-

se o surfel mais proacuteximo ao noacute a ser classificado Se a normal deste surfel

aponta para o noacute vazio a ser classificado entatildeo ele eacute classificado como ldquoforardquo

Se a normal aponta no sentido contraacuterio entatildeo ele eacute classificado como ldquodentrordquo

De maneira mais formal sejam cv e cc coordenadas dos centros do noacute vazio e

do noacute contorno respectivamente Seja s o surfel mais proacuteximo ao noacute vazio e ns

a normal em s Se ( cv - cc )٠ ns gt 0 ( produto interno entre a normal em s e o

vetor cv - cc for maior que zero ) o noacute vazio seraacute classificado como ldquoforardquo

Senatildeo seraacute classificado como ldquodentrordquo

Em geral os noacutes ldquocontornordquo satildeo subdivididos em trecircs partes uma que estaacute

fora do modelo uma que estaacute dentro do modelo e uma terceira que conteacutem os

surfels Esta subdivisatildeo eacute feita por meio da criaccedilatildeo de dois planos paralelos que

Operaccedilotildees Booleanas com Pontos 36

dividem o noacute Para determinar estes planos calcula-se o vetor nm igual agrave

meacutedia das normais dos surfels do noacute nm = sum ns sum ns onde ns eacute a normal de

cada surfel do noacute

Em seguida encontra-se o surfel com maior produto interno entre a sua

normal e a normal meacutedia d1=Max(nm ٠ ns) Este surfel juntamente com a normal

meacutedia define um dos planos Encontra-se tambeacutem o surfel com menor produto

interno entre a sua normal e a normal meacutedia d2=Min(nm ٠ ns) Este surfel

juntamente com a normal meacutedia define o outro plano A Figura 10 mostra a

divisatildeo de um noacute de uma quadtree nas trecircs partes dentro do modelo fora do

modelo e no ldquocontornordquo

Esta subdivisatildeo aplica-se apenas a noacutes que conteacutem surfels cujas direccedilotildees

natildeo variem em mais de 90 graus Caso isso ocorra ele natildeo seraacute subdividido Ou

seja se um noacute possuir dois vetores normais (de dois surfels diferentes) que

formem um acircngulo maior que 90 graus ele natildeo seraacute subdividido

Figura 10 [2] -Divisatildeo de noacute de contorno a parte agrave esquerda estaacute fora do modelo a parte agrave direita estaacute dentro do modelo e a faixa intermediaacuteria conteacutem os surfels

4222 Teste Dentro-Fora

O Teste Dentro-Fora faz a classificaccedilatildeo dos surfels de um modelo como

ldquodentrordquo ou ldquoforardquo de outro modelo Portanto aplicaremos este mesmo teste duas

vezes uma para o modelo S1 em relaccedilatildeo ao modelo S2 e outra para S2 em

relaccedilatildeo a S1 Vamos mostrar o teste Dentro-Fora para o caso da classificaccedilatildeo

dos surfels do modelo S1 em relaccedilatildeo a S2

Operaccedilotildees Booleanas com Pontos 37

No item anterior foram criadas duas octrees uma para o modelo S1 e

outra para o modelo S2 Chamemos de A e B as octrees de S1 e S2

respectivamente Para classificar S1 em relaccedilatildeo a S2 inicialmente eacute feita uma

avaliaccedilatildeo da posiccedilatildeo de A em relaccedilatildeo a B A e B podem estar nas seguintes

situaccedilotildees

- A natildeo intersecta B

- A intersecta apenas noacutes ldquoforardquo de B

- A intersecta apenas noacutes ldquodentrordquo de B

- A intersecta noacutes ldquoforardquo e noacutes ldquodentrordquo de B

Para testar estas situaccedilotildees os noacutes satildeo aumentados de rmax o raio do

maior surfel do modelo soacutelido Isto eacute feito para compensar o fato de que o surfel

natildeo eacute apenas um ponto mas sim considerado como um disco

No primeiro e no segundo caso todos os surfels de A satildeo classificados

como ldquoforardquo No terceiro caso todos os surfels de A satildeo classificados como

ldquodentrordquo

No quarto caso temos que percorrer a octree A Comeccedilando pelo noacute raiz

percorre-se os filhos deste noacute Para cada filho os quatro testes acima satildeo feitos

Se o noacute filho encontra-se em um dos trecircs primeiros casos a classificaccedilatildeo eacute dada

como foi citada acima Se um filho estaacute no quarto caso e natildeo eacute um noacute folha

repete-se recursivamente o mesmo procedimento para seus filhos ateacute encontrar-

se um noacute folha Para um noacute que estaacute no quarto caso e eacute folha percorre-se a lista

de surfels que este noacute conteacutem classificando cada um destes surfels Seja sa um

surfel desta lista Para este caso percorre-se a octree B para classificar sa

Primeiramente encontramos o noacute de B que conteacutem sa Se este noacute de B foi

dividido testa-se de acordo com esta divisatildeo do noacute se o surfel sa estaacute na parte

do noacute que estaacute dentro do modelo ele eacute classificado como ldquodentrordquo se sa estaacute na

parte que estaacute fora do modelo ele eacute classificado como ldquoforardquo se sa estaacute na parte

intermediaacuteria ou se o noacute de B natildeo foi subdividido em planos encontra-se sb que

eacute o surfel pertencente a este noacute de B que estaacute mais proacuteximo de sa sa seraacute

entatildeo classificado de acordo com sb Se ( sa - sb )٠ nb gt 0 sa eacute classificado

como ldquoforardquo senatildeo eacute classificado como ldquodentrordquo Se os discos de sb e sa se

intersectam sa eacute marcado como interseccedilatildeo Para encontrar sb o algoritmo

implementa o meacutetodo TINN ndash Triangle Inequality Nearest Neighbour [19]

Operaccedilotildees Booleanas com Pontos 38

4223 Tratamento da interseccedilatildeo

Os surfels de A que intersectam surfels de B satildeo classificados como

ldquointerseccedilatildeordquo Se eles natildeo forem incluiacutedos no modelo resultado o soacutelido resultado

teraacute buracos Se eles forem incluiacutedos sem algum tratamento eles natildeo

representaratildeo adequadamente a regiatildeo Em geral o surfel sa (um surfel

ldquointerseccedilatildeordquo de A) eacute dividido em dois pelo plano que conteacutem o surfel sb (surfel de

B que sa intersecta) uma parte que estaacute fora de B e outra que estaacute dentro de B

Dependendo da operaccedilatildeo que estaacute sendo realizada vamos querer manter uma

destas partes do surfel sa no modelo resultado Seja xa a posiccedilatildeo do surfel sa e o

surfel sa uma circunferecircncia de centro xa e raio ra igual ao raio de alcance de sa

O plano que conteacutem o surfel sb define uma corda desta circunferecircncia como

mostra a Figura 11 O surfel sa seraacute substituiacutedo por um surfel menor que

ultrapassa esta corda de uma distacircncia e definida pelo usuaacuterio Para cobrir

completamente a interseccedilatildeo seratildeo adicionados surfels menores que cruzam a

corda de interseccedilatildeo

Figura 11 -Interseccedilatildeo do surfel s e do plano que passa pelo surfel t o surfel mais proacuteximo a s O surfel s eacute substituiacutedo por trecircs surfels menores

Operaccedilotildees Booleanas com Pontos 39

O tratamento de interseccedilatildeo proposto por Adams e Dutreacute [2] natildeo soacute evita

os buracos mas tambeacutem cria uma forma de renderizaccedilatildeo de arestas vivas A

colocaccedilatildeo de vaacuterios pequenos surfels na regiatildeo da interseccedilatildeo permite esta

correta renderizaccedilatildeo das ldquoarestas vivasrdquo Desta forma o problema das arestas

vivas eacute resolvido na modelagem (Figura 12) A vantagem de se resolver o caso

na modelagem eacute que natildeo eacute necessaacuterio fazer um tratamento especial na

renderizaccedilatildeo para que mostre esta aresta viva Diferente do tratamento feito

em Pauly (seccedilatildeo 431) que resolve esta questatildeo em tempo de renderizaccedilatildeo

Aleacutem disso o tratamento resolve alguns casos onde a Regra 2 poderia falhar

(veja em Validade da Regra 2-seccedilatildeo 44)

Figura 12 [2] -Agrave direita eacute mostrado o resultado do tratamento de interseccedilatildeo para o caso de Arestas Vivas do objeto agrave esquerda

43 Meacutetodo de Pauly

O meacutetodo aplica-se a objetos soacutelidos e natildeo soacutelidos Os modelos podem ser

obtidos a partir de diferentes entradas como nuvem de pontos irregulares ou por

meio de scanners 3D Cria um modelo hiacutebrido destes objetos usa o modelo por

pontos juntamente com a representaccedilatildeo impliacutecita Moving Least Squares - MLS

[18] Realiza operaccedilotildees booleanas com pontos e utiliza adicionalmente MLS

para alguns casos de classificaccedilatildeo de surfels e no tratamento de interseccedilatildeo A

seguir apresentamos as caracteriacutesticas do modelo por pontos deste meacutetodo e o

algoritmo que realiza as operaccedilotildees

Operaccedilotildees Booleanas com Pontos 40

431 Modelo em Pauly

O modelo eacute uma estrutura hiacutebrida de pontos com a representaccedilatildeo impliacutecita

Moving Least Squares - MLS [18] Esta estrutura eacute usada para fazer operaccedilotildees

booleanas e tambeacutem operaccedilotildees de free-form (natildeo abordadas nesta

dissertaccedilatildeo) Para operaccedilotildees booleanas a representaccedilatildeo MLS permite que a

curva de interseccedilatildeo entre os modelos seja reconstruiacuteda e surfels sejam

colocados nesta curva e em alguns casos de classificaccedilatildeo de surfels mostrados

na seccedilatildeo 432 Para este modelo natildeo existem restriccedilotildees quanto agrave forma do

objeto

Os surfels contecircm informaccedilotildees sobre sua posiccedilatildeo e sua normal Aleacutem

disso surfels podem conter informaccedilotildees adicionais como textura cor

propriedades de materiais

A distribuiccedilatildeo dos surfels eacute natildeo-uniforme e a amostragem eacute

aproximadamente adequada (Veja seccedilatildeo 44)

432 Algoritmo de Operaccedilotildees Booleanas

O algoritmo classifica surfels de um modelo como ldquodentrordquo ou ldquoforardquo de

outro modelo Antes de colocarmos como eacute feita esta classificaccedilatildeo devemos

acrescentar que Pauly estende esta classificaccedilatildeo para modelos que natildeo satildeo

soacutelidos Ou seja mesmo um modelo natildeo soacutelido divide o espaccedilo da cena (espaccedilo

em que se encontra o modelo) em dois sub-espaccedilos dentro ou fora do modelo

Pauly faz esta subdivisatildeo da seguinte forma

Como a superfiacutecie que determina o modelo eacute orientada (conteacutem vetores

normais agrave superfiacutecie que apontam para ldquoforardquo do modelo) Pauly considera que

um modelo natildeo soacutelido divide o espaccedilo em dois sub-espaccedilos um ldquoforardquo do

modelo (os vetores normais apontam para este sub-espaccedilo) e um que estaacute

ldquodentrordquo do modelo (os vetores normais apontam para direccedilatildeo oposta a este sub-

espaccedilo) Por exemplo um plano eacute representado como um conjunto de surfels

contidos num determinado espaccedilo geomeacutetrico plano π Cada surfel conteacutem um

vetor normal direcionado Este modelo divide entatildeo o espaccedilo em dois sub-

espaccedilos o sub-espaccedilo que eacute apontado por estes surfels (considerado ldquoforardquo do

modelo) e o sub-espaccedilo que estaacute na direccedilatildeo oposta (considerado ldquodentrordquo do

modelo) Desta forma ele aplica as classificaccedilotildees de ldquodentrordquo e ldquoforardquo de um

modelo tambeacutem a modelos natildeo soacutelidos A partir desta consideraccedilatildeo as

Operaccedilotildees Booleanas com Pontos 41

operaccedilotildees booleanas satildeo realizadas com os modelos natildeo soacutelidos da mesma

forma que com os modelos soacutelidos

Para determinar esta classificaccedilatildeo (dentro ou fora do modelo) Pauly utiliza

a Regra 2 Para pesquisa do surfel mais proacuteximo o meacutetodo usa a estrutura Kd-

tree [16] e tambeacutem o algoritmo ANN [16] No entanto o meacutetodo apresenta uma

restriccedilatildeo da Regra 2 ela soacute deve ser usada para classificaccedilotildees de pontos x se

a distacircncia x-p for maior que o espaccedilamento da amostragem local ηp em p

Este espaccedilamento da amostragem local ηp em p eacute um caacutelculo aproximado da

distacircncia meacutedia entre os surfels vizinhos a p Se x estaacute muito proacuteximo agrave

superfiacutecie a classificaccedilatildeo pode falhar Neste caso ele calcula o ponto exato de

S mais proacuteximo a x usando a projeccedilatildeo MLS (ldquoMoving Least Squaresrdquo)

Por questotildees de melhoria de desempenho utiliza-se o fato de que sendo

Ωp (x) a classificaccedilatildeo do ponto x em relaccedilatildeo agrave amostragem P tem-se que Ωp (x)

= Ωp (xrsquo) para todos os pontos de xrsquo que estatildeo dentro da esfera de centro x e

raio igual a x-p - ηp (onde p eacute o surfel mais proacuteximo e ηp eacute o espaccedilamento

local da amostragem em p acima citado) Ou seja sendo x um ponto qualquer p

o surfel mais proacuteximo a x ηp eacute o espaccedilamento local da amostragem em p se

desenharmos uma esfera com centro x e raio igual a x-p - ηp temos que

todos os pontos xrsquo que estatildeo dentro da esfera teratildeo a mesma classificaccedilatildeo de x

Desta forma o nuacutemero de vezes que a classificaccedilatildeo eacute feita (pesquisando-se o

surfel mais proacuteximo ao ponto e usando a Regra 2) diminui em ateacute 90 Assim

em geral a classificaccedilatildeo de um surfel eacute obtida a partir do seu surfel vizinho

Dados

S1 a superfiacutecie MLS de contorno que define o modelo A

S2 a superfiacutecie MLS de contorno que define o modelo B

P1 o conjunto de surfels que representa a superfiacutecie S1

P2 o conjunto de surfels que representa a superfiacutecie S2

Ωp1 (x) a classificaccedilatildeo do ponto p em relaccedilatildeo a uma amostragem P1

Q1 o subconjunto de P1 que vai compor o resultado

Ωp2 (x) a classificaccedilatildeo do ponto p em relaccedilatildeo a uma amostragem P2

Q2 o subconjunto de P2 que vai compor o resultado

Os conjuntos Q1 e Q2 satildeo obtidos por meio da Tabela 1 mostrada abaixo

Operaccedilotildees Booleanas com Pontos 42

Tabela 1 Classificaccedilatildeo para operaccedilotildees booleanas

Para o tratamento de interseccedilatildeo neste meacutetodo satildeo computados pontos

que caem exatamente na curva de interseccedilatildeo e estes satildeo acrescentados ao

modelo resultado Estes pontos satildeo determinados de forma que a densidade da

amostragem vai crescendo agrave medida que os surfels se aproximam da curva de

interseccedilatildeo e convergem para este ponto de interseccedilatildeo como mostra a Figura

13

(a) (b) (c)

Figura 13 - Os novos surfels satildeo colocados exatamente na curva de interseccedilatildeo

e convergem para o ponto de interseccedilatildeo

A Figura 14 mostra o processo de encontrar os surfels que caem nesta

curva de interseccedilatildeo Inicialmente satildeo encontrados todos os pontos de Q1 e Q2

que estatildeo proacuteximos agrave curva de interseccedilatildeo por meio da funccedilatildeo de distacircncia do

operador de projeccedilatildeo MLS Em seguida procura-se todos os pares mais

proacuteximos (q1 є Q1 q2 є Q2 ) e computa-se o ponto q na curva de interseccedilatildeo da

seguinte forma (veja a Figura 14)Seja r o ponto na linha de interseccedilatildeo dos dois

planos tangentes em q1 e q2 e que estaacute mais proacuteximo a estes dois pontos isto eacute

que minimiza a distacircncia ||r-q1|| + ||r-q2|| r eacute a primeira aproximaccedilatildeo de q e agora

pode ser projetado sobre S1 e S2 para obter dois novos pontos de partida q1rsquo e q2

rsquo

para a iteraccedilatildeo Este procedimento pode ser repetido iterativamente ateacute que os

pontos q1 e q2 convirjam ao ponto q na curva de interseccedilatildeo Normalmente este

processo requer menos de trecircs iteraccedilotildees

Operaccedilotildees Booleanas com Pontos 43

(a) (b)

(c)

Figura 14 (a) Suponhamos a reta que eacute a interseccedilatildeo do plano tangente a S1 em q1 e o

plano tangente a S2 em q2 O ponto r eacute o ponto desta reta que estaacute mais proacuteximo a q1 e

q2 (b) r eacute projetado sobre S1 e S2 obtendo-se q1acute e q2acute dois novos pontos de partida

para nova iteraccedilatildeo (c) A nova iteraccedilatildeo gera r que eacute uma aproximaccedilatildeo melhor de q

Pauly faz o tratamento de arestas vivas em tempo de renderizaccedilatildeo Ele

faz uma alteraccedilatildeo no renderizador Marca os surfels de interseccedilatildeo e ao

renderizaacute-los satildeo cortados para gerar uma aresta viva

44 Validade da Regra 2

Os dois meacutetodos analisados nesta dissertaccedilatildeo utilizam a seguinte regra

para a classificaccedilatildeo de um surfel

Regra 2 dado um volume V determinado por uma superfiacutecie de contorno

S uma amostragem P da superfiacutecie S um ponto x qualquer um ponto p є P que

eacute a amostra mais proacutexima a x um vetor ny normal a S em p e orientado para

fora de S temos que (x ndash p) np gt 0 x notinV

Em [16] eacute colocado que esta regra eacute tirada da seguinte propriedade da

geometria diferencial (aqui chamada Propriedade 1)

Propriedade 1 Dado um volume V determinado por uma superfiacutecie de

contorno S contiacutenua e duplamente diferenciaacutevel um ponto x qualquer um ponto

Operaccedilotildees Booleanas com Pontos 44

y є S que eacute o ponto de S mais proacuteximo a x um vetor ny normal a S em y e

orientado para fora de S temos que (x ndash y) ny gt 0 x notinV

A Figura 15 ilustra esta propriedade

Figura 15 Para verificar se o ponto x estaacute fora de um contorno C encontra-se o ponto y

de C Se o produto interno entre a normal em y e o vetor que liga y a x for maior que

zero entatildeo x estaacute fora de C senatildeo estaacute dentro de C

Pauly assume que tendo uma amostragem P da superfiacutecie S podemos

usar a Propriedade 1 substituindo y por p o surfel mais proacuteximo ao ponto x (x ndash

p) np gt 0 x notinV (Regra 2) Esta amostragem P em seu trabalho eacute

(aproximadamente) uma ldquoamostragem adequadardquo Tambeacutem seu tratamento de

interseccedilatildeo cria uma aproximaccedilatildeo dela (seccedilatildeo 43) Empiricamente a

ldquodiscretizaccedilatildeo da propriedaderdquo eacute vaacutelida a partir desta suposiccedilatildeo Mas isso natildeo foi

demonstrado teoricamente em seu trabalho

Pauly coloca em [16] que natildeo existe ainda uma teoria matemaacutetica rigorosa

de amostragem anaacuteloga a teoria de Fourier para superfiacutecies discretas

A melhor aproximaccedilatildeo teoacuterica para esta aacuterea eacute o uso do Eixo Medial que

foi colocado em [10] Vamos descrever este trabalho brevemente nesta seccedilatildeo

Este trabalho apresenta um algoritmo de reconstruccedilatildeo de superfiacutecie que parte de

uma amostragem adequada (abaixo definida) de pontos e obteacutem uma malha

que eacute topologicamente equivalente agrave superfiacutecie do objeto e agrave medida que a

densidade da amostragem cresce a saiacuteda converge para esta superfiacutecie

Para definir amostragem adequada o trabalho parte do conceito de Eixo

Medial

Operaccedilotildees Booleanas com Pontos 45

ldquoEixo Medialrdquo de uma superfiacutecie 2D posicionada no R3 eacute o conjunto

(fechado) de pontos pi para os quais buscando-se o ponto da superfiacutecie que

estaacute mais proacuteximo a pi mais de um ponto pertencentes a esta superfiacutecie satildeo

encontrados A Figura 16 abaixo ilustra o Eixo Medial em 2D

Figura 16 [10] As curvas de cor mais clara satildeo o Eixo Medial da curva em preto

Em duas dimensotildees os veacutertices de Voronoi de uma amostragem densa

aproximam o ldquoEixo Medialrdquo da amostragem (mas esta propriedade natildeo se

estende a 3D) A Figura 17 mostra o Eixo Medial em 3D

Figura 17 [10] Em 3D geralmente o Eixo Medial eacute uma superfiacutecie 2D (em cor mais

clara) Aqui o quadrado eacute o Eixo Medial da superfiacutecie transparente que o contorna

Podemos definir agora a amostragem adequada da seguinte forma

Supondo uma superfiacutecie suave que quer dizer uma 2-manifold duplamente

diferenciaacutevel posicionada no R3 uma ldquoamostragem adequadardquo desta superfiacutecie eacute

aquela na qual a densidade da amostragem eacute (pelo menos) inversamente

proporcional agrave distacircncia ao ldquoEixo Medialrdquo A Figura 18 mostra uma amostragem

adequada

Operaccedilotildees Booleanas com Pontos 46

Figura 18 [10] A figura mostra o diagrama de Voronoi de uma amostragem de pontos S

Da mesma forma que o a amostragem aproxima a curva os veacutertices de Voronoi

aproximam o Eixo Medial

Na praacutetica na reconstruccedilatildeo da superfiacutecie uma aproximaccedilatildeo deste ldquoEixo

Medialrdquo eacute computada (devido agrave dificuldade de computaacute-lo exatamente e em

alguns casos ateacute impossibilidade)

Melhorias Propostas 47

5 Melhorias Propostas

No capiacutetulo 4 apresentamos dois meacutetodos que realizam operaccedilotildees

booleanas em modelos por pontos o meacutetodo de Adams e Dutreacute [2] e o meacutetodo

de Pauly[3] Para esta dissertaccedilatildeo usamos o meacutetodo de Adams e Dutreacute [2] e

propomos as seguintes melhorias

- Alteramos o momento em que eacute feita a classificaccedilatildeo da octree Fazemos

esta classificaccedilatildeo durante a sua criaccedilatildeo Os noacutes filhos de um noacute pai P qualquer

satildeo classificados logo apoacutes a criaccedilatildeo de todos estes filhos de P

independentemente do restante da octree ter sido criada Isso pode ser feito

porque a octree eacute construiacuteda na ordem raiz-esquerda-direita (preorder

traversal) e portanto apoacutes todos os filhos de um noacute pai serem criados a parte

necessaacuteria da octree para a classificaccedilatildeo destes filhos jaacute estaacute criada

- A classificaccedilatildeo da octree eacute otimizada classificando-se os cantos dos seus

noacutes como dentro ou fora do modelo Na classificaccedilatildeo de um noacute n1 a partir de seu

vizinho n2 se os cantos que satildeo comuns a n1 e n2 tiverem a mesma

classificaccedilatildeo esta seraacute dada ao noacute Assim diminuiacutemos o nuacutemero de pesquisas

pelo surfel mais proacuteximo que eacute a parte criacutetica da classificaccedilatildeo dos noacutes da octree

em termos de tempo de processamento

- Acrescentamos um valor miacutenimo (maior que zero) para o nuacutemero de

surfels contidos em um noacute que eacute uma das condiccedilotildees de parada na criaccedilatildeo da

octree Verificamos que desta forma diminui-se a chance de erro na classificaccedilatildeo

de partes criacuteticas como ldquoarestas vivasrdquo

Uma comparaccedilatildeo entre a nossa implementaccedilatildeo e a de Pauly tambeacutem seraacute

feita no capiacutetulo 6

51 Descriccedilatildeo do algoritmo

O algoritmo implementado para esta dissertaccedilatildeo baseado no meacutetodo de

Adams e Dutreacute [2] pode ser dividido nas seguintes partes Criaccedilatildeo e

classificaccedilatildeo de uma octree para cada modelo Teste DentroFora Criaccedilatildeo do

modelo resultado Natildeo foi implementado tratamento especial algum de

interseccedilatildeo para o nosso plugin As proacuteximas seccedilotildees apresentam estas partes

Melhorias Propostas 48

511 Criaccedilatildeo e classificaccedilatildeo de uma octree para cada modelo

As ideacuteias do algoritmo satildeo aqui ilustradas em 2D mas a extensatildeo delas

para 3D eacute feita facilmente

Para cada modelo a octree eacute criada e classificada da seguinte forma

Figura 19-Quadtree classificada Os noacutes mais escuros estatildeo fora do modelo os mais claros dentro e os em tom intermediaacuterio satildeo noacutes de contorno

Gera-se uma ldquocaixa envolventerdquo do modelo contendo todos os surfels e

cria-se o noacute raiz da octree que corresponde a esta ldquocaixa envolventerdquo Este noacute

raiz eacute subdividido em oito filhos e seus surfels satildeo distribuiacutedos entre eles Ao

inveacutes de testarmos os valores de xy e z para cada surfel a fim de determinar

para qual filho ele iraacute utilizamos listas auxiliares Primeiro os surfels satildeo

subdivididos em dois grupos pelos valores de x e armazenados em uma lista

auxiliar Em seguida cada uma das listas eacute subdividida pelo valor de y e as

quatro listas obtidas seratildeo subdivididas pelo valor de z Ao final teremos 8 listas

de surfels cada uma delas pertencente a um filho

Cada noacute seraacute entatildeo novamente subdividido enquanto contiver um nuacutemero

de surfels gt nmin (valor preacute-definido) ou enquanto a profundidade da aacutervore lt pmax

(valor preacute-definido) Na figura 19 pmax = 3 e nmin = 3

Melhorias Propostas 49

Figura 20-O noacute cheio eacute dividido em trecircs partes agrave esquerda a regiatildeo estaacute dentro do modelo agrave direita estaacute fora e entre as duas linhas que dividem o noacute estaacute a regiatildeo que conteacutem os surfels

Os noacutes cheios recebem um tratamento especial Eles satildeo subdivididos em

trecircs partes da seguinte forma uma que estaacute fora do modelo outra que estaacute

dentro e uma que conteacutem os surfels Esta subdivisatildeo eacute feita por meio da criaccedilatildeo

de dois planos paralelos que dividem o noacute Para determinar estes planos

calcula-se o vetor nm igual agrave meacutedia das normais dos surfels do noacute nm = sum ns

sum ns onde ns eacute a normal de cada surfel do noacute Em seguida encontra-se o

surfel com maior produto interno entre a sua normal e a normal meacutedia

d1=Max(nm ٠ ns) Este surfel juntamente com a normal meacutedia define um dos

planos Encontra-se tambeacutem o surfel com menor produto interno entre a sua

normal e a normal meacutedia d2=Min (nm ٠ ns) Este surfel juntamente com a normal

meacutedia define o outro plano (Figura 20) Se o noacute conteacutem surfels de superfiacutecies de

orientaccedilotildees diferentes ele natildeo seraacute subdividido ou seja os planos coincidiratildeo

com os planos que delimitam o proacuteprio noacute Este teste foi implementado da

seguinte forma escolhe-se um surfel qualquer do noacute Calcula-se o produto

interno entre a normal deste surfel e as outras normais dos outros surfels deste

noacute Se algum produto interno for menor que zero este noacute natildeo seraacute subdividido

Apoacutes a etapa de subdivisatildeo classificam-se os oito cantos deste noacute como

dentro ou fora do modelo por meio da classificaccedilatildeo de um ponto que

descreveremos na sub-seccedilatildeo 5111

Melhorias Propostas 50

a b

c d

Figura 21-O noacute a eacute classificado pelo noacute c o noacute d tambeacutem eacute classificado pelo noacute c a classificaccedilatildeo do noacute a eacute propagada para o noacute b

Jaacute os noacutes vazios da octree seratildeo classificados como ldquodentrordquo ou ldquoforardquo do

modelo da seguinte forma cada noacute folha vazio eacute classificado a partir de um de

seus irmatildeos vizinhos adjacentes Se ele possuir um vizinho adjacente cheio ele

seraacute classificado por este vizinho se natildeo possuir os vizinhos adjacentes seratildeo

classificados primeiro e ele teraacute esta mesma classificaccedilatildeo (Figura 21) Como tem

que existir sempre pelo menos um noacute cheio entre os filhos de um noacute pai entatildeo

sempre esta classificaccedilatildeo poderaacute ser feita Com a classificaccedilatildeo de todos os

filhos tem-se tambeacutem a classificaccedilatildeo dos cantos do noacute pai

Mf03c003fmx a b

Figura 22-Os cantos a e b do noacute cheio possuem a mesma classificaccedilatildeo fora do modelo Esta classificaccedilatildeo foi dada ao noacute vazio adjacente

Melhorias Propostas 51

Para classificar um noacute vazio por meio de um noacute cheio verificam-se os

cantos comuns destes dois noacutes se todos os cantos tiverem a mesma

classificaccedilatildeo esta seraacute dada ao noacute vazio (Figura 22) Se houver classificaccedilotildees

diferentes escolhe-se o surfel do noacute cheio mais proacuteximo ao noacute vazio faz-se o

produto interno entre a normal deste surfel e o vetor que liga o centro do noacute

cheio ao centro do noacute vazio (ou o vetor que liga o surfel ao centro do noacute vazio)

Se o produto interno for maior que zero o noacute eacute classificado como ldquoforardquo senatildeo eacute

classificado como ldquodentrordquo Para encontrar o surfel (pertencente a um noacute cheio)

mais proacuteximo ao noacute vazio existem dois casos

- O noacute cheio eacute folha percorre-se toda a lista de surfels e escolhe o surfel

mais proacuteximo da fronteira entre o noacute cheio e o vazio

- O noacute cheio natildeo eacute um noacute folha percorrem-se os filhos do noacute cheio ou seja

esta pesquisa eacute feita descendo na octree a partir do noacute cheio procurando o

surfel mais proacuteximo agrave fronteira do pai com o noacute vazio a ser classificado

Classificando o centro do noacute vazio todo o noacute deve ter a mesma

classificaccedilatildeo pois este noacute natildeo conteacutem surfels Para encontrar o surfel do noacute

vazio mais proacuteximo da fronteira entre o noacute cheio e o vazio basta testar o valor da

coordenada se a fronteira eacute o lado direito do noacute cheio escolhe-se o surfel com

maior coordenada lsquoxrsquo se eacute o lado esquerdo escolhe-se o surfel com menor lsquoxrsquo

se lado superior surfel com maior lsquoyrsquo etc A seguir apresentamos a classificaccedilatildeo

de um ponto qualquer pertencente a um noacute cheio

Figura 23- Quadtree classificada

Melhorias Propostas 52

5111 Classificaccedilatildeo de um ponto de um noacute cheio

Figura 24 [2] A normal n eacute a normal meacutedia e os surfels s1 e s2 juntamente com a normal

n definem as retas que dividem o noacute O ponto a estaacute fora do modelo e o ponto b estaacute

dentro do modelo

Para um ponto localizado dentro do noacute faz-se o seguinte teste se o noacute foi

dividido testa-se de acordo com a divisatildeo do noacute se o ponto estaacute na parte do noacute

que estaacute dentro do modelo ele eacute classificado como ldquodentrordquo se o ponto estaacute na

parte que estaacute fora do modelo ele eacute classificado como ldquoforardquo (Figura 24) se o

ponto estaacute na parte que conteacutem os surfels encontra-se o surfel s pertencente ao

noacute mais proacuteximo do ponto e o classifica de acordo com s seja ns a normal em s

cs a coordenada de s cp a coordenada do ponto Se (cp - cs )٠ ns gt 0 o ponto

seraacute classificado como ldquoforardquo Senatildeo seraacute classificado como ldquodentrordquo

Se o noacute natildeo foi dividido em planos esta classificaccedilatildeo a partir do surfel

mais proacuteximo seraacute sempre feita

512 Teste DentroFora

Melhorias Propostas 53

Figura 25-Duas circunferecircncias e suas quadtrees correspondentes

O Teste DentroFora classifica os surfels de um modelo como dentro ou

fora de outro modelo ou na sua interseccedilatildeo Este teste foi aqui implementado

exatamente como foi proposto em Adams e Dutreacute [2] exceto que natildeo foi

implementado o meacutetodo TINN - Triangle Inequality Nearest Neighbour [19]

Cada octree eacute percorrida verificando-se se os seus noacutes ou surfels estatildeo dentro

fora ou no contorno do outro modelo (Figura 25) Sejam A e B duas octrees e

queremos classificar a octree A As duas octrees (AB) satildeo percorridas partindo

da raiz

Para cada noacute de A existem quatro casos (Figura 26) Para testar estas

situaccedilotildees os boxes dos noacutes satildeo aumentados de rmax o raio do maior surfel do

modelo Isto eacute feito para compensar o fato de que o surfel natildeo eacute apenas um

ponto mas sim considerado como um disco

Os quatro casos satildeo

Se o noacute de A natildeo intersecta B entatildeo todos os surfels deste noacute satildeo

classificados como fora

Se o noacute de A intersecta apenas noacutes de B que estatildeo fora do modelo

todos os surfels deste noacute satildeo fora

Se o noacute de A intersecta apenas noacutes de B que estatildeo dentro do modelo

todos os surfels deste noacute satildeo dentro

Melhorias Propostas 54

Se o noacute de A intersecta noacutes de B que estatildeo dentro e tambeacutem noacutes de B

que estatildeo fora testa-se se este noacute de A eacute ou natildeo folha Se natildeo for folha

percorre-se os filhos deste noacute de A ateacute encontrar um noacute folha cheio que

intersecta B Para cada surfel sa deste noacute folha de A encontra-se o surfel de B

mais proacuteximo e classifica-se a coordenada de sa da forma apresentada na seccedilatildeo

5111 Seja sb o surfel usado na classificaccedilatildeo de sa Se os discos de sb e sa

se intersectam sa eacute classificado como ldquointerseccedilatildeordquo

(a) (b)

(c) (d)

Figura 26- a modelos natildeo se intersectam b modelo intersecta noacutes fora c modelo intersecta apenas noacutes dentro d modelo intersecta noacutes dentro e noacutes fora

513 Criaccedilatildeo do modelo resultado

Um novo modelo eacute criado com os seguintes surfels (de acordo com a

operaccedilatildeo booleana escolhida pelo usuaacuterio - veja Regra 1 da seccedilatildeo 41)

Uniatildeo - surfels de A que estatildeo fora de B + surfels de B que estatildeo fora de A

Melhorias Propostas 55

Interseccedilatildeo - surfels de A que estatildeo dentro de B + surfels de B que estatildeo

dentro de A

Diferenccedila A-B - surfels de A que estatildeo fora de B + surfels de B que estatildeo

dentro de A (com orientaccedilatildeo invertida)

Como natildeo foi implementado tratamento especial algum de interseccedilatildeo para

o nosso plugin os surfels que se intersectam satildeo mantidos no modelo resultado

final sem modificaccedilotildees

Descrito o algoritmo vejamos a seguir a sua implementaccedilatildeo

52 Implementaccedilatildeo

Este algoritmo foi implementado na forma de um plugin para o software

PointShop 3D [11] Este plugin foi desenvolvido na linguagem C e no sistema

operacional Windows

A escolha deste tipo de implementaccedilatildeo permitiu-nos usar o software

PointShop para os testes do algoritmo Estes testes foram feitos com os modelos

disponibilizados para o PointShop [11] Nesta seccedilatildeo apresentaremos o software

PointShop e as principais estruturas de dados usadas em nosso plugin

O Pointshop eacute um software aberto com seu coacutedigo disponiacutevel e preparado

para trabalhar com plugins Eacute um software de ediccedilatildeo de modelos 3D por pontos

Ele permite aleacutem de visualizar o modelo alterar as suas caracteriacutesticas como

cor brilho e fazer mapeamento de textura iluminaccedilatildeo filtragem (Figura 27)

Melhorias Propostas 56

Figura 27-Software PointShop 3D com dois modelos carregados na sua cena

Aleacutem disso pode-se criar uma cena com vaacuterios modelos e visualizaacute-los de

qualquer ponto de vista Implementa o virtual trackball para rotacionaacute-los e

transladaacute-los Usa uma iluminaccedilatildeo simples direcional A sua arquitetura eacute

extensiacutevel permite que o usuaacuterio adicione seus proacuteprios componentes ao

sistema Possui trecircs tipos de componentes

ldquoToolsrdquo fornece funcionalidades para ediccedilatildeo interativa de superfiacutecie Satildeo

disponibilizados na ldquotoolbarrdquo

Plugins fornece funcionalidades para processar em um soacute passo

modelos ou partes deles selecionadas Satildeo disponibilizados no menu ldquoPluginsrdquo

Renderes fornece funcionalidades de display para os modelos

Para esta dissertaccedilatildeo foi escolhida a construccedilatildeo do componente Plugin

por adequar-se agrave nossa proposta e ser a mais simples de ser construiacuteda O

PointShop [11] jaacute conteacutem uma tool que executa operaccedilotildees booleanas e

deformaccedilatildeo free-form sobre os modelos carregados na cena usando o meacutetodo

de Pauly [3] apresentado no capiacutetulo 4 O nosso plugin Operaccedilotildees Booleanas

implementa o algoritmo descrito na seccedilatildeo anterior baseado na proposta de

Melhorias Propostas 57

Adams e Dutreacute [2] Uma comparaccedilatildeo entre o nosso plugin e a tool de Pauly [3] eacute

feita no capiacutetulo 6

Figura 28-Menu do PointShop com o plugin e as opccedilotildees para operaccedilotildees booleanas

Para se executar o plugin o usuaacuterio precisa carregar dois modelos na

cena do PointShop acionar o plugin informando a operaccedilatildeo que seraacute executada

O plugin executaraacute o algoritmo acima proposto e carregaraacute o resultado na cena

do Pointshop retirando os modelos anteriores

521 Estruturas de Dados

Como vimos o software PointShop [11] trabalha com modelos por pontos

Um modelo deste software descrito na seccedilatildeo 42 conteacutem todas as informaccedilotildees

que o algoritmo proposto em Bart [2] necessita Abaixo relacionamos as

Melhorias Propostas 58

principais estruturas de dados do PointShop usadas no plugin e as principais

estruturas de dados do nosso plugin

As principais classes do PointShop usadas no plugin satildeo

Classe Scene

Classe Objects

Classe SurfelColections

Classe Surfel

Classe StatusBar

Classe Transformer

A hierarquia de dados eacute a seguinte a Scene conteacutem vaacuterios Objects os

quais conteacutem SurfelColections Cada SurfelColections conteacutem Surfels que

suportam uma ou mais propriedades tais como cor difusa cor especular

Classe Scene Classe que representa uma cena que conteacutem modelos

Classe Object Um modelo eacute representado pela classe Object que

conteacutem uma SurfelCollection e as matrizes de transformaccedilatildeo para rotaccedilatildeo

escala e translaccedilatildeo Cada Object eacute identificado pelo seu nome que eacute uacutenico na

Scene O meacutetodo getUniqueName retorna um nome uacutenico Cada Object tem sua

proacutepria matriz de transformaccedilatildeo que pode ser modificada com setRotation

rotate setPosition translate setScale e scale Objects podem ser copiados com

copy Objects consiste em um conjunto de surfels os quais podem ser

recuperados pela getSurfelCollection O Object pode ser ativado com

setActiveObject e recuperado com getActiveObject

Objects podem ser adicionados ou removidos com addObject e

removeObject Os Objects podem ser obtidos pela getFirstObject e

getNextObject

Classe SurfelCollection representa o conjunto de surfels de um modelo

Cada surfelcollection consiste em um conjunto de surfels (SurfelInterface) de

tamanho obtido por getNofSurfels Os surfels podem ser recuperados com

getFirstSurfel getCurrentSurfel e getNextSurfel

A SurfelCollection conteacutem um PropertyDescriptor e uma SurfelList

A SurfelList eacute uma lista duplamente encadeada de surfels Possui os

atributos firstSurfel lastSurfel currentSurfel que satildeo ponteiros para uma

SurfelInterface nSurfels que eacute o nuacutemero de Surfels

A SurfelInterface define a API para os surfels que satildeo os menores

elementos que compotildeem um Object Podem ser considerados como pontos com

uma normal que define a orientaccedilatildeo do ciacuterculo (ou elipse) que seraacute desenhado

Melhorias Propostas 59

tatildeo logo o surfel seja renderizado Tem como atributos dois ponteiros (next e

prev) para SurfelInterface

PropertyDescriptor consiste em ateacute 32 valores descrevendo quais as

propriedades a SurfelInterface suporta

Classe Surfel classe que representa o surfel

Classe StatusBar classe que imprime mensagens na tela Os plugins

podem mandar mensagens para o usuaacuterio pela StatusBar

Mensagens texto podem ser impressas com showMessage O progresso

de uma operaccedilatildeo pode ser indicado com setProgress ou resetProgress

Classe Transformer representa a transformaccedilatildeo entre sistemas de

coordenadas Esta classe fornece meacutetodos para transformar pontos e vetores

entre os diferentes sistemas de coordenadas do Pointshop

A seguir apresentamos as principais estruturas de dados do plugin

Operaccedilotildees Booleanas

As principais estruturas de dados do plugin satildeo boundingbox tree no

lista_surfel surfel

Boundingbox conteacutem dois pontos 3D que definem uma caixa que conteacutem

o modelo um ponto com menores coordenadas xy e z e outro ponto com

maiores xyz

Tree representa a octree do modelo Cada registro conteacutem um ponteiro

para um noacute e oito ponteiros para as 8 octrees filhas

No representa um noacute da octree Conteacutem os seguintes dados

- localizaccedilatildeo do noacute que eacute o canto inferior esquerdo do noacute

- lista_surfel (preenchida apenas para noacutes folha cheios)

- quantidade de surfels do noacute

- classificaccedilatildeo do noacute como dentro fora ou contorno

- classificaccedilatildeo do noacute em relaccedilatildeo a outro modelo

- indica se o noacute eacute folha ou natildeo

- vetor que eacute a meacutedia das normais dos surfels do noacute

- ponto que eacute a meacutedia das localizaccedilotildees dos surfels do noacute

- surfel que tem (entre todos os surfels do noacute) o maior produto interno

entre a sua normal e a normal meacutedia

- surfel que tem (entre todos os surfels do noacute) o menor produto interno

entre a sua normal e a normal meacutedia

- produto interno maacuteximo e miacutenimo entre as normais dos surfels do noacute e a

normal meacutedia deste noacute

Melhorias Propostas 60

- indica se o noacute conteacutem surfels com normais em sentido oposto (produto

interno entre elas eacute menor que zero)

- classificaccedilatildeo dos oito cantos do noacute

lista_surfels lista em que cada registro conteacutem um apontador para um

surfel e um apontador para o proacuteximo registro

surfel representa o surfel da octree Conteacutem a classificaccedilatildeo em relaccedilatildeo a

outro modelo e um ponteiro para o surfel do Poinshop

Resultados 61

6 Resultados

Neste capiacutetulo apresentamos os testes realizados com o plugin para o

PointShop implementado para esta dissertaccedilatildeo a comparaccedilatildeo deste plugin com

o plugin de Pauly [3] e a comparaccedilatildeo entre o meacutetodo de Adams e Dutreacute [2] e o

meacutetodo de Pauly [3]

61 Testes

Os testes foram feitos em um PC x86 Family 6 261600 KB de RAM sem

placa graacutefica sistema operacional Windows 2000 O plugin foi implementado na

linguagem C

Os modelos usados para os testes satildeo modelos disponibilizados no

PointShop [11] Vale lembrar que o meacutetodo implementado em nosso plugin eacute

restrito a modelos soacutelidos e portanto foram usados apenas estes modelos

soacutelidos para os testes

O modelo na Figura 29 que eacute um dos modelos disponibilizados no

PointShop [11] foi usado para mostrar o resultado das operaccedilotildees realizadas

pelo plugin implementado nesta dissertaccedilatildeo O modelo Igea eacute um modelo soacutelido

que conteacutem 134345 surfels

Resultados 62

Figura 29-Modelo do PointShop Igea

Para realizar as operaccedilotildees este modelo foi carregado na cena do

PointShop duas vezes e um deles colorido de vermelho As Figuras 30 31 32

mostram o resultado da operaccedilatildeo de uniatildeo interseccedilatildeo e diferenccedila

respectivamente Os nuacutemeros de surfels dos modelos resultantes satildeo mostrados

na Tabela 2

Resultados 63

Figura 30-Resultado da uniatildeo de duas Igeas

Figura 31-Resultado da interseccedilatildeo de duas Igeas

Resultados 64

Figura 32-Resultado da diferenccedila entre duas Igeas

Tabela 2-Nuacutemero de surfels dos modelos resultantes

Observamos que o nuacutemero de surfels dos modelos resultantes estaacute

coerente com as figuras dos seus modelos

Para avaliar o tempo de processamento das operaccedilotildees foram realizados

vaacuterios testes com o objetivo de obter uma meacutedia dos tempos de realizaccedilatildeo de

cada operaccedilatildeo Tambeacutem foram armazenados os tempos da criaccedilatildeo das duas

octrees e da classificaccedilatildeo de todos os surfels dos dois objetos (como dentro ou

fora do outro modelo) Estes testes foram feitos usando o modelo Igea A meacutedia

dos tempos de processamento foi calculada e os resultados satildeo mostrados na

Tabela 3 Verificamos que o maior tempo gasto eacute para criaccedilatildeo das octrees

Verificamos tambeacutem que este resultado apresentado eacute similar ao resultado

verificado empiricamente com o plugin de Pauly [3] Os tempos gastos para

realizar as operaccedilotildees satildeo similares e o maior tempo gasto no plugin de Pauly

tambeacutem eacute para inicializaccedilatildeo de suas estruturas de dados que incluem a kd-tree

Operaccedilatildeo Nuacutemero de surfels do modelo resultado

Uniatildeo 189715

Interseccedilatildeo 72225

Diferenccedila 134552

Resultados 65

Operaccedilatildeo Criaccedilatildeo das

Octrees (seg)

Classificaccedilatildeo

(seg)

Criaccedilatildeo do

resultado (seg)

Total (seg)

Uniatildeo 39375 1324 18925 7154

Interseccedilatildeo 38585 1585 09547 63982

Diferenccedila 399875 1504 1729 729475

Tabela 3- Meacutedia dos tempos de processamento para as operaccedilotildees com duas Igeas

Com o objetivo de expor melhor os resultados deste trabalho

apresentamos abaixo mais um teste das operaccedilotildees booleanas usando o nosso

plugin Os modelos usados para este segundo teste satildeo o Max Planck e o Male

ambos modelos soacutelidos disponibilizados no PointShop Estes modelos satildeo

mostrados nas figura 33 e 34

O primeiro Max Planck conteacutem 52809 surfels

Figura 33-Modelo do PointShop MaxPlanck

O segundo modelo abaixo Male conteacutem 148138 surfels

Resultados 66

Figura 34-Modelo do PointShop Male

As Figuras 353637 mostram o resultado da operaccedilatildeo de uniatildeo interseccedilatildeo

e diferenccedila respectivamente usando os dois modelos acima Podemos observar

pela figura 35 que o resultado da operaccedilatildeo de diferenccedila neste caso gerou um

modelo resultado com trecircs partes desconexas Os nuacutemeros de surfels de cada

modelo resultado satildeo mostrados na Tabela 5

Figura 35- Resultado da Uniatildeo do modelo Male com MaxPlanck

Resultados 67

Figura 36-Resultado da interseccedilatildeo do modelo Male com o MaxPlanck

Figura 37-Resultado da diferenccedila do modelo Male do modelo MaxPlanck

As meacutedias de tempos de processamento foram calculadas da mesma

forma que o primeiro teste com o modelo Igea acima apresentado Os

resultados satildeo mostrados na Tabela 4 Podemos observar que este teste

Resultados 68

apresenta tempos um pouco menores que o teste com o modelo Igea Isto se

deve ao fato de que o modelo MaxPlanck ser significativamente menor que o

modelo Igea MaxPlanck possui 52809 surfels e Igea conteacutem 134345 surfels

Operaccedilatildeo Criaccedilatildeo das

Octrees (seg)

Classificaccedilatildeo

(seg)

Criaccedilatildeo do

resultado (seg)

Total

(seg)

Uniatildeo 3012 1254 102 5285

Interseccedilatildeo 2985 0901 0861 4747

Diferenccedila 2965 0911 0791 4667

Tabela 4-Tempo de processamento das operaccedilotildees com os modelos MaxPlanck e Male

Operaccedilatildeo Nuacutemero de surfels do resultado

Uniatildeo 126532

Interseccedilatildeo 88414

Diferenccedila 77635

Tabela 5-Nuacutemero de surfels dos modelos resultados das operaccedilotildees com os modelos MaxPlanck e Male

Em seguida apresentaremos uma comparaccedilatildeo entre o nosso plugin e o

plugin de Pauly[3] e tambeacutem uma comparaccedilatildeo entre o meacutetodo de Adams e Dutreacute

[2] e o meacutetodo de Pauly [3]

62 Comparaccedilatildeo entre os dois meacutetodos que realizam operaccedilotildees booleanas

A comparaccedilatildeo entre os meacutetodos de Pauly[3] e de Adams e Dutreacute foi feita

em termos de tempo de processamento e em termos conceituais Em termos de

tempo de processamento comparamos o plugin de Pauly[3] com o nosso plugin

Em termos de tempo de processamento verifica-se empiricamente que os

dois meacutetodos apresentam tempos bastante similares Entretanto o tempo de

processamento do algoritmo aqui implementado ainda pode ser melhorado com

Resultados 69

o uso do meacutetodo TINN [19] que foi proposto em Adams[2] - para otimizar a

pesquisa do surfel mais proacuteximo a um ponto que estaacute localizado na regiatildeo de um

noacute que conteacutem surfels - veja seccedilatildeo 42 O uso deste meacutetodo natildeo foi

implementado para este trabalho e a sua implementaccedilatildeo melhoraria o tempo de

resposta do algoritmo Aleacutem disso o trabalho de Sara F Frisken [12] citado no

capiacutetulo 2 apresenta uma otimizaccedilatildeo no uso de octrees que pode ser

incorporada no algoritmo implementado neste trabalho

Em termos conceituais vamos fazer a comparaccedilatildeo do uso do que

chamamos aqui de Regra 2 do tratamento de interseccedilatildeo e do tratamento de

ldquoarestas vivasrdquo

Como vimos na seccedilatildeo 41 tanto o algoritmo implementado nesta

dissertaccedilatildeo baseado no trabalho de Adams e Dutreacute como o meacutetodo de Pauly

[3] parte do que chamamos aqui de Regra 2 para realizar operaccedilotildees booleanas

com pontos Mas cada um destes meacutetodos daacute um tratamento diferente para o

uso desta regra

O meacutetodo de Pauly usa a Regra 2 para classificaccedilatildeo de cada ponto ou de

cada surfel Para classificar um surfel de B sb como dentro ou fora de A eacute

encontrado o surfel de A sa mais proacuteximo a sb e sb eacute classificado a partir de sa

Para encontrar sa Pauly utiliza uma kd-tree Como esta pesquisa para encontrar

sa eacute cara (mesmo usando uma kd-tree) Pauly utiliza uma esfera que conteacutem

pontos com a mesma classificaccedilatildeo (seccedilatildeo 432) e diminui em 90 este nuacutemero

de pesquisas Pauly utiliza tambeacutem a representaccedilatildeo impliacutecita MLS (Moving Least

Squares) para casos em que a Regra 2 poderia falhar e para tratamento de

interseccedilotildees Entretanto o nuacutemero destes casos em que a Regra 2 poderia falhar

eacute muito pequeno E a representaccedilatildeo MLS natildeo eacute uma estrutura simples de ser

implementada Portanto natildeo encontramos vantagens em usar MLS para estes

casos O meacutetodo de Adams e Dutreacute natildeo trata estes casos e na praacutetica

apresenta resultados bastante satisfatoacuterios como foi mostrado Portanto

consideramos que valeria a pena fazer algum tratamento especial para estes

casos se fosse um procedimento simples Para a execuccedilatildeo do algoritmo de

Pauly o uso de MLS natildeo interfere significativamente porque a construccedilatildeo desta

representaccedilatildeo natildeo eacute feita somente para realizar operaccedilotildees booleanas Os testes

empiacutericos que fizemos com o algoritmo de Pauly natildeo incluem a construccedilatildeo desta

representaccedilatildeo

Aparentemente os dois algoritmos satildeo bastante parecidos um usa octrees

e o outro usa kd-tree As duas estruturas de dados satildeo simples e otimizam a

classificaccedilatildeo dos surfels de um modelo como dentro ou fora do outro modelo

Resultados 70

Mas existe uma diferenccedila conceitual entre dois que merece ser destacada O

algoritmo aqui implementado usa a Regra 2 para classificaccedilatildeo dos noacutes de uma

octree e armazena esta octree classificada (ver capiacutetulo 5) Assim na maioria dos

casos natildeo seraacute necessaacuterio encontrar o surfel mais proacuteximo para classificar um

ponto (ou um surfel) como fora ou dentro de um modelo Caso o ponto esteja em

uma aacuterea da octree classificada ele teraacute a classificaccedilatildeo dada agravequela aacuterea A

pesquisa ao surfel mais proacuteximo seraacute feita apenas nos casos em que o ponto a

ser classificado estaacute localizado entre os planos que subdividem um noacute cheio

O uso desta octree classificada levanta uma questatildeo que natildeo foi citada no

trabalho de Adams e Dutreacute que eacute a proximidade desta estrutura (armazenada)

de octree classificada com uma representaccedilatildeo volumeacutetrica do objeto Sendo

assim esta estrutura pode ser aproveitada para outras funccedilotildees aleacutem da

classificaccedilatildeo dos surfels Por exemplo podemos ter uma aproximaccedilatildeo do

volume de uma cena somando os volumes aproximados dos modelos que a

compotildeem Como o enfoque deste trabalho eacute operaccedilatildeo booleana natildeo vamos nos

aprofundar nesta questatildeo

Outra importante diferenccedila entre os dois trabalhos que jaacute foi explicada na

seccedilatildeo 432 eacute que o meacutetodo de Pauly aplica-se a modelos soacutelidos ou natildeo

soacutelidos enquanto que o meacutetodo de Adams e Dutreacute aplica-se somente a modelos

soacutelidos

Quanto ao tratamento de interseccedilatildeo em termos de visualizaccedilatildeo todos os

dois resolvem bem o problema O tratamento de interseccedilatildeo nos dois trabalhos

tambeacutem resolve o problema da validade da Regra 2 (ver seccedilatildeo 44) Entretanto

o tratamento de Adams e Dutreacute natildeo depende da renderizaccedilatildeo sendo portanto

mais portaacutevel Aleacutem disso uma desvantagem do meacutetodo de Pauly eacute o uso da

representaccedilatildeo impliacutecita MLS (ldquoMoving Least Squaresrdquo) do objeto para obter os

pontos exatamente na curva de interseccedilatildeo Esta representaccedilatildeo torna o

tratamento de interseccedilatildeo mais complexo e a vantagem apresentada natildeo eacute tatildeo

significativa para este tratamento de interseccedilatildeo

Conclusatildeo 71

7 Conclusatildeo

Concluiacutemos entatildeo que as escolhas de Adams e Dutreacute por usar uma

octree classificada e pelo tratamento dado agrave interseccedilatildeo satildeo mais abrangentes

que a escolha de Pauly E consideramos que quanto mais abrangente for uma

escolha conceitual mais resultados poderemos tirar dela No caso de Adams e

Dutreacute eles estendem o problema de classificar um ponto para classificar todo o

modelo Como foi citado ele quase fornece uma representaccedilatildeo volumeacutetrica do

modelo Esta aproximada representaccedilatildeo volumeacutetrica pode nos fornecer outras

informaccedilotildees como por exemplo o volume aproximado do modelo

Aleacutem disso o uso da representaccedilatildeo impliacutecita MLS no meacutetodo de Pauly cria

uma complexidade a mais para o meacutetodo sem apresentar vantagens para a

realizaccedilatildeo de operaccedilotildees booleanas que eacute o nosso enfoque

Logo podemos dizer que o meacutetodo de Adams e Dutreacute apresenta as

seguintes vantagens em relaccedilatildeo ao de Pauly

- a estrutura de octree classificada aleacutem de ser usada para classificaccedilatildeo

fornece informaccedilotildees adicionais como volume aproximado do objeto

- o tempo de processamento no meacutetodo de Adams e Dutreacute tende a ser

melhor que no meacutetodo de Pauly se implementadas as melhorias acima citadas e

se colocaacutessemos em consideraccedilatildeo o uso da representaccedilatildeo impliacutecita MLS

(Moving Least Squares)

- o tratamento de interseccedilatildeo de Adams e Dutreacute apresenta a vantagem da

portabilidade ou seja iraacute funcionar independente do algoritmo de renderizaccedilatildeo

utilizado

E as vantagens do meacutetodo de Pauly em relaccedilatildeo ao de Adams e Dutreacute

- a colocaccedilatildeo de surfels exatamente na curva de interseccedilatildeo

- a possibilidade de trabalhar com modelos soacutelidos ou natildeo soacutelidos

E finalizando concluiacutemos que o estudo relatado nesta dissertaccedilatildeo foi

importante por

- fornecer um breve estudo sobre modelagem por pontos uma nova e

promissora aacuterea dentro da computaccedilatildeo graacutefica

Conclusatildeo 72

- por apresentar uma avaliaccedilatildeo dos dois trabalhos existentes sobre

operaccedilotildees booleanas com pontos encontrando as vantagens de cada um

e levantando questotildees que natildeo tinham sido citadas nos trabalhos originais

- por propor e implementar melhorias ao trabalho de Adams e Dutreacute

71 Trabalhos Futuros

Nossa implementaccedilatildeo pode ser ainda evoluiacuteda com as propostas

apresentadas na seccedilatildeo 62 Como observamos o tempo de processamento do

algoritmo aqui implementado ainda pode ser melhorado com o uso do meacutetodo

TINN [19] - que foi proposto em Adams[2] - para otimizar a pesquisa do surfel

mais proacuteximo a um ponto que estaacute localizado na regiatildeo de um noacute que conteacutem

surfels Aleacutem disso o trabalho Simple and Efficient Trasversal Methods for

Quadtrees and Octrees de Sara F Frisken [12] citado no capiacutetulo 2 apresenta

uma otimizaccedilatildeo no uso de octrees Outra proposta para melhorar o tempo de

processamento do algoritmo aqui implementado eacute usar a forma de trabalhar com

octrees apresentada neste trabalho

O trabalho de Adams e Dutreacute [2] eacute aplicado apenas a objetos soacutelidos O

nosso plugin portanto aplica-se somente a este tipo de objeto Jaacute o trabalho de

Pauly[3] eacute aplicado tambeacutem a modelos natildeo soacutelidos Apresentamos como

proposta a um trabalho futuro a extensatildeo do algoritmo aqui implementado para

modelos natildeo soacutelidos O surfel pode conter uma informaccedilatildeo adicional que indica

se ele estaacute delimitando um volume ou natildeo Assim pode-se ter um modelo com

ldquopartes soacutelidasrdquo e ldquopartes natildeo soacutelidasrdquo Por exemplo a uniatildeo de um plano com

uma esfera poderia resultar numa esfera com ldquoabasrdquo (seriam as partes do plano

que estariam fora da esfera) O modelo resultado teria uma parte correspondente

a um espaccedilo 3D (esfera) e outra parte que seria uma superfiacutecie 2D posicionada

no espaccedilo 3D sem delimitar algum volume (abas)

Muitos trabalhos podem ser desenvolvidos aplicando-se o modelo por

pontos em animaccedilatildeo jogos visualizaccedilatildeo de terrenos criaccedilatildeo de protoacutetipos etc

considerando-se a eficiecircncia e simplicidade do modelo E mais especificamente

as operaccedilotildees booleanas com pontos podem ser aplicadas para criaccedilatildeo de

cenaacuterios testes de colisotildees e nestes casos a representaccedilatildeo usando octrees

pode ser mais explorada considerando-se o seu potencial de representaccedilatildeo

volumeacutetrica de um objeto

Referecircncias Bibliograacuteficas 73

8 Referecircncias Bibliograacuteficas

[1] MAumlNTYLAuml M An Introduction to Solid Modeling Computer Science Press 1988

[2] ADAMS B DUTREacute P Interactive Boolean Operations on Surfel-

Bounded Solids Proceedings of SIGGRAPH 2003 San Diego USA 2003

[3] PAULY M KEISER R KOBBELT L GROSS M Shape Modeling

with Point-Sampled Geometry SIGGRAPH 2003 Computer Graphics

Proceedings Annual Conference Series ACM Press ACM SIGGRAPH 2003

[4] LEVOY M WHITTED T The Use of Points as Display Primitives

Technical Report TR 85-022 The University of North Carolina at Chapel Hill

Department of Computer Science 1985

[5] PFISTER H ZWICKER M VAN BAAR J GROSS M 2000 Surfels

Surface Elements as Rendering Primitives SIGGRAPH 2000 pp 335ndash342 New

Orleans LA July 23-28 2000

[6] ZWICKER M PFISTER H VAN BAAR J GROSS M Surface

Splatting SIGGRAPH 2001

[7] PAULY M KOBBELT L GROSS M Multiresolution Modeling of

Point-Sampled Geometry CS Techinical Report 378 September 16 2002

[8] CURLESS B New Methods for Surface Reconstruction from Range Images PhD thesis Stanford University 1997

[9] RUSINKIEWICZ S Real-time Acquisition and Rendering of Large 3D Models PhD thesis Stanford University 2001

Referecircncias Bibliograacuteficas 74

[10] AMENTA N BERN M KAMVYSSELIS M A new Voronoi-Based

Surface Reconstruction Algorithm SIGGRAPH 98 Conference proceedings pp

415-421 New York 1998

[11] ZWICKER M PAULY M KNOLL O GROSS M Pointshop 3D an

Interactive System for Point-Based Surface Editing Proceedings of SIGGRAPH 2002 San Antonio TX July 2002

[12] FRISKEN S PERRY R Simple and Efficient Traversal Methods for

Quadtrees and Octrees Journal of Graphics Tools Vol 7 Issue 3 May 2003

[13] CORREcircA W T OLIVEIRA M M Silva C T Wang J

Modeling and Rendering of Real Environments

Revista de Informaacutetica Teoacuterica e Aplicada (Brazilian Journal of Theoretic and Applied Computing) 9(2)127-156 2002

[14] DAVIS J MARSCHNER S GARR M LEVOY M Filling Holes in

Complex Surfaces Using Volumetric Diffusion First International Symposium on 3D Data Processing Visualization Transmission June 2002

[15] RAumlSAumlNEN J Surface Splatting Theory Extensions and Implementation Masterrsquos Thesis Dept of Computer Science Helsinki

University of Technology May 28 2002

[16] PAULY M Point Primitives for Interactive Modeling and Processing of 3D Geometry PhD thesis Federal Institute of Technology (ETH)

of Zurich 2003

[17] HOPPE H DEROSE T DUCHAMP T MCDONALD J

STUELZLE W Surface Reconstruction from Unorganized Points Computer Graphics 26(2)71ndash78 July 1992

[18] ALEXA M BEHR J COHEN-OR D FLEISHMAN S LEVIN D

SILVA C T Point Set Surfaces IEEE Visualization 2001 pp 21ndash28 October

2001

Referecircncias Bibliograacuteficas 75

[19] GREENSPAN M GODIN G TALBOT J Acceleration of Binning

Nearest Neighbor Methods Proceedings of Vision Interface 2000 pp 337-

344

[20] MENCL R Reconstruction of Surfaces from Unorganized Three-Dimensional Point Clouds Dissertation Dortmund Univ 2001

[21] KRIVANEK J Representing and Rendering Surfaces With Points

httpciteseernjneccomkrivanek03representinghtml Acesso em 30 jul

2003

[22] KRISTJANSSON ET AL Approximate Boolean Operations on Free-

form Solids Proceedings of SIGGRAPH 01 2001

Resumo

Leal Heloisa ReisCeles Waldemar (Orientador) Operaccedilotildees Booleanas na Modelagem por Pontos Rio de Janeiro 2004 75p Dissertaccedilatildeo de Mestrado - Departamento de Informaacutetica Pontifiacutecia Universidade Catoacutelica do Rio de Janeiro

Operaccedilotildees booleanas em modelagem 3D satildeo usadas para criar novos

modelos ou para modificaacute-los Na maioria dos tipos de representaccedilatildeo de objetos

3D estas operaccedilotildees satildeo bastante complexas Nos uacuteltimos anos tem sido muito

explorado um novo tipo de modelagem a modelagem por pontos que apresenta

muitas vantagens em relaccedilatildeo agraves outras representaccedilotildees como maior simplicidade

e eficiecircncia Dois trabalhos exploram as operaccedilotildees booleanas na modelagem

por pontos o trabalho de Adams e Dutreacute e o trabalho de Pauly et al Dada a

grande importacircncia deste novo tipo de modelagem e do uso de operaccedilotildees

booleanas esta dissertaccedilatildeo apresenta uma introduccedilatildeo agrave modelagem por pontos

implementa o algoritmo proposto em Adams e Dutreacute com algumas melhorias e o

compara com o meacutetodo de Pauly et al

Palavras-chave

Modelagem 3D Modelagem por pontos Operaccedilotildees Booleanas

Computaccedilatildeo Graacutefica Interativa

Abstract

Leal Heloisa Reis Celes Waldemar(Advisor) Boolean Operations on Point-based models Rio de Janeiro 2004 75p MSc Dissertation - Departamento de Informaacutetica Pontifiacutecia Universidade Catoacutelica do Rio de Janeiro

Boolean operations are used to create or modify models These operations

in the majority of 3D object representations are very complex In the last years a

significant trend in computer graphics has been the shift towards point sampled

3D models due to their advantages over other representations such as simplicity

and efficiency Two recent works present algorithms to perform interactive

boolean operations on point-based models the work by Adams and Dutreacute and

the work by Pauly et Al Due to great importance of this novel representation

and of the use of boolean operations the present work makes an introduction to

point-based representation implements the algorithm proposed by Adams and

Dutreacute with some improvements and compares this implementation with the work

by Pauly et al

Palavras-chave

3D Modeling Point-based Modeling Boolean Operation Interactive

Computer Graphics

Sumaacuterio

1 Introduccedilatildeo 15

2 Trabalhos relacionados 18

3 Modelagem por Pontos 20 31 Ideacuteia da Representaccedilatildeo 20 32 Tipos de distribuiccedilatildeo dos surfels 22 33 Estrutura de multi-resoluccedilatildeo 22 34 Dados que um surfel pode conter 23 35 Aquisiccedilatildeo do modelo 23 351 Aquisiccedilatildeo da geometria 23 352 Aquisiccedilatildeo da textura 24 353 Correccedilatildeo das falhas da aquisiccedilatildeo 25 36 Reconstruccedilatildeo da superfiacutecie (contiacutenua) a partir do modelo (discreto) 25 37 Visualizaccedilatildeo do modelo 26 38 Ediccedilatildeo do modelo 28

4 Operaccedilotildees Booleanas com Pontos 29 41 Meacutetodos para realizar operaccedilotildees booleanas em objetos modelados por

pontos 29 42 Meacutetodo de Adams e Dutreacute 33 421 Modelo por Pontos em Adams e Dutreacute 33 422 Algoritmo de Operaccedilotildees Booleanas 34 43 Meacutetodo de Pauly 39 431 Modelo em Pauly 40 432 Algoritmo de Operaccedilotildees Booleanas 40 44 Validade da Regra 2 43

5 Melhorias Propostas 47 51 Descriccedilatildeo do algoritmo 47 511 Criaccedilatildeo e classificaccedilatildeo de uma octree para cada modelo 48

512 Teste DentroFora 52 513 Criaccedilatildeo do modelo resultado 54 52 Implementaccedilatildeo 55 521 Estruturas de Dados 57

6 Resultados 61 61 Testes 61 62 Comparaccedilatildeo entre os dois meacutetodos que realizam operaccedilotildees booleanas 68

7 Conclusatildeo 71 71 Trabalhos Futuros 72

8 Referecircncias Bibliograacuteficas 73

11

Lista de figuras

Figura 1 Um modelo por pontos e sua visualizaccedilatildeo 21 Figura 2 A superfiacutecie modelada por surfels O surfel em destaque tem raio de

alcance rt e normal n 22 Figura 3 Modelo por pontos e sua renderizaccedilatildeo usando Surface Splatting 26 Figura 4 Trecircs modelos novos foram criados a partir dos quatro iniciais (esfera

cilindro dois cubos) O primeiro eacute a esfera menos um cubo em seguida

retirou-se outro cubo e por uacuteltimo retirou-se o cilindro 29 Figura 5 A partir de dois modelos por pontos uma heacutelice e uma cabeccedila as trecircs

operaccedilotildees booleanas satildeo mostradas da esquerda para a direita uniatildeo

diferenccedila e interseccedilatildeo 30 Figura 6 (a) Dois modelos A e B (b) Posicionados de forma que A tem uma parte

dentro de B eacute mostrado o resultado A U B Af + Bf (c) Resultado de A ndash B Af

+ Bd (d) Resultado de A cap B Ad + Bd 31 Figura 7 Para classificar o ponto x encontra-se o surfel p (com normal np) mais

proacuteximo a x Se o produto interno entre np e (x ndash p) for maior que zero entatildeo

x eacute classificado como fora senatildeo seraacute classificado como dentro 32 Figura 8 Interseccedilatildeo de duas esferas agrave esquerda sem nenhum tratamento de

interseccedilatildeo agrave direita apoacutes o tratamento de interseccedilatildeo 33 Figura 9 Um objeto representado por pontos com suas normais e sua quadtree

correspondente classificada os noacutes cinza claro estatildeo dentro do modelo noacutes

cinza mais escuro estatildeo fora do modelo e noacutes com cinza intermediaacuterio satildeo

noacutes cheios noacutes que conteacutem pontos 35 Figura 10 Divisatildeo de noacute de contorno a parte agrave esquerda estaacute fora do modelo a

parte agrave direita estaacute dentro do modelo e a faixa intermediaacuteria conteacutem os

surfels 36 Figura 11 Interseccedilatildeo do surfel s e do plano que passa pelo surfel t o surfel mais

proacuteximo a s O surfel s eacute substituiacutedo por trecircs surfels menores 38 Figura 12 Agrave direita eacute mostrado o resultado do tratamento de interseccedilatildeo para o

caso de Arestas Vivas do objeto agrave esquerda 39 Figura 13 Os novos surfels satildeo colocados exatamente na curva de interseccedilatildeo e

convergem para o ponto de interseccedilatildeo 42 Figura 14 (a) Suponhamos a reta que eacute a interseccedilatildeo do plano tangente a S1 em

q1 e o plano tangente a S2 em q2 O ponto r eacute o ponto desta reta que estaacute

12

mais proacuteximo a q1 e q2 (b) r eacute projetado sobre S1 e S2 obtendo-se q1acute e q2acute

dois novos pontos de partida para nova iteraccedilatildeo (c) A nova iteraccedilatildeo gera r

que eacute uma aproximaccedilatildeo melhor de q 43 Figura 15 Para verificar se o ponto x estaacute fora de um contorno C encontra-se o

ponto y de C Se o produto interno entre a normal em y e o vetor que liga y a

x for maior que zero entatildeo x estaacute fora de C senatildeo estaacute dentro de C 44 Figura 16 As curvas vermelhas satildeo o Eixo Medial da curva em preto 45 Figura 17 Em 3D geralmente o Eixo Medial eacute uma superfiacutecie 2D (em vermelho)

Aqui o quadrado eacute o Eixo Medial da superfiacutecie transparente que o contorna

45 Figura 18 A figura mostra o diagrama de Voronoi de uma amostragem de pontos

S Da mesma forma que a amostragem aproxima a curva os veacutertices de

Voronoi aproximam o Eixo Medial 46 Figura 19 Quadtree classificada Os noacutes mais escuros estatildeo fora do modelo os

mais claros dentro e os em tom intermediaacuterio satildeo noacutes de contorno 48 Figura 20 O noacute cheio eacute dividido em trecircs partes agrave esquerda a regiatildeo estaacute dentro

do modelo agrave direita estaacute fora e entre as duas linhas que dividem o noacute estaacute a

regiatildeo que conteacutem os surfels 49 Figura 21 O noacute a eacute classificado pelo noacute c o noacute d tambeacutem eacute classificado pelo noacute c

a classificaccedilatildeo do noacute a eacute propagada para o noacute b 50 Figura 22 Os cantos a e b do noacute cheio possuem a mesma classificaccedilatildeo fora do

modelo Esta classificaccedilatildeo foi dada ao noacute vazio adjacente 50 Figura 23 Quadtree classificada 51 Figura 24 A normal n eacute a normal meacutedia e os surfels s1 e s2 juntamente com a

normal n definem as retas que dividem o noacute 52 Figura 25 Duas circunferecircncias e suas quadtrees correspondentes 53 Figura 26 a modelos natildeo se intersectam b modelo intersecta noacutes fora c

modelo intersecta apenas noacutes dentro d modelo intersecta noacutes dentro e noacutes

fora 54 Figura 27 Software PointShop 3D com dois modelos carregados na sua cena 56 Figura 28 Menu do PointShop com o plugin e as opccedilotildees para operaccedilotildees

booleanas 57 Figura 29 Modelo do PointShop Igea 62 Figura 30 Resultado da uniatildeo de duas Igeas 63 Figura 31 Resultado da interseccedilatildeo de duas Igeas 63 Figura 32 Resultado da diferenccedila entre duas Igeas 64

13

Figura 33 Modelo do PointShop MaxPlanck 65 Figura 34 Modelo do PointShop Male 66 Figura 35 Resultado da Uniatildeo do modelo Male com MaxPlanck 66 Figura 36 Resultado da interseccedilatildeo do modelo Male com o MaxPlanck 67 Figura 37 Resultado da diferenccedila do modelo Male do modelo MaxPlanck 67

14

Lista de tabelas

Tabela 1 Classificaccedilatildeo para operaccedilotildees booleanas 42

Tabela 2- Nuacutemero de surfels dos modelos resultantes 64 Tabela 3- Meacutedia dos tempos de processamento para as operaccedilotildees com duas

Igeas 65

Tabela 4-Tempo de processamento das operaccedilotildees com os modelos MaxPlanck

e Male 68 Tabela 5- Nuacutemero de surfels dos modelos resultados das operaccedilotildees com os

modelos MaxPlanck e Male 68

15

1 Introduccedilatildeo

O mundo digital estaacute conquistando cada vez mais espaccedilo nos meios de

comunicaccedilatildeo Sons imagens viacutedeos digitais satildeo miacutedias muito usadas em

diversas aacutereas como entretenimento medicina desenho industrial engenharia

arquitetura educaccedilatildeo arte ciecircncia entre outras Podemos citar alguns

exemplos dentro destas aacutereas como jogos efeitos especiais filmes digitais

visualizaccedilatildeo cientiacutefica viacutedeo-conferecircncia comeacutercio na internet Nos uacuteltimos anos

verificamos que o modelo 3D vem se tornando um novo meio de comunicaccedilatildeo

digital Com o desenvolvimento da tecnologia de aquisiccedilatildeo e do processamento

de modelos 3D ele vem sendo cada vez mais utilizado Jogos 3D animaccedilotildees

aplicaccedilotildees em realidade virtual visualizaccedilatildeo cientiacutefica aplicaccedilotildees para aacuterea

meacutedica e odontoloacutegica criaccedilatildeo de reacuteplicas para estudo e preservaccedilatildeo do

patrimocircnio histoacuterico sistemas CADCAM cataacutelogos de modelos 3D na Web para

comercializaccedilatildeo criaccedilatildeo de protoacutetipos para arquitetura engenharia satildeo alguns

exemplos de aplicaccedilotildees que usam modelos 3D

A aacuterea que estuda a representaccedilatildeo de um modelo 3D no computador eacute

chamada de modelagem em computaccedilatildeo graacutefica Existem diversos tipos de

modelagem para as diversas aplicaccedilotildees que usam um modelo 3D como por

exemplo representaccedilotildees poligonais como malhas triangulares que satildeo

geralmente usadas na aacuterea de entretenimento Este trabalho explora um novo

tipo de modelagem a modelagem por pontos

A modelagem por pontos comeccedilou a ser largamente explorada nesta

deacutecada e trata-se de uma aacuterea muito promissora em computaccedilatildeo graacutefica dadas

agraves vaacuterias e grandes vantagens em relaccedilatildeo aos outros tipos de representaccedilatildeo

como esquema de representaccedilatildeo CSG (Constructive Solid Geometry) [1] ou

malhas poligonais Dentre as principais vantagens podemos citar grande

simplicidade e flexibilidade boa performance robustez Mas a principal

vantagem desta modelagem que foi o fator que impulsionou o seu grande

desenvolvimento nesta deacutecada eacute que esta modelagem por pontos eacute a melhor

opccedilatildeo para tratar os dados de saiacuteda de equipamentos de aquisiccedilatildeo de modelos

3D O uso destes equipamentos tem aumentado muito nesta deacutecada A

16

tecnologia destes equipamentos tem progredido muito e eles tecircm se tornado

mais baratos A tendecircncia eacute que o uso destes equipamentos se torne o mais

utilizado meio de obtenccedilatildeo de modelos 3D Isto porque construir modelos 3D

bastante detalhados por meio de um software de modelagem eacute muito trabalhoso

O processo de aquisiccedilatildeo de modelos por meio destes equipamentos automatiza

este processo de construccedilatildeo

No trabalho com modelos 3D frequumlentemente satildeo usadas as operaccedilotildees

booleanas que satildeo operaccedilotildees de uniatildeo interseccedilatildeo ou diferenccedila No esquema

de representaccedilatildeo CSG estas operaccedilotildees fazem parte da representaccedilatildeo do

objeto Estas operaccedilotildees tambeacutem podem ser usadas para criar novos modelos ou

para alteraacute-los Na maioria dos tipos de representaccedilatildeo de objetos 3D estas

operaccedilotildees satildeo bastante complexas

A simplicidade da representaccedilatildeo por pontos permite que as operaccedilotildees

booleanas sejam realizadas com facilidade se compararmos com a realizaccedilatildeo

destas operaccedilotildees em outros tipos de representaccedilatildeo como malhas poligonais

Motivada pelas vantagens desta modelagem e pela utilidade destas operaccedilotildees

esta dissertaccedilatildeo apresenta uma introduccedilatildeo geral de modelagem por pontos e

trabalha mais especificamente com operaccedilotildees booleanas em objetos

modelados por pontos Dois trabalhos que exploram as operaccedilotildees booleanas na

modelagem por pontos seratildeo abordados o trabalho de Adams e Dutreacute [2] e o

trabalho de Pauly et al [3] O presente trabalho implementa o meacutetodo de Adams

e Dutreacute com algumas melhorias e faz uma comparaccedilatildeo entre o meacutetodo de Pauly

[3] e o meacutetodo de Adams e Dutreacute [2] com nossas melhorias

Como contribuiccedilotildees dadas por este trabalho apresentamos

- um estudo sobre modelagem por pontos

- um estudo sobre operaccedilotildees booleanas com pontos

- proposta de melhorias ao algoritmo proposto por Adams e Dutreacute [2]

- comparaccedilatildeo dos dois meacutetodos propostos para realizar estas operaccedilotildees

meacutetodo de Pauly et al [3] e de Adams e Dutreacute [2]

Este trabalho vem apresentado nesta dissertaccedilatildeo organizada em sete

capiacutetulos conforme descrito resumidamente a seguir

O capiacutetulo 2 cita alguns trabalhos sobre modelagem por pontos que estatildeo

relacionados a este trabalho

O capiacutetulo 3 apresenta uma visatildeo geral do modelo por pontos e explica

melhor alguns trabalhos citados no capiacutetulo 2

17

O capiacutetulo 4 apresenta operaccedilotildees booleanas com pontos e os dois

meacutetodos para realizaacute-las na modelagem por pontos meacutetodo de Pauly et al [3] e

de Adams e Dutreacute [2]

O capiacutetulo 5 apresenta algumas melhorias ao algoritmo de Adams e Dutreacute

[2] e a nossa implementaccedilatildeo deste algoritmo

O capiacutetulo 6 traz os resultados obtidos

E finalmente o capiacutetulo 7 encerra o trabalho com uma conclusatildeo e com

possiacuteveis trabalhos futuros

Trabalhos relacionados 18

2 Trabalhos relacionados

O primeiro pesquisador a propor o uso de pontos como primitiva graacutefica foi

Levoy em [4] Ele propotildee o uso de pontos como primitiva de renderizaccedilatildeo e

discute a conversatildeo dos outros modelos para o modelo por pontos

Nos uacuteltimos anos vaacuterios trabalhos importantes tecircm sido realizados na aacuterea

em diversos segmentos em visualizaccedilatildeo podemos destacar os trabalhos de

Pfister [5] e de Zwicker [6] que usam pontos como primitiva de renderizaccedilatildeo e

com resultados praacuteticos interativos muito bons

Em [7] Pauly et al propotildeem algoritmos para modelagem multi-resoluccedilatildeo

em modelos por pontos

Os trabalhos de Curless [8] e Rusinkiewicz [9] discutem os meacutetodos de

aquisiccedilatildeo que consistem em obter uma amostragem de pontos da superfiacutecie do

objeto real por meio de equipamentos como por exemplo o scanner 3D

Nas operaccedilotildees booleanas a interseccedilatildeo das superfiacutecies dos modelos

iniciais seraacute parte do modelo resultado e para ser representada corretamente

precisa ser reconstruiacuteda A reconstruccedilatildeo da superfiacutecie tambeacutem eacute usada na

visualizaccedilatildeo de um modelo Um trabalho significativo na aacuterea de reconstruccedilatildeo de

superfiacutecies estaacute em [10] de N Amenta etal Este trabalho apresenta uma

soluccedilatildeo praacutetica com garantias teoacutericas para este problema e uma heuriacutestica para

o tratamento de arestas vivas a questatildeo mais difiacutecil desta aacuterea Um exemplo

de uma aresta viva eacute o encontro de dois planos natildeo coincidentes

Frequumlentemente a interseccedilatildeo citada acima (interseccedilatildeo entre os modelos iniciais)

gera uma aresta viva (seccedilatildeo 4223)

O algoritmo aqui implementado eacute um plugin para o software PointShop 3D

[11] de Zwicker et al software de ediccedilatildeo de modelos com pontos O PointShop

tem seu coacutedigo aberto documentaccedilatildeo e trabalha com plugins Ele permite a

visualizaccedilatildeo e ediccedilatildeo interativa do modelo por pontos Eacute o uacutenico software livre

disponiacutevel com estas caracteriacutesticas Esta implementaccedilatildeo na forma de um plugin

facilitou muito o trabalho pois natildeo foi necessaacuterio implementar a visualizaccedilatildeo do

modelo 3D Aleacutem disso o Pointshop conteacutem tambeacutem um plugin com a

implementaccedilatildeo do meacutetodo de Pauly et al [3] discutido nesta dissertaccedilatildeo A

Trabalhos relacionados 19

execuccedilatildeo dos dois plugins que realizam operaccedilotildees booleanas pocircde ser

comparada

Os trabalhos aqui discutidos satildeo o de Bart Adams e Philip Dutreacute [2] e de

Pauly et al[3] que apresentam meacutetodos diferentes para realizaccedilatildeo de

operaccedilotildees booleanas com pontos Adams e Dutreacute utilizam octrees [1] e Pauly

Kd-Tree [16] e MLS (Moving Least Squares) [18] Estes algoritmos satildeo

discutidos no capiacutetulo 4

O trabalho de Sara F Frisken [12] apresenta um algoritmo para realizar

operaccedilotildees em octree de forma mais eficiente Como estas operaccedilotildees estatildeo

presentes em todo o nosso algoritmo este trabalho certamente oferece uma

forma de otimizaccedilatildeo mas que natildeo foi implementada

Modelagem por Pontos 20

3 Modelagem por Pontos

A computaccedilatildeo graacutefica natildeo lida diretamente com o objeto ou com o

fenocircmeno fiacutesico lida com modelos graacuteficos ou geomeacutetricos Modelos graacuteficos

satildeo estruturas computacionais (abstratas) que capturam aspectos de objetos de

interesse para uma aplicaccedilatildeo como forma cor textura etc Se apenas a forma

ou a geometria do objeto eacute relevante temos modelos geomeacutetricos

Estes modelos satildeo usados em vaacuterias aplicaccedilotildees em computaccedilatildeo graacutefica

como roboacutetica visatildeo computacional simulaccedilotildees realistas anaacutelises estruturais

prototipagem projeto e manufatura de produtos eletromecacircnicos arquitetura

Existem vaacuterios tipos de modelos graacuteficos Esta dissertaccedilatildeo trata de um tipo

muito em voga atualmente que eacute o modelo por pontos

Neste capiacutetulo daremos uma visatildeo geral do modelo por pontos

Introduziremos este modelo e seu processo de criaccedilatildeo Seraacute apresentado o que

eacute um modelo por pontos e o conceito de surfel [5] introduziremos os tipos de

distribuiccedilatildeo dos surfels uma estruturaccedilatildeo aplicada a estes surfels e dados que

eles podem conter As quatro proacuteximas subseccedilotildees (Ideacuteia da representaccedilatildeo

Tipos de distribuiccedilatildeo dos surfels Estrutura de multi-resoluccedilatildeo e Dados que um

surfel pode conter) tratam destes toacutepicos Um modelo por pontos pode ser criado

a partir da conversatildeo de outros tipos de modelagem NURBS por exemplo para

o modelo por pontos ou a partir de um processo de aquisiccedilatildeo Esta uacuteltima forma

de criaccedilatildeo pode ser dividida em duas etapas aquisiccedilatildeo do modelo reconstruccedilatildeo

da superfiacutecie As subseccedilotildees 35 e 36 tratam destas duas etapas

respectivamente A ediccedilatildeo do modelo 3D eacute tratada brevemente na subseccedilatildeo 38

e a sua visualizaccedilatildeo na subseccedilatildeo 37 A apresentaccedilatildeo do processo de aquisiccedilatildeo

(seccedilatildeo 35) eacute baseada no tutorial de W T Correcirca [13] A etapa de ediccedilatildeo 3D

consiste em operaccedilotildees para mudanccedila da cor textura ou forma do modelo Para

esta etapa enfocaremos as operaccedilotildees booleanas que modificam a forma do

modelo ou criam novos modelos

31 Ideacuteia da Representaccedilatildeo

Modelagem por Pontos 21

Figura 1 [20] -Um modelo por pontos e sua visualizaccedilatildeo

Um modelo por pontos representa um objeto atraveacutes de seu contorno Eacute

um tipo de representaccedilatildeo B-Rep (Boundary Representation) [1] Este contorno

consiste em uma superfiacutecie 2D posicionada no espaccedilo 3D Na modelagem por

pontos ela eacute representada por um conjunto de pontos 3D que satildeo uma

amostragem dos (infinitos) pontos que formam a superfiacutecie contiacutenua (Figura 1) A

amostragem pode ser obtida de diversas maneiras Uma delas o processo de

aquisiccedilatildeo progrediu muito nos uacuteltimos anos e este foi um dos fatores que tornou

muito importante o desenvolvimento deste modelo por pontos Outra forma de

gerar amostragem eacute fazer uma conversatildeo de um outro modelo NURBS por

exemplo para o modelo por pontos

Estes pontos satildeo denominados surfels e podem conter aleacutem da posiccedilatildeo

3D outras informaccedilotildees como normal agrave superfiacutecie cor textura raio de alcance A

Figura 2 mostra um conjunto de surfels representando uma superfiacutecie No surfel

em destaque podemos ver o raio de alcance rt e a normal n agrave superfiacutecie

Modelagem por Pontos 22

Figura 2 [5] A superfiacutecie modelada por surfels O surfel em destaque tem raio de alcance

rt e normal n

Como o modelo natildeo armazena qualquer informaccedilatildeo sobre a conexatildeo entre

os surfels a reconstruccedilatildeo da superfiacutecie contiacutenua a partir dele pode exigir

algumas restriccedilotildees na amostragem (seccedilatildeo 36)

32 Tipos de distribuiccedilatildeo dos surfels

Existem dois tipos de distribuiccedilatildeo dos surfels na modelagem por pontos

uniforme e natildeo uniforme Na distribuiccedilatildeo uniforme cada um deles descreve

partes de mesmo tamanho da superfiacutecie Na natildeo uniforme cada surfel armazena

a informaccedilatildeo de seu raio de alcance que eacute o raio do disco que este surfel

representa

A distribuiccedilatildeo uniforme tem a vantagem de ser mais simples e natildeo ser

necessaacuterio armazenar o raio de alcance do disco mas ela apresenta a seguinte

desvantagem se o modelo possui regiotildees com muito detalhe e regiotildees com

pouco detalhe ele teraacute que manter uma alta densidade mesmo nas regiotildees de

poucos detalhes

33 Estrutura de multi-resoluccedilatildeo

Um objeto pode ser representado em vaacuterios niacuteveis de detalhes Por

exemplo podemos representar um mesmo objeto com vaacuterias resoluccedilotildees

diferentes Este conceito pode ser aplicado ao modelo por pontos Desta forma

um modelo eacute representado por uma estrutura hieraacuterquica (uma aacutervore por

exemplo) onde em cada niacutevel temos uma representaccedilatildeo do objeto em uma

Modelagem por Pontos 23

determinada resoluccedilatildeo Em [7] Pauly et al propotildeem algoritmos para modelagem

multi-resoluccedilatildeo em modelos por pontos

34 Dados que um surfel pode conter

Cada surfel armazena sua localizaccedilatildeo e pode tambeacutem conter informaccedilotildees

como a cor ou coordenadas de textura Se a amostragem natildeo for uniforme o

surfel conteacutem a informaccedilatildeo do raio de alcance que eacute o raio de um disco cujo

centro eacute a posiccedilatildeo do surfel O surfel pode tambeacutem conter o vetor normal agrave

superfiacutecie e assim o surfel pode ser visto como um disco orientado A superfiacutecie

tambeacutem pode ser vista como uma superfiacutecie orientada

35 Aquisiccedilatildeo do modelo

Esta introduccedilatildeo sobre aquisiccedilatildeo do modelo aqui apresentada baseia-se no

tutorial de W T Correcirca [13]

O processo de aquisiccedilatildeo consiste em obter uma amostragem de pontos da

superfiacutecie do objeto real por meio de equipamentos como por exemplo o

scanner 3D Eacute uma aacuterea que tem progredido muito nos uacuteltimos anos A

resoluccedilatildeo e a precisatildeo dos equipamentos de aquisiccedilatildeo tecircm melhorado bastante

e o custo deles reduzido de forma significativa Isso possibilita que a aquisiccedilatildeo

de modelos 3D seja usada em aplicaccedilotildees de desenho industrial arte ou em

produtos para a aacuterea de entretenimento O consequumlente maior uso destes

equipamentos criou a necessidade de avanccedilos no tratamento dos seus dados de

saiacuteda que satildeo um conjunto de pontos

Este processo pode ser dividido em trecircs partes [13] aquisiccedilatildeo da

geometria aquisiccedilatildeo da textura e correccedilatildeo de falhas da aquisiccedilatildeo

351 Aquisiccedilatildeo da geometria

Existem vaacuterios meacutetodos de aquisiccedilatildeo da geometria Curless [8] e

Rusinkiewicz [9] classificaram estes meacutetodos em trecircs categorias meacutetodos por

contato transmissatildeo e reflexatildeo

O meacutetodo por contato toca a superfiacutecie do objeto com uma sonda e grava

a posiccedilatildeo Este meacutetodo do qual o Coordinate Measuring Machines (CMMs) eacute

Modelagem por Pontos 24

um exemplo eacute bastante preciso mas eacute muito lento e natildeo adequado a objetos

fraacutegeis

Meacutetodos por transmissatildeo projetam ondas de energia sobre o objeto e

gravam a energia transmitida Por exemplo tomografia computadorizada que

projeta ondas de raio-x sobre o objeto e mede a quantidade de radiaccedilatildeo que

passa atraveacutes dele O resultado eacute um modelo geomeacutetrico de alta resoluccedilatildeo Este

meacutetodo pode captar detalhes do objeto que natildeo satildeo visiacuteveis de fora do objeto

Por outro lado ele eacute caro e arriscado

Meacutetodos por reflexatildeo podem ser oacuteticos ou natildeo-oacuteticos Natildeo-oacuteticos incluem

radares que medem a distacircncia a um objeto enviando microondas ou ondas

sonoras para o objeto e gravando o tempo que a onda gasta para retornar Estes

meacutetodos natildeo satildeo muito precisos nem raacutepidos

Meacutetodos por reflexatildeo oacuteticos podem ser passivos ou ativos Meacutetodos oacuteticos

passivos natildeo interagem com o objeto e incluem teacutecnicas de visatildeo computacional

como shape-from-shading stereo triangulation optical flow e meacutetodos de

decomposiccedilatildeo para video streams Estes meacutetodos raramente constroem

modelos precisos e sua maior aplicaccedilatildeo eacute em reconhecimento de objetos

Meacutetodos oacuteticos ativos projetam luz sobre um objeto de maneira estruturada

e atraveacutes da reflexatildeo da luz determinam a forma do objeto Exemplos satildeo depth

from defocus photometric stereo projected-light triangulation time of flight

Meacutetodos por reflexatildeo oacuteticos ativos tecircm muitas vantagens sobre os passivos tecircm

um melhor desempenho quando natildeo existe textura satildeo mais baratos e mais

robustos e produzem uma amostragem precisa

352 Aquisiccedilatildeo da textura

Idealmente noacutes gostariacuteamos de ter uma completa descriccedilatildeo de como um

ponto da superfiacutecie reflete a luz dependendo do vetor normal a esta superfiacutecie

da direccedilatildeo do raio de luz incidente e do comprimento de onda Tal descriccedilatildeo eacute

conhecida como Bidirectional Reflectance Distribution Function (BRDF) Medir

BRDFs com precisatildeo eacute um problema difiacutecil

Pode-se ter uma aproximaccedilatildeo da aquisiccedilatildeo de cores do objeto tirando

fotos dele O objeto eacute fotografado e a cor de cada ponto da superfiacutecie eacute obtida a

partir de um mapeamento das fotos 2D para o modelo 3D Para mapear a

fotografia agrave geometria precisamos conhecer os paracircmetros de projeccedilatildeo da

cacircmera e a sua posiccedilatildeo no momento em que a foto foi batida Para cada ponto

Modelagem por Pontos 25

3D do modelo encontramos sua projeccedilatildeo 2D no plano da cacircmera e associamos

a cor do pixel nesta projeccedilatildeo agrave cor do ponto 3D

353 Correccedilatildeo das falhas da aquisiccedilatildeo

O processo de aquisiccedilatildeo deixa frequumlentemente buracos no modelo devido

a ruiacutedos no processo ou agrave impossibilidade de aquisiccedilatildeo de determinadas partes

de uma superfiacutecie Estes buracos devem ser corrigidos Pode-se usar por

exemplo um filtro de passa-baixa para remoccedilatildeo de ruiacutedos [14] Meacutetodos de

difusatildeo geomeacutetrica tecircm sido aplicados para preenchimento dos buracos [15] A

correccedilatildeo das falhas eacute tida como um preacute-processamento para o processo de

reconstruccedilatildeo da superfiacutecie contiacutenua (seccedilatildeo 36)

36 Reconstruccedilatildeo da superfiacutecie (contiacutenua) a partir do modelo (discreto)

A reconstruccedilatildeo da superfiacutecie contiacutenua consiste em a partir de um conjunto

natildeo estruturado de pontos obter um modelo contiacutenuo desta superfiacutecie Esta

reconstruccedilatildeo eacute frequumlentemente exigida para um modelo por pontos Na sua

visualizaccedilatildeo podemos desejar focar qualquer parte do modelo Para fazermos

operaccedilotildees booleanas com os modelos podemos querer determinar exatamente

onde eles se intersectam

No entanto natildeo precisamos ter necessariamente a representaccedilatildeo contiacutenua

de todo o objeto ao mesmo tempo A reconstruccedilatildeo desta superfiacutecie a partir dos

pontos amostrados pode ser feita no momento que for mais adequado agrave

aplicaccedilatildeo Na visualizaccedilatildeo a reconstruccedilatildeo pode ser feita na projeccedilatildeo 2D da

parte do modelo em foco (seccedilatildeo 37) Para operaccedilotildees booleanas pode-se

reconstruir apenas a aacuterea da interseccedilatildeo dos modelos

Este processo de reconstruccedilatildeo de superfiacutecie tem sido muito estudado em

modelagem geomeacutetrica e geometria computacional nos uacuteltimos anos O trabalho

mais importante desta aacuterea eacute o trabalho de Amenta et al [10] que foi a primeira

soluccedilatildeo com garantias demonstraacuteveis para este problema de reconstruccedilatildeo de

superfiacutecie A seccedilatildeo 44 explica estes conceitos e o trabalho [10] Este trabalho

demonstra que teoricamente para que a reconstruccedilatildeo da superfiacutecie (contiacutenua) a

partir das amostras seja correta a amostragem deve ser adequada Ele usa o

conceito de ldquoEixo Medialrdquo para definir o que eacute uma amostragem adequada

Modelagem por Pontos 26

(seccedilatildeo 44) Em duas dimensotildees os veacutertices de Voronoi de uma amostragem

densa aproximam o ldquoEixo Medialrdquo da amostragem

Por meio deste conceito de Eixo Medial [1016] obtecircm-se paracircmetros

teoacutericos para a definiccedilatildeo de amostragem adequada e baseado neste conceito

o algoritmo apresentado em [10] traz uma soluccedilatildeo praacutetica para o problema

obtendo uma malha poligonal a partir do modelo por pontos

O PointShop 3D [11] software de ediccedilatildeo de modelos por pontos utilizado

nesta pesquisa faz quando necessaacuterio a reconstruccedilatildeo da superfiacutecie Para isso

o PointShop 3D explora a vizinhanccedila local (surfels vizinhos de acordo com suas

posiccedilotildees) Ele usa o conceito de Eixo Medial para justificar seu meacutetodo de

reconstruccedilatildeo da superfiacutecie que na praacutetica apresenta resultados bastante

satisfatoacuterios apesar de teoricamente natildeo ter garantias [16]

37 Visualizaccedilatildeo do modelo

A primeira abordagem para visualizaccedilatildeo de um modelo por pontos foi

construir uma malha de poliacutegonos a partir dos surfels e renderizaacute-la Mas a

construccedilatildeo de malhas a partir dos surfels eacute um processo muito caro e lento

principalmente para modelos complexos Na tentativa de obter uma visualizaccedilatildeo

interativa do modelo por pontos estatildeo sendo estudadas teacutecnicas que utilizam

surfels como primitiva de visualizaccedilatildeo A ideacuteia foi apresentada inicialmente por

Levoy [4]

Figura 3 [21] -Modelo por pontos e sua renderizaccedilatildeo usando Surface Splatting

Modelagem por Pontos 27

O objetivo da renderizaccedilatildeo a partir dos surfels eacute projetaacute-los na tela e

reconstruir as superfiacutecies de forma contiacutenua sem buracos Para que esta

renderizaccedilatildeo seja amplamente utilizada deve-se ter cuidado com o uso de

memoacuteria e com a qualidade da imagem gerada Teacutecnicas recentes como Surface

Splatting [6] faz a renderizaccedilatildeo interativamente com qualidade (Figura 3)

comparada a outros meacutetodos de renderizaccedilatildeo como Image Based Rendering

Em geral a visualizaccedilatildeo do modelo por pontos pode ser dividida nas seguintes

etapas

- warping - projeccedilatildeo em perspectiva de cada ponto do modelo na tela

processo anaacutelogo agrave projeccedilatildeo de veacutertices dos triacircngulos na malha triangular Se

um pixel da tela estiver contido em mais de uma projeccedilatildeo de surfels (vizinhos)

ou seja mais de um ponto cobre este pixel os atributos destes pontos seratildeo

combinados

- shading por ponto - o processo de shading eacute realizado para cada ponto

visiacutevel (os pontos que natildeo satildeo vistos do ponto de vista em questatildeo devem ser

retirados) Qualquer modelo local de shading pode ser aplicado Uma nova

teacutecnica foi proposta em Surface Splatting [6]

- reconstruccedilatildeo da imagem ndash pixels que natildeo ldquoreceberamrdquo projeccedilatildeo de

nenhum ponto formam buracos na imagem Esta imagem deve ser reconstruiacuteda

sem buracos sem aliasing e as superfiacutecies devem ser reconstruiacutedas de forma

contiacutenua e devem ser ldquosuavizadasrdquo (smooth surface)

Os algoritmos de renderizaccedilatildeo por pontos podem tratar a questatildeo de

buracos na visualizaccedilatildeo de trecircs formas [17]

Detecccedilatildeo e preenchimento de buracos no espaccedilo da tela pontos satildeo

projetados na tela e pixels que natildeo receberam pontos satildeo detectados (buracos)

Para preencher estes buracos que natildeo receberam pontos eacute feita uma

interpolaccedilatildeo entre os vizinhos

Geraccedilatildeo de mais pontos a superfiacutecie eacute interpolada no espaccedilo do modelo

para garantir que todos os pixels recebam pelo menos a projeccedilatildeo de um ponto

Splatting um surfel eacute projetado na tela e sua contribuiccedilatildeo eacute espalhada de

forma diferenciada para os pixels vizinhos Agrave medida em que o vizinho se torna

mais distante a contribuiccedilatildeo do surfel diminui

Raumlsaumlnen faz uma analogia do processo de renderizaccedilatildeo proposto em [6]

com o mapeamento de textura [15] No mapeamento de textura para um

determinado pixel da tela satildeo encontrados os pontos da textura que afetam este

Modelagem por Pontos 28

pixel Num sentido inverso em splatting para um determinado surfel (que

representa a textura) satildeo encontrados os pixels da tela que este surfel afeta

38 Ediccedilatildeo do modelo

Ediccedilatildeo de um modelo 3D consiste em operaccedilotildees que modificam

caracteriacutesticas deste modelo como cor textura forma ou criam novos modelos

O software PointShop 3D [11] software de ediccedilatildeo de modelos por pontos 3D

implementa vaacuterias destas operaccedilotildees (ver seccedilatildeo 52)

Para modificar a forma de um modelo ou criar um novo satildeo muito usadas

as operaccedilotildees booleanas que eacute o nosso enfoque nesta dissertaccedilatildeo Na

modelagem CSG (Constructive Solid Geometry) as operaccedilotildees booleanas satildeo

usadas juntamente com primitivas soacutelidas para definir um modelo No entanto

em alguns tipos de modelos estas operaccedilotildees satildeo difiacuteceis como por exemplo

em malhas poligonais Com pontos elas podem ser feitas interativamente [32]

Operaccedilotildees Booleanas com Pontos 29

4 Operaccedilotildees Booleanas com Pontos

Operaccedilotildees booleanas satildeo as operaccedilotildees de uniatildeo interseccedilatildeo e diferenccedila

definidas na teoria matemaacutetica de conjuntos Estas operaccedilotildees satildeo aplicadas em

modelos soacutelidos para alteraacute-los ou para criar novos modelos A Figura 4 abaixo

mostra a criaccedilatildeo de trecircs novos modelos a partir de quatro modelos iniciais

Figura 4 [22] Trecircs modelos novos foram criados a partir dos quatro iniciais (esfera

cilindro dois cubos) O primeiro eacute a esfera menos um cubo em seguida retirou-se outro

cubo e por uacuteltimo retirou-se o cilindro

Estas operaccedilotildees satildeo aplicadas em objetos modelados por pontos em dois

trabalhos no trabalho de Bart Adams e Philip Dutreacute [2] e no trabalho de Pauly

et Al [3] Neste capiacutetulo a seccedilatildeo 41 apresenta a parte comum aos dois

trabalhos e as seccedilotildees 42 e 43 apresentam as particularidades de cada um A

seccedilatildeo 44 discute uma questatildeo natildeo explicitada em nenhum dos dois trabalhos

41 Meacutetodos para realizar operaccedilotildees booleanas em objetos modelados por pontos

A Figura 5 mostra o resultado do meacutetodo de Adams[2] operaccedilotildees de

uniatildeo diferenccedila e interseccedilatildeo de objetos soacutelidos 3D modelados por pontos

Operaccedilotildees Booleanas com Pontos 30

Figura 5 [2]-A partir de dois modelos por pontos uma heacutelice e uma cabeccedila as trecircs operaccedilotildees booleanas satildeo mostradas da esquerda para a direita uniatildeo diferenccedila e interseccedilatildeo

Sejam A e B objetos 3D soacutelidos modelados por pontos Definem-se os

seguintes elementos

Af ndash superfiacutecie (contorno) de A que estaacute fora de B

Ad ndash superfiacutecie (contorno) de A que estaacute dentro de B

Bf ndash superfiacutecie (contorno) de B que estaacute fora de A

Bd ndash superfiacutecie (contorno) de B que estaacute dentro de A

O resultado da operaccedilatildeo booleana entre A e B seraacute um modelo C cuja

superfiacutecie de contorno pode ser determinada pela seguinte regra [2] que aqui

chamamos de Regra 1

Regra 1 A U B Af + Bf

A cap B Ad + Bd

A ndash B Af + Bd (com a orientaccedilatildeo invertida)

B ndash A Ad (com a orientaccedilatildeo invertida) + Bf

A Figura 6 mostra as operaccedilotildees com dois modelos A e B

(a) (b)

Operaccedilotildees Booleanas com Pontos 31

(c) (d)

Figura 6 [22] (a) Dois modelos A e B (b) Posicionados de forma que A tem

uma parte dentro de B eacute mostrado o resultado A U B Af + Bf (c) Resultado de A ndash B Af

+ Bd (d) Resultado de A cap B Ad + Bd

Bart [2] e Pauly [3] apresentam dois meacutetodos para determinar os

elementos acima Estes dois meacutetodos satildeo construiacutedos a partir dos seguintes

conceitos os elementos Af Ad Bf Bd satildeo uma parte da superfiacutecie modelada por

pontos e portanto satildeo conjuntos de surfels Para determinaacute-los eacute necessaacuteria

entatildeo a classificaccedilatildeo de um surfel (que pode se resumir agrave classificaccedilatildeo de um

ponto que eacute o seu centro) de uma superfiacutecie como dentro ou fora de um outro

modelo Os dois meacutetodos utilizam a seguinte regra para esta classificaccedilatildeo aqui

denominada Regra 2

Regra 2 Dado um ponto x qualquer um volume V determinado por uma superfiacutecie

de contorno S uma amostragem P da superfiacutecie S um ponto p є P que eacute a

amostra mais proacutexima a x um vetor np normal agrave S em p e orientado para fora de

S temos que

(x ndash p) np gt 0 x notinV

Ou seja para classificar um ponto em relaccedilatildeo a um modelo verificamos o

produto interno entre a normal em p (surfel mais proacuteximo a x) e o vetor (x - p)

se este produto interno for maior que zero x natildeo pertence ao volume V e seraacute

classificado como fora senatildeo seraacute classificado como dentro De maneira

ainda mais informal se a normal em p apontar para a direccedilatildeo oposta a x x seraacute

classificado como dentro se apontar para x x seraacute classificado como fora

A Figura 7 mostra a Regra 2

Operaccedilotildees Booleanas com Pontos 32

Figura 7 Para classificar o ponto x encontra-se o surfel p (com normal np) mais proacuteximo

a x Se o produto interno entre np e (x ndash p) for maior que zero entatildeo x eacute classificado como

fora senatildeo seraacute classificado como dentro

A validade da Regra 2 eacute discutida na Seccedilatildeo 44 Uma das restriccedilotildees

teoacutericas para garantir-lhe a validade eacute que a superfiacutecie seja suave

Cada um dos dois meacutetodos daacute um tratamento diferente para o uso desta

regra Pauly usa a regra diretamente encontrando o surfel mais proacuteximo a um

ponto e classificando este ponto a partir deste surfel Ele utiliza tambeacutem a

representaccedilatildeo impliacutecita MLS (Moving Least Squares [18]) para casos em que a

Regra 2 poderia falhar e para tratamento de interseccedilotildees [3] Seu meacutetodo vale

para modelos soacutelidos ou natildeo soacutelidos O meacutetodo de Adams e Dutreacute [2] utiliza

octrees [1] criando uma classificaccedilatildeo dos noacutes da octree a partir desta Regra 2

Os pontos satildeo entatildeo classificados de acordo com o noacute da octree que o conteacutem

Este segundo meacutetodo aplica-se somente a modelos soacutelidos Os dois meacutetodos

seratildeo descritos em detalhes nas seccedilotildees abaixo

Como um surfel eacute considerado um disco podemos dizer que surfels de

dois modelos diferentes podem se intersectar A interseccedilatildeo destes dois surfels

corresponde agrave interseccedilatildeo destes dois discos Estes surfels geram problemas

para visualizaccedilatildeo se forem acrescentados ao resultado sem um tratamento

especiacutefico apresentaratildeo artefatos natildeo desejaacuteveis na renderizaccedilatildeo do modelo

resultado (Figura 8) se natildeo forem acrescentados ao resultado deixaratildeo buracos

no modelo

Operaccedilotildees Booleanas com Pontos 33

Figura 8 [2] -Interseccedilatildeo de duas esferas agrave esquerda sem nenhum tratamento de interseccedilatildeo agrave direita apoacutes o tratamento de interseccedilatildeo

Aleacutem disso nem sempre esta interseccedilatildeo forma uma superfiacutecie suave

Esta interseccedilatildeo pode formar uma aresta viva (seccedilatildeo 4223) gerando

problemas tambeacutem para o uso da Regra 2 que eacute vaacutelida apenas para superfiacutecies

suaves Eacute necessaacuterio entatildeo fazer um tratamento desta superfiacutecie de interseccedilatildeo

(formada por surfels originados de diferentes modelos) O tratamento de cada

um dos meacutetodos para este caso seraacute tambeacutem abaixo apresentado

42 Meacutetodo de Adams e Dutreacute

O meacutetodo aplica-se somente a modelos soacutelidos Para determinaccedilatildeo dos

elementos da aqui chamada Regra 1 (seccedilatildeo 41) este meacutetodo utiliza uma octree

[1] que subdivide o espaccedilo do modelo em trecircs fora dentro ou no contorno do

modelo Estes espaccedilos satildeo determinados pela classificaccedilatildeo dos noacutes da octree a

partir da Regra 2 Tambeacutem eacute usado o meacutetodo TINN - Triangle Inequality Nearest

Neighbour [19] - para otimizar a pesquisa dentro do noacute A seguir descrevemos o

modelo usado neste meacutetodo apresentando os dados associados aos pontos o

tipo de distribuiccedilatildeo e o algoritmo que realiza as operaccedilotildees

421 Modelo por Pontos em Adams e Dutreacute

Os surfels neste meacutetodo contecircm as seguintes informaccedilotildees posiccedilatildeo do

surfel xs orientaccedilatildeo do surfel ns e raio de alcance do surfel rs O surfel pode ser

pensado como um disco ortogonal a ns com centro xs e raio rs O raio eacute

escolhido de tal forma que a projeccedilatildeo dos discos no plano da imagem se

sobreponham

Operaccedilotildees Booleanas com Pontos 34

Os objetos representados satildeo soacutelidos A distribuiccedilatildeo dos surfels eacute

uniforme embora o algoritmo natildeo exija esta condiccedilatildeo Para cada soacutelido eacute

definido um rmax = Max rs o raio de alcance do maior surfel pertencente agrave

superfiacutecie do soacutelido Como o raio eacute escolhido de tal forma que a projeccedilatildeo dos

discos no plano da imagem se sobreponham o controle da amostragem eacute

entatildeo ligado agrave renderizaccedilatildeo

422 Algoritmo de Operaccedilotildees Booleanas

Utilizando objetos modelados da forma descrita acima o meacutetodo realiza

operaccedilotildees de uniatildeo interseccedilatildeo e diferenccedila com modelos soacutelidos Supondo dois

modelos soacutelidos S1 e S2 O algoritmo pode ser dividido nas seguintes etapas

Criaccedilatildeo de uma octree para cada modelo Teste Dentro-Fora Tratamento da

interseccedilatildeo Estas etapas satildeo apresentadas nas proacuteximas seccedilotildees

4221 Criaccedilatildeo de uma octree para cada modelo

Eacute criada uma octree [1] para cada modelo A criaccedilatildeo de uma octree eacute feita

da seguinte forma

Gera-se a ldquoCaixa envolventerdquo caixa alinhada com os eixos que conteacutem

todo o modelo A ldquoCaixa envolventerdquo corresponde ao noacute raiz da octree Este noacute

conteacutem inicialmente todos os surfels do modelo Em seguida o noacute raiz eacute

dividido em oito noacutes filhos Os surfels satildeo distribuiacutedos entre estes oito noacutes Cada

um deles caso contenha surfels eacute dividido novamente em 8 filhos e seus surfels

satildeo redistribuiacutedos entre eles Este processo eacute repetido recursivamente enquanto

o nuacutemero de surfels do noacute for maior que zero ou ateacute uma profundidade maacutexima

preacute-definida da octree ser alcanccedilada

Cada noacute da octree deve ser classificado O objetivo desta classificaccedilatildeo eacute

determinar que parte da octree estaacute dentro do modelo e que parte estaacute fora Os

noacutes da octree satildeo entatildeo classificados como ldquodentrordquo ldquoforardquo e ldquocontornordquo

Podemos ilustrar esta classificaccedilatildeo em 2D a Figura 9 mostra uma quadtree

classificada

Operaccedilotildees Booleanas com Pontos 35

Figura 9-Um objeto representado por pontos com suas normais e sua quadtree correspondente classificada os noacutes cinza claro estatildeo dentro do modelo noacutes cinza mais escuro estatildeo fora do modelo e noacutes com cinza intermediaacuterio satildeo noacutes cheios noacutes que conteacutem pontos

O noacutes que conteacutem surfels satildeo classificados como ldquocontornordquo Para

classificar um noacute vazio existem trecircs casos

o noacute vazio tem apenas um vizinho-irmatildeo natildeo vazio

o noacute vazio tem mais de um vizinho-irmatildeo natildeo vazio

o noacute vazio natildeo tem vizinhos-irmatildeos natildeo vazios

No primeiro caso o noacute vazio eacute classificado pelo seu vizinho natildeo vazio No

segundo caso considera-se qualquer um dos vizinhos natildeo vazios No terceiro

caso classifica-se primeiro os noacutes vizinhos e eacute dada a mesma classificaccedilatildeo para

o noacute vazio Como cada noacute natildeo folha de uma octree tem pelo menos um noacute filho

natildeo vazio sempre pode ser feita a classificaccedilatildeo dos noacutes vazios A classificaccedilatildeo

eacute feita da seguinte forma dentre os surfels do vizinho-irmatildeo escolhido encontra-

se o surfel mais proacuteximo ao noacute a ser classificado Se a normal deste surfel

aponta para o noacute vazio a ser classificado entatildeo ele eacute classificado como ldquoforardquo

Se a normal aponta no sentido contraacuterio entatildeo ele eacute classificado como ldquodentrordquo

De maneira mais formal sejam cv e cc coordenadas dos centros do noacute vazio e

do noacute contorno respectivamente Seja s o surfel mais proacuteximo ao noacute vazio e ns

a normal em s Se ( cv - cc )٠ ns gt 0 ( produto interno entre a normal em s e o

vetor cv - cc for maior que zero ) o noacute vazio seraacute classificado como ldquoforardquo

Senatildeo seraacute classificado como ldquodentrordquo

Em geral os noacutes ldquocontornordquo satildeo subdivididos em trecircs partes uma que estaacute

fora do modelo uma que estaacute dentro do modelo e uma terceira que conteacutem os

surfels Esta subdivisatildeo eacute feita por meio da criaccedilatildeo de dois planos paralelos que

Operaccedilotildees Booleanas com Pontos 36

dividem o noacute Para determinar estes planos calcula-se o vetor nm igual agrave

meacutedia das normais dos surfels do noacute nm = sum ns sum ns onde ns eacute a normal de

cada surfel do noacute

Em seguida encontra-se o surfel com maior produto interno entre a sua

normal e a normal meacutedia d1=Max(nm ٠ ns) Este surfel juntamente com a normal

meacutedia define um dos planos Encontra-se tambeacutem o surfel com menor produto

interno entre a sua normal e a normal meacutedia d2=Min(nm ٠ ns) Este surfel

juntamente com a normal meacutedia define o outro plano A Figura 10 mostra a

divisatildeo de um noacute de uma quadtree nas trecircs partes dentro do modelo fora do

modelo e no ldquocontornordquo

Esta subdivisatildeo aplica-se apenas a noacutes que conteacutem surfels cujas direccedilotildees

natildeo variem em mais de 90 graus Caso isso ocorra ele natildeo seraacute subdividido Ou

seja se um noacute possuir dois vetores normais (de dois surfels diferentes) que

formem um acircngulo maior que 90 graus ele natildeo seraacute subdividido

Figura 10 [2] -Divisatildeo de noacute de contorno a parte agrave esquerda estaacute fora do modelo a parte agrave direita estaacute dentro do modelo e a faixa intermediaacuteria conteacutem os surfels

4222 Teste Dentro-Fora

O Teste Dentro-Fora faz a classificaccedilatildeo dos surfels de um modelo como

ldquodentrordquo ou ldquoforardquo de outro modelo Portanto aplicaremos este mesmo teste duas

vezes uma para o modelo S1 em relaccedilatildeo ao modelo S2 e outra para S2 em

relaccedilatildeo a S1 Vamos mostrar o teste Dentro-Fora para o caso da classificaccedilatildeo

dos surfels do modelo S1 em relaccedilatildeo a S2

Operaccedilotildees Booleanas com Pontos 37

No item anterior foram criadas duas octrees uma para o modelo S1 e

outra para o modelo S2 Chamemos de A e B as octrees de S1 e S2

respectivamente Para classificar S1 em relaccedilatildeo a S2 inicialmente eacute feita uma

avaliaccedilatildeo da posiccedilatildeo de A em relaccedilatildeo a B A e B podem estar nas seguintes

situaccedilotildees

- A natildeo intersecta B

- A intersecta apenas noacutes ldquoforardquo de B

- A intersecta apenas noacutes ldquodentrordquo de B

- A intersecta noacutes ldquoforardquo e noacutes ldquodentrordquo de B

Para testar estas situaccedilotildees os noacutes satildeo aumentados de rmax o raio do

maior surfel do modelo soacutelido Isto eacute feito para compensar o fato de que o surfel

natildeo eacute apenas um ponto mas sim considerado como um disco

No primeiro e no segundo caso todos os surfels de A satildeo classificados

como ldquoforardquo No terceiro caso todos os surfels de A satildeo classificados como

ldquodentrordquo

No quarto caso temos que percorrer a octree A Comeccedilando pelo noacute raiz

percorre-se os filhos deste noacute Para cada filho os quatro testes acima satildeo feitos

Se o noacute filho encontra-se em um dos trecircs primeiros casos a classificaccedilatildeo eacute dada

como foi citada acima Se um filho estaacute no quarto caso e natildeo eacute um noacute folha

repete-se recursivamente o mesmo procedimento para seus filhos ateacute encontrar-

se um noacute folha Para um noacute que estaacute no quarto caso e eacute folha percorre-se a lista

de surfels que este noacute conteacutem classificando cada um destes surfels Seja sa um

surfel desta lista Para este caso percorre-se a octree B para classificar sa

Primeiramente encontramos o noacute de B que conteacutem sa Se este noacute de B foi

dividido testa-se de acordo com esta divisatildeo do noacute se o surfel sa estaacute na parte

do noacute que estaacute dentro do modelo ele eacute classificado como ldquodentrordquo se sa estaacute na

parte que estaacute fora do modelo ele eacute classificado como ldquoforardquo se sa estaacute na parte

intermediaacuteria ou se o noacute de B natildeo foi subdividido em planos encontra-se sb que

eacute o surfel pertencente a este noacute de B que estaacute mais proacuteximo de sa sa seraacute

entatildeo classificado de acordo com sb Se ( sa - sb )٠ nb gt 0 sa eacute classificado

como ldquoforardquo senatildeo eacute classificado como ldquodentrordquo Se os discos de sb e sa se

intersectam sa eacute marcado como interseccedilatildeo Para encontrar sb o algoritmo

implementa o meacutetodo TINN ndash Triangle Inequality Nearest Neighbour [19]

Operaccedilotildees Booleanas com Pontos 38

4223 Tratamento da interseccedilatildeo

Os surfels de A que intersectam surfels de B satildeo classificados como

ldquointerseccedilatildeordquo Se eles natildeo forem incluiacutedos no modelo resultado o soacutelido resultado

teraacute buracos Se eles forem incluiacutedos sem algum tratamento eles natildeo

representaratildeo adequadamente a regiatildeo Em geral o surfel sa (um surfel

ldquointerseccedilatildeordquo de A) eacute dividido em dois pelo plano que conteacutem o surfel sb (surfel de

B que sa intersecta) uma parte que estaacute fora de B e outra que estaacute dentro de B

Dependendo da operaccedilatildeo que estaacute sendo realizada vamos querer manter uma

destas partes do surfel sa no modelo resultado Seja xa a posiccedilatildeo do surfel sa e o

surfel sa uma circunferecircncia de centro xa e raio ra igual ao raio de alcance de sa

O plano que conteacutem o surfel sb define uma corda desta circunferecircncia como

mostra a Figura 11 O surfel sa seraacute substituiacutedo por um surfel menor que

ultrapassa esta corda de uma distacircncia e definida pelo usuaacuterio Para cobrir

completamente a interseccedilatildeo seratildeo adicionados surfels menores que cruzam a

corda de interseccedilatildeo

Figura 11 -Interseccedilatildeo do surfel s e do plano que passa pelo surfel t o surfel mais proacuteximo a s O surfel s eacute substituiacutedo por trecircs surfels menores

Operaccedilotildees Booleanas com Pontos 39

O tratamento de interseccedilatildeo proposto por Adams e Dutreacute [2] natildeo soacute evita

os buracos mas tambeacutem cria uma forma de renderizaccedilatildeo de arestas vivas A

colocaccedilatildeo de vaacuterios pequenos surfels na regiatildeo da interseccedilatildeo permite esta

correta renderizaccedilatildeo das ldquoarestas vivasrdquo Desta forma o problema das arestas

vivas eacute resolvido na modelagem (Figura 12) A vantagem de se resolver o caso

na modelagem eacute que natildeo eacute necessaacuterio fazer um tratamento especial na

renderizaccedilatildeo para que mostre esta aresta viva Diferente do tratamento feito

em Pauly (seccedilatildeo 431) que resolve esta questatildeo em tempo de renderizaccedilatildeo

Aleacutem disso o tratamento resolve alguns casos onde a Regra 2 poderia falhar

(veja em Validade da Regra 2-seccedilatildeo 44)

Figura 12 [2] -Agrave direita eacute mostrado o resultado do tratamento de interseccedilatildeo para o caso de Arestas Vivas do objeto agrave esquerda

43 Meacutetodo de Pauly

O meacutetodo aplica-se a objetos soacutelidos e natildeo soacutelidos Os modelos podem ser

obtidos a partir de diferentes entradas como nuvem de pontos irregulares ou por

meio de scanners 3D Cria um modelo hiacutebrido destes objetos usa o modelo por

pontos juntamente com a representaccedilatildeo impliacutecita Moving Least Squares - MLS

[18] Realiza operaccedilotildees booleanas com pontos e utiliza adicionalmente MLS

para alguns casos de classificaccedilatildeo de surfels e no tratamento de interseccedilatildeo A

seguir apresentamos as caracteriacutesticas do modelo por pontos deste meacutetodo e o

algoritmo que realiza as operaccedilotildees

Operaccedilotildees Booleanas com Pontos 40

431 Modelo em Pauly

O modelo eacute uma estrutura hiacutebrida de pontos com a representaccedilatildeo impliacutecita

Moving Least Squares - MLS [18] Esta estrutura eacute usada para fazer operaccedilotildees

booleanas e tambeacutem operaccedilotildees de free-form (natildeo abordadas nesta

dissertaccedilatildeo) Para operaccedilotildees booleanas a representaccedilatildeo MLS permite que a

curva de interseccedilatildeo entre os modelos seja reconstruiacuteda e surfels sejam

colocados nesta curva e em alguns casos de classificaccedilatildeo de surfels mostrados

na seccedilatildeo 432 Para este modelo natildeo existem restriccedilotildees quanto agrave forma do

objeto

Os surfels contecircm informaccedilotildees sobre sua posiccedilatildeo e sua normal Aleacutem

disso surfels podem conter informaccedilotildees adicionais como textura cor

propriedades de materiais

A distribuiccedilatildeo dos surfels eacute natildeo-uniforme e a amostragem eacute

aproximadamente adequada (Veja seccedilatildeo 44)

432 Algoritmo de Operaccedilotildees Booleanas

O algoritmo classifica surfels de um modelo como ldquodentrordquo ou ldquoforardquo de

outro modelo Antes de colocarmos como eacute feita esta classificaccedilatildeo devemos

acrescentar que Pauly estende esta classificaccedilatildeo para modelos que natildeo satildeo

soacutelidos Ou seja mesmo um modelo natildeo soacutelido divide o espaccedilo da cena (espaccedilo

em que se encontra o modelo) em dois sub-espaccedilos dentro ou fora do modelo

Pauly faz esta subdivisatildeo da seguinte forma

Como a superfiacutecie que determina o modelo eacute orientada (conteacutem vetores

normais agrave superfiacutecie que apontam para ldquoforardquo do modelo) Pauly considera que

um modelo natildeo soacutelido divide o espaccedilo em dois sub-espaccedilos um ldquoforardquo do

modelo (os vetores normais apontam para este sub-espaccedilo) e um que estaacute

ldquodentrordquo do modelo (os vetores normais apontam para direccedilatildeo oposta a este sub-

espaccedilo) Por exemplo um plano eacute representado como um conjunto de surfels

contidos num determinado espaccedilo geomeacutetrico plano π Cada surfel conteacutem um

vetor normal direcionado Este modelo divide entatildeo o espaccedilo em dois sub-

espaccedilos o sub-espaccedilo que eacute apontado por estes surfels (considerado ldquoforardquo do

modelo) e o sub-espaccedilo que estaacute na direccedilatildeo oposta (considerado ldquodentrordquo do

modelo) Desta forma ele aplica as classificaccedilotildees de ldquodentrordquo e ldquoforardquo de um

modelo tambeacutem a modelos natildeo soacutelidos A partir desta consideraccedilatildeo as

Operaccedilotildees Booleanas com Pontos 41

operaccedilotildees booleanas satildeo realizadas com os modelos natildeo soacutelidos da mesma

forma que com os modelos soacutelidos

Para determinar esta classificaccedilatildeo (dentro ou fora do modelo) Pauly utiliza

a Regra 2 Para pesquisa do surfel mais proacuteximo o meacutetodo usa a estrutura Kd-

tree [16] e tambeacutem o algoritmo ANN [16] No entanto o meacutetodo apresenta uma

restriccedilatildeo da Regra 2 ela soacute deve ser usada para classificaccedilotildees de pontos x se

a distacircncia x-p for maior que o espaccedilamento da amostragem local ηp em p

Este espaccedilamento da amostragem local ηp em p eacute um caacutelculo aproximado da

distacircncia meacutedia entre os surfels vizinhos a p Se x estaacute muito proacuteximo agrave

superfiacutecie a classificaccedilatildeo pode falhar Neste caso ele calcula o ponto exato de

S mais proacuteximo a x usando a projeccedilatildeo MLS (ldquoMoving Least Squaresrdquo)

Por questotildees de melhoria de desempenho utiliza-se o fato de que sendo

Ωp (x) a classificaccedilatildeo do ponto x em relaccedilatildeo agrave amostragem P tem-se que Ωp (x)

= Ωp (xrsquo) para todos os pontos de xrsquo que estatildeo dentro da esfera de centro x e

raio igual a x-p - ηp (onde p eacute o surfel mais proacuteximo e ηp eacute o espaccedilamento

local da amostragem em p acima citado) Ou seja sendo x um ponto qualquer p

o surfel mais proacuteximo a x ηp eacute o espaccedilamento local da amostragem em p se

desenharmos uma esfera com centro x e raio igual a x-p - ηp temos que

todos os pontos xrsquo que estatildeo dentro da esfera teratildeo a mesma classificaccedilatildeo de x

Desta forma o nuacutemero de vezes que a classificaccedilatildeo eacute feita (pesquisando-se o

surfel mais proacuteximo ao ponto e usando a Regra 2) diminui em ateacute 90 Assim

em geral a classificaccedilatildeo de um surfel eacute obtida a partir do seu surfel vizinho

Dados

S1 a superfiacutecie MLS de contorno que define o modelo A

S2 a superfiacutecie MLS de contorno que define o modelo B

P1 o conjunto de surfels que representa a superfiacutecie S1

P2 o conjunto de surfels que representa a superfiacutecie S2

Ωp1 (x) a classificaccedilatildeo do ponto p em relaccedilatildeo a uma amostragem P1

Q1 o subconjunto de P1 que vai compor o resultado

Ωp2 (x) a classificaccedilatildeo do ponto p em relaccedilatildeo a uma amostragem P2

Q2 o subconjunto de P2 que vai compor o resultado

Os conjuntos Q1 e Q2 satildeo obtidos por meio da Tabela 1 mostrada abaixo

Operaccedilotildees Booleanas com Pontos 42

Tabela 1 Classificaccedilatildeo para operaccedilotildees booleanas

Para o tratamento de interseccedilatildeo neste meacutetodo satildeo computados pontos

que caem exatamente na curva de interseccedilatildeo e estes satildeo acrescentados ao

modelo resultado Estes pontos satildeo determinados de forma que a densidade da

amostragem vai crescendo agrave medida que os surfels se aproximam da curva de

interseccedilatildeo e convergem para este ponto de interseccedilatildeo como mostra a Figura

13

(a) (b) (c)

Figura 13 - Os novos surfels satildeo colocados exatamente na curva de interseccedilatildeo

e convergem para o ponto de interseccedilatildeo

A Figura 14 mostra o processo de encontrar os surfels que caem nesta

curva de interseccedilatildeo Inicialmente satildeo encontrados todos os pontos de Q1 e Q2

que estatildeo proacuteximos agrave curva de interseccedilatildeo por meio da funccedilatildeo de distacircncia do

operador de projeccedilatildeo MLS Em seguida procura-se todos os pares mais

proacuteximos (q1 є Q1 q2 є Q2 ) e computa-se o ponto q na curva de interseccedilatildeo da

seguinte forma (veja a Figura 14)Seja r o ponto na linha de interseccedilatildeo dos dois

planos tangentes em q1 e q2 e que estaacute mais proacuteximo a estes dois pontos isto eacute

que minimiza a distacircncia ||r-q1|| + ||r-q2|| r eacute a primeira aproximaccedilatildeo de q e agora

pode ser projetado sobre S1 e S2 para obter dois novos pontos de partida q1rsquo e q2

rsquo

para a iteraccedilatildeo Este procedimento pode ser repetido iterativamente ateacute que os

pontos q1 e q2 convirjam ao ponto q na curva de interseccedilatildeo Normalmente este

processo requer menos de trecircs iteraccedilotildees

Operaccedilotildees Booleanas com Pontos 43

(a) (b)

(c)

Figura 14 (a) Suponhamos a reta que eacute a interseccedilatildeo do plano tangente a S1 em q1 e o

plano tangente a S2 em q2 O ponto r eacute o ponto desta reta que estaacute mais proacuteximo a q1 e

q2 (b) r eacute projetado sobre S1 e S2 obtendo-se q1acute e q2acute dois novos pontos de partida

para nova iteraccedilatildeo (c) A nova iteraccedilatildeo gera r que eacute uma aproximaccedilatildeo melhor de q

Pauly faz o tratamento de arestas vivas em tempo de renderizaccedilatildeo Ele

faz uma alteraccedilatildeo no renderizador Marca os surfels de interseccedilatildeo e ao

renderizaacute-los satildeo cortados para gerar uma aresta viva

44 Validade da Regra 2

Os dois meacutetodos analisados nesta dissertaccedilatildeo utilizam a seguinte regra

para a classificaccedilatildeo de um surfel

Regra 2 dado um volume V determinado por uma superfiacutecie de contorno

S uma amostragem P da superfiacutecie S um ponto x qualquer um ponto p є P que

eacute a amostra mais proacutexima a x um vetor ny normal a S em p e orientado para

fora de S temos que (x ndash p) np gt 0 x notinV

Em [16] eacute colocado que esta regra eacute tirada da seguinte propriedade da

geometria diferencial (aqui chamada Propriedade 1)

Propriedade 1 Dado um volume V determinado por uma superfiacutecie de

contorno S contiacutenua e duplamente diferenciaacutevel um ponto x qualquer um ponto

Operaccedilotildees Booleanas com Pontos 44

y є S que eacute o ponto de S mais proacuteximo a x um vetor ny normal a S em y e

orientado para fora de S temos que (x ndash y) ny gt 0 x notinV

A Figura 15 ilustra esta propriedade

Figura 15 Para verificar se o ponto x estaacute fora de um contorno C encontra-se o ponto y

de C Se o produto interno entre a normal em y e o vetor que liga y a x for maior que

zero entatildeo x estaacute fora de C senatildeo estaacute dentro de C

Pauly assume que tendo uma amostragem P da superfiacutecie S podemos

usar a Propriedade 1 substituindo y por p o surfel mais proacuteximo ao ponto x (x ndash

p) np gt 0 x notinV (Regra 2) Esta amostragem P em seu trabalho eacute

(aproximadamente) uma ldquoamostragem adequadardquo Tambeacutem seu tratamento de

interseccedilatildeo cria uma aproximaccedilatildeo dela (seccedilatildeo 43) Empiricamente a

ldquodiscretizaccedilatildeo da propriedaderdquo eacute vaacutelida a partir desta suposiccedilatildeo Mas isso natildeo foi

demonstrado teoricamente em seu trabalho

Pauly coloca em [16] que natildeo existe ainda uma teoria matemaacutetica rigorosa

de amostragem anaacuteloga a teoria de Fourier para superfiacutecies discretas

A melhor aproximaccedilatildeo teoacuterica para esta aacuterea eacute o uso do Eixo Medial que

foi colocado em [10] Vamos descrever este trabalho brevemente nesta seccedilatildeo

Este trabalho apresenta um algoritmo de reconstruccedilatildeo de superfiacutecie que parte de

uma amostragem adequada (abaixo definida) de pontos e obteacutem uma malha

que eacute topologicamente equivalente agrave superfiacutecie do objeto e agrave medida que a

densidade da amostragem cresce a saiacuteda converge para esta superfiacutecie

Para definir amostragem adequada o trabalho parte do conceito de Eixo

Medial

Operaccedilotildees Booleanas com Pontos 45

ldquoEixo Medialrdquo de uma superfiacutecie 2D posicionada no R3 eacute o conjunto

(fechado) de pontos pi para os quais buscando-se o ponto da superfiacutecie que

estaacute mais proacuteximo a pi mais de um ponto pertencentes a esta superfiacutecie satildeo

encontrados A Figura 16 abaixo ilustra o Eixo Medial em 2D

Figura 16 [10] As curvas de cor mais clara satildeo o Eixo Medial da curva em preto

Em duas dimensotildees os veacutertices de Voronoi de uma amostragem densa

aproximam o ldquoEixo Medialrdquo da amostragem (mas esta propriedade natildeo se

estende a 3D) A Figura 17 mostra o Eixo Medial em 3D

Figura 17 [10] Em 3D geralmente o Eixo Medial eacute uma superfiacutecie 2D (em cor mais

clara) Aqui o quadrado eacute o Eixo Medial da superfiacutecie transparente que o contorna

Podemos definir agora a amostragem adequada da seguinte forma

Supondo uma superfiacutecie suave que quer dizer uma 2-manifold duplamente

diferenciaacutevel posicionada no R3 uma ldquoamostragem adequadardquo desta superfiacutecie eacute

aquela na qual a densidade da amostragem eacute (pelo menos) inversamente

proporcional agrave distacircncia ao ldquoEixo Medialrdquo A Figura 18 mostra uma amostragem

adequada

Operaccedilotildees Booleanas com Pontos 46

Figura 18 [10] A figura mostra o diagrama de Voronoi de uma amostragem de pontos S

Da mesma forma que o a amostragem aproxima a curva os veacutertices de Voronoi

aproximam o Eixo Medial

Na praacutetica na reconstruccedilatildeo da superfiacutecie uma aproximaccedilatildeo deste ldquoEixo

Medialrdquo eacute computada (devido agrave dificuldade de computaacute-lo exatamente e em

alguns casos ateacute impossibilidade)

Melhorias Propostas 47

5 Melhorias Propostas

No capiacutetulo 4 apresentamos dois meacutetodos que realizam operaccedilotildees

booleanas em modelos por pontos o meacutetodo de Adams e Dutreacute [2] e o meacutetodo

de Pauly[3] Para esta dissertaccedilatildeo usamos o meacutetodo de Adams e Dutreacute [2] e

propomos as seguintes melhorias

- Alteramos o momento em que eacute feita a classificaccedilatildeo da octree Fazemos

esta classificaccedilatildeo durante a sua criaccedilatildeo Os noacutes filhos de um noacute pai P qualquer

satildeo classificados logo apoacutes a criaccedilatildeo de todos estes filhos de P

independentemente do restante da octree ter sido criada Isso pode ser feito

porque a octree eacute construiacuteda na ordem raiz-esquerda-direita (preorder

traversal) e portanto apoacutes todos os filhos de um noacute pai serem criados a parte

necessaacuteria da octree para a classificaccedilatildeo destes filhos jaacute estaacute criada

- A classificaccedilatildeo da octree eacute otimizada classificando-se os cantos dos seus

noacutes como dentro ou fora do modelo Na classificaccedilatildeo de um noacute n1 a partir de seu

vizinho n2 se os cantos que satildeo comuns a n1 e n2 tiverem a mesma

classificaccedilatildeo esta seraacute dada ao noacute Assim diminuiacutemos o nuacutemero de pesquisas

pelo surfel mais proacuteximo que eacute a parte criacutetica da classificaccedilatildeo dos noacutes da octree

em termos de tempo de processamento

- Acrescentamos um valor miacutenimo (maior que zero) para o nuacutemero de

surfels contidos em um noacute que eacute uma das condiccedilotildees de parada na criaccedilatildeo da

octree Verificamos que desta forma diminui-se a chance de erro na classificaccedilatildeo

de partes criacuteticas como ldquoarestas vivasrdquo

Uma comparaccedilatildeo entre a nossa implementaccedilatildeo e a de Pauly tambeacutem seraacute

feita no capiacutetulo 6

51 Descriccedilatildeo do algoritmo

O algoritmo implementado para esta dissertaccedilatildeo baseado no meacutetodo de

Adams e Dutreacute [2] pode ser dividido nas seguintes partes Criaccedilatildeo e

classificaccedilatildeo de uma octree para cada modelo Teste DentroFora Criaccedilatildeo do

modelo resultado Natildeo foi implementado tratamento especial algum de

interseccedilatildeo para o nosso plugin As proacuteximas seccedilotildees apresentam estas partes

Melhorias Propostas 48

511 Criaccedilatildeo e classificaccedilatildeo de uma octree para cada modelo

As ideacuteias do algoritmo satildeo aqui ilustradas em 2D mas a extensatildeo delas

para 3D eacute feita facilmente

Para cada modelo a octree eacute criada e classificada da seguinte forma

Figura 19-Quadtree classificada Os noacutes mais escuros estatildeo fora do modelo os mais claros dentro e os em tom intermediaacuterio satildeo noacutes de contorno

Gera-se uma ldquocaixa envolventerdquo do modelo contendo todos os surfels e

cria-se o noacute raiz da octree que corresponde a esta ldquocaixa envolventerdquo Este noacute

raiz eacute subdividido em oito filhos e seus surfels satildeo distribuiacutedos entre eles Ao

inveacutes de testarmos os valores de xy e z para cada surfel a fim de determinar

para qual filho ele iraacute utilizamos listas auxiliares Primeiro os surfels satildeo

subdivididos em dois grupos pelos valores de x e armazenados em uma lista

auxiliar Em seguida cada uma das listas eacute subdividida pelo valor de y e as

quatro listas obtidas seratildeo subdivididas pelo valor de z Ao final teremos 8 listas

de surfels cada uma delas pertencente a um filho

Cada noacute seraacute entatildeo novamente subdividido enquanto contiver um nuacutemero

de surfels gt nmin (valor preacute-definido) ou enquanto a profundidade da aacutervore lt pmax

(valor preacute-definido) Na figura 19 pmax = 3 e nmin = 3

Melhorias Propostas 49

Figura 20-O noacute cheio eacute dividido em trecircs partes agrave esquerda a regiatildeo estaacute dentro do modelo agrave direita estaacute fora e entre as duas linhas que dividem o noacute estaacute a regiatildeo que conteacutem os surfels

Os noacutes cheios recebem um tratamento especial Eles satildeo subdivididos em

trecircs partes da seguinte forma uma que estaacute fora do modelo outra que estaacute

dentro e uma que conteacutem os surfels Esta subdivisatildeo eacute feita por meio da criaccedilatildeo

de dois planos paralelos que dividem o noacute Para determinar estes planos

calcula-se o vetor nm igual agrave meacutedia das normais dos surfels do noacute nm = sum ns

sum ns onde ns eacute a normal de cada surfel do noacute Em seguida encontra-se o

surfel com maior produto interno entre a sua normal e a normal meacutedia

d1=Max(nm ٠ ns) Este surfel juntamente com a normal meacutedia define um dos

planos Encontra-se tambeacutem o surfel com menor produto interno entre a sua

normal e a normal meacutedia d2=Min (nm ٠ ns) Este surfel juntamente com a normal

meacutedia define o outro plano (Figura 20) Se o noacute conteacutem surfels de superfiacutecies de

orientaccedilotildees diferentes ele natildeo seraacute subdividido ou seja os planos coincidiratildeo

com os planos que delimitam o proacuteprio noacute Este teste foi implementado da

seguinte forma escolhe-se um surfel qualquer do noacute Calcula-se o produto

interno entre a normal deste surfel e as outras normais dos outros surfels deste

noacute Se algum produto interno for menor que zero este noacute natildeo seraacute subdividido

Apoacutes a etapa de subdivisatildeo classificam-se os oito cantos deste noacute como

dentro ou fora do modelo por meio da classificaccedilatildeo de um ponto que

descreveremos na sub-seccedilatildeo 5111

Melhorias Propostas 50

a b

c d

Figura 21-O noacute a eacute classificado pelo noacute c o noacute d tambeacutem eacute classificado pelo noacute c a classificaccedilatildeo do noacute a eacute propagada para o noacute b

Jaacute os noacutes vazios da octree seratildeo classificados como ldquodentrordquo ou ldquoforardquo do

modelo da seguinte forma cada noacute folha vazio eacute classificado a partir de um de

seus irmatildeos vizinhos adjacentes Se ele possuir um vizinho adjacente cheio ele

seraacute classificado por este vizinho se natildeo possuir os vizinhos adjacentes seratildeo

classificados primeiro e ele teraacute esta mesma classificaccedilatildeo (Figura 21) Como tem

que existir sempre pelo menos um noacute cheio entre os filhos de um noacute pai entatildeo

sempre esta classificaccedilatildeo poderaacute ser feita Com a classificaccedilatildeo de todos os

filhos tem-se tambeacutem a classificaccedilatildeo dos cantos do noacute pai

Mf03c003fmx a b

Figura 22-Os cantos a e b do noacute cheio possuem a mesma classificaccedilatildeo fora do modelo Esta classificaccedilatildeo foi dada ao noacute vazio adjacente

Melhorias Propostas 51

Para classificar um noacute vazio por meio de um noacute cheio verificam-se os

cantos comuns destes dois noacutes se todos os cantos tiverem a mesma

classificaccedilatildeo esta seraacute dada ao noacute vazio (Figura 22) Se houver classificaccedilotildees

diferentes escolhe-se o surfel do noacute cheio mais proacuteximo ao noacute vazio faz-se o

produto interno entre a normal deste surfel e o vetor que liga o centro do noacute

cheio ao centro do noacute vazio (ou o vetor que liga o surfel ao centro do noacute vazio)

Se o produto interno for maior que zero o noacute eacute classificado como ldquoforardquo senatildeo eacute

classificado como ldquodentrordquo Para encontrar o surfel (pertencente a um noacute cheio)

mais proacuteximo ao noacute vazio existem dois casos

- O noacute cheio eacute folha percorre-se toda a lista de surfels e escolhe o surfel

mais proacuteximo da fronteira entre o noacute cheio e o vazio

- O noacute cheio natildeo eacute um noacute folha percorrem-se os filhos do noacute cheio ou seja

esta pesquisa eacute feita descendo na octree a partir do noacute cheio procurando o

surfel mais proacuteximo agrave fronteira do pai com o noacute vazio a ser classificado

Classificando o centro do noacute vazio todo o noacute deve ter a mesma

classificaccedilatildeo pois este noacute natildeo conteacutem surfels Para encontrar o surfel do noacute

vazio mais proacuteximo da fronteira entre o noacute cheio e o vazio basta testar o valor da

coordenada se a fronteira eacute o lado direito do noacute cheio escolhe-se o surfel com

maior coordenada lsquoxrsquo se eacute o lado esquerdo escolhe-se o surfel com menor lsquoxrsquo

se lado superior surfel com maior lsquoyrsquo etc A seguir apresentamos a classificaccedilatildeo

de um ponto qualquer pertencente a um noacute cheio

Figura 23- Quadtree classificada

Melhorias Propostas 52

5111 Classificaccedilatildeo de um ponto de um noacute cheio

Figura 24 [2] A normal n eacute a normal meacutedia e os surfels s1 e s2 juntamente com a normal

n definem as retas que dividem o noacute O ponto a estaacute fora do modelo e o ponto b estaacute

dentro do modelo

Para um ponto localizado dentro do noacute faz-se o seguinte teste se o noacute foi

dividido testa-se de acordo com a divisatildeo do noacute se o ponto estaacute na parte do noacute

que estaacute dentro do modelo ele eacute classificado como ldquodentrordquo se o ponto estaacute na

parte que estaacute fora do modelo ele eacute classificado como ldquoforardquo (Figura 24) se o

ponto estaacute na parte que conteacutem os surfels encontra-se o surfel s pertencente ao

noacute mais proacuteximo do ponto e o classifica de acordo com s seja ns a normal em s

cs a coordenada de s cp a coordenada do ponto Se (cp - cs )٠ ns gt 0 o ponto

seraacute classificado como ldquoforardquo Senatildeo seraacute classificado como ldquodentrordquo

Se o noacute natildeo foi dividido em planos esta classificaccedilatildeo a partir do surfel

mais proacuteximo seraacute sempre feita

512 Teste DentroFora

Melhorias Propostas 53

Figura 25-Duas circunferecircncias e suas quadtrees correspondentes

O Teste DentroFora classifica os surfels de um modelo como dentro ou

fora de outro modelo ou na sua interseccedilatildeo Este teste foi aqui implementado

exatamente como foi proposto em Adams e Dutreacute [2] exceto que natildeo foi

implementado o meacutetodo TINN - Triangle Inequality Nearest Neighbour [19]

Cada octree eacute percorrida verificando-se se os seus noacutes ou surfels estatildeo dentro

fora ou no contorno do outro modelo (Figura 25) Sejam A e B duas octrees e

queremos classificar a octree A As duas octrees (AB) satildeo percorridas partindo

da raiz

Para cada noacute de A existem quatro casos (Figura 26) Para testar estas

situaccedilotildees os boxes dos noacutes satildeo aumentados de rmax o raio do maior surfel do

modelo Isto eacute feito para compensar o fato de que o surfel natildeo eacute apenas um

ponto mas sim considerado como um disco

Os quatro casos satildeo

Se o noacute de A natildeo intersecta B entatildeo todos os surfels deste noacute satildeo

classificados como fora

Se o noacute de A intersecta apenas noacutes de B que estatildeo fora do modelo

todos os surfels deste noacute satildeo fora

Se o noacute de A intersecta apenas noacutes de B que estatildeo dentro do modelo

todos os surfels deste noacute satildeo dentro

Melhorias Propostas 54

Se o noacute de A intersecta noacutes de B que estatildeo dentro e tambeacutem noacutes de B

que estatildeo fora testa-se se este noacute de A eacute ou natildeo folha Se natildeo for folha

percorre-se os filhos deste noacute de A ateacute encontrar um noacute folha cheio que

intersecta B Para cada surfel sa deste noacute folha de A encontra-se o surfel de B

mais proacuteximo e classifica-se a coordenada de sa da forma apresentada na seccedilatildeo

5111 Seja sb o surfel usado na classificaccedilatildeo de sa Se os discos de sb e sa

se intersectam sa eacute classificado como ldquointerseccedilatildeordquo

(a) (b)

(c) (d)

Figura 26- a modelos natildeo se intersectam b modelo intersecta noacutes fora c modelo intersecta apenas noacutes dentro d modelo intersecta noacutes dentro e noacutes fora

513 Criaccedilatildeo do modelo resultado

Um novo modelo eacute criado com os seguintes surfels (de acordo com a

operaccedilatildeo booleana escolhida pelo usuaacuterio - veja Regra 1 da seccedilatildeo 41)

Uniatildeo - surfels de A que estatildeo fora de B + surfels de B que estatildeo fora de A

Melhorias Propostas 55

Interseccedilatildeo - surfels de A que estatildeo dentro de B + surfels de B que estatildeo

dentro de A

Diferenccedila A-B - surfels de A que estatildeo fora de B + surfels de B que estatildeo

dentro de A (com orientaccedilatildeo invertida)

Como natildeo foi implementado tratamento especial algum de interseccedilatildeo para

o nosso plugin os surfels que se intersectam satildeo mantidos no modelo resultado

final sem modificaccedilotildees

Descrito o algoritmo vejamos a seguir a sua implementaccedilatildeo

52 Implementaccedilatildeo

Este algoritmo foi implementado na forma de um plugin para o software

PointShop 3D [11] Este plugin foi desenvolvido na linguagem C e no sistema

operacional Windows

A escolha deste tipo de implementaccedilatildeo permitiu-nos usar o software

PointShop para os testes do algoritmo Estes testes foram feitos com os modelos

disponibilizados para o PointShop [11] Nesta seccedilatildeo apresentaremos o software

PointShop e as principais estruturas de dados usadas em nosso plugin

O Pointshop eacute um software aberto com seu coacutedigo disponiacutevel e preparado

para trabalhar com plugins Eacute um software de ediccedilatildeo de modelos 3D por pontos

Ele permite aleacutem de visualizar o modelo alterar as suas caracteriacutesticas como

cor brilho e fazer mapeamento de textura iluminaccedilatildeo filtragem (Figura 27)

Melhorias Propostas 56

Figura 27-Software PointShop 3D com dois modelos carregados na sua cena

Aleacutem disso pode-se criar uma cena com vaacuterios modelos e visualizaacute-los de

qualquer ponto de vista Implementa o virtual trackball para rotacionaacute-los e

transladaacute-los Usa uma iluminaccedilatildeo simples direcional A sua arquitetura eacute

extensiacutevel permite que o usuaacuterio adicione seus proacuteprios componentes ao

sistema Possui trecircs tipos de componentes

ldquoToolsrdquo fornece funcionalidades para ediccedilatildeo interativa de superfiacutecie Satildeo

disponibilizados na ldquotoolbarrdquo

Plugins fornece funcionalidades para processar em um soacute passo

modelos ou partes deles selecionadas Satildeo disponibilizados no menu ldquoPluginsrdquo

Renderes fornece funcionalidades de display para os modelos

Para esta dissertaccedilatildeo foi escolhida a construccedilatildeo do componente Plugin

por adequar-se agrave nossa proposta e ser a mais simples de ser construiacuteda O

PointShop [11] jaacute conteacutem uma tool que executa operaccedilotildees booleanas e

deformaccedilatildeo free-form sobre os modelos carregados na cena usando o meacutetodo

de Pauly [3] apresentado no capiacutetulo 4 O nosso plugin Operaccedilotildees Booleanas

implementa o algoritmo descrito na seccedilatildeo anterior baseado na proposta de

Melhorias Propostas 57

Adams e Dutreacute [2] Uma comparaccedilatildeo entre o nosso plugin e a tool de Pauly [3] eacute

feita no capiacutetulo 6

Figura 28-Menu do PointShop com o plugin e as opccedilotildees para operaccedilotildees booleanas

Para se executar o plugin o usuaacuterio precisa carregar dois modelos na

cena do PointShop acionar o plugin informando a operaccedilatildeo que seraacute executada

O plugin executaraacute o algoritmo acima proposto e carregaraacute o resultado na cena

do Pointshop retirando os modelos anteriores

521 Estruturas de Dados

Como vimos o software PointShop [11] trabalha com modelos por pontos

Um modelo deste software descrito na seccedilatildeo 42 conteacutem todas as informaccedilotildees

que o algoritmo proposto em Bart [2] necessita Abaixo relacionamos as

Melhorias Propostas 58

principais estruturas de dados do PointShop usadas no plugin e as principais

estruturas de dados do nosso plugin

As principais classes do PointShop usadas no plugin satildeo

Classe Scene

Classe Objects

Classe SurfelColections

Classe Surfel

Classe StatusBar

Classe Transformer

A hierarquia de dados eacute a seguinte a Scene conteacutem vaacuterios Objects os

quais conteacutem SurfelColections Cada SurfelColections conteacutem Surfels que

suportam uma ou mais propriedades tais como cor difusa cor especular

Classe Scene Classe que representa uma cena que conteacutem modelos

Classe Object Um modelo eacute representado pela classe Object que

conteacutem uma SurfelCollection e as matrizes de transformaccedilatildeo para rotaccedilatildeo

escala e translaccedilatildeo Cada Object eacute identificado pelo seu nome que eacute uacutenico na

Scene O meacutetodo getUniqueName retorna um nome uacutenico Cada Object tem sua

proacutepria matriz de transformaccedilatildeo que pode ser modificada com setRotation

rotate setPosition translate setScale e scale Objects podem ser copiados com

copy Objects consiste em um conjunto de surfels os quais podem ser

recuperados pela getSurfelCollection O Object pode ser ativado com

setActiveObject e recuperado com getActiveObject

Objects podem ser adicionados ou removidos com addObject e

removeObject Os Objects podem ser obtidos pela getFirstObject e

getNextObject

Classe SurfelCollection representa o conjunto de surfels de um modelo

Cada surfelcollection consiste em um conjunto de surfels (SurfelInterface) de

tamanho obtido por getNofSurfels Os surfels podem ser recuperados com

getFirstSurfel getCurrentSurfel e getNextSurfel

A SurfelCollection conteacutem um PropertyDescriptor e uma SurfelList

A SurfelList eacute uma lista duplamente encadeada de surfels Possui os

atributos firstSurfel lastSurfel currentSurfel que satildeo ponteiros para uma

SurfelInterface nSurfels que eacute o nuacutemero de Surfels

A SurfelInterface define a API para os surfels que satildeo os menores

elementos que compotildeem um Object Podem ser considerados como pontos com

uma normal que define a orientaccedilatildeo do ciacuterculo (ou elipse) que seraacute desenhado

Melhorias Propostas 59

tatildeo logo o surfel seja renderizado Tem como atributos dois ponteiros (next e

prev) para SurfelInterface

PropertyDescriptor consiste em ateacute 32 valores descrevendo quais as

propriedades a SurfelInterface suporta

Classe Surfel classe que representa o surfel

Classe StatusBar classe que imprime mensagens na tela Os plugins

podem mandar mensagens para o usuaacuterio pela StatusBar

Mensagens texto podem ser impressas com showMessage O progresso

de uma operaccedilatildeo pode ser indicado com setProgress ou resetProgress

Classe Transformer representa a transformaccedilatildeo entre sistemas de

coordenadas Esta classe fornece meacutetodos para transformar pontos e vetores

entre os diferentes sistemas de coordenadas do Pointshop

A seguir apresentamos as principais estruturas de dados do plugin

Operaccedilotildees Booleanas

As principais estruturas de dados do plugin satildeo boundingbox tree no

lista_surfel surfel

Boundingbox conteacutem dois pontos 3D que definem uma caixa que conteacutem

o modelo um ponto com menores coordenadas xy e z e outro ponto com

maiores xyz

Tree representa a octree do modelo Cada registro conteacutem um ponteiro

para um noacute e oito ponteiros para as 8 octrees filhas

No representa um noacute da octree Conteacutem os seguintes dados

- localizaccedilatildeo do noacute que eacute o canto inferior esquerdo do noacute

- lista_surfel (preenchida apenas para noacutes folha cheios)

- quantidade de surfels do noacute

- classificaccedilatildeo do noacute como dentro fora ou contorno

- classificaccedilatildeo do noacute em relaccedilatildeo a outro modelo

- indica se o noacute eacute folha ou natildeo

- vetor que eacute a meacutedia das normais dos surfels do noacute

- ponto que eacute a meacutedia das localizaccedilotildees dos surfels do noacute

- surfel que tem (entre todos os surfels do noacute) o maior produto interno

entre a sua normal e a normal meacutedia

- surfel que tem (entre todos os surfels do noacute) o menor produto interno

entre a sua normal e a normal meacutedia

- produto interno maacuteximo e miacutenimo entre as normais dos surfels do noacute e a

normal meacutedia deste noacute

Melhorias Propostas 60

- indica se o noacute conteacutem surfels com normais em sentido oposto (produto

interno entre elas eacute menor que zero)

- classificaccedilatildeo dos oito cantos do noacute

lista_surfels lista em que cada registro conteacutem um apontador para um

surfel e um apontador para o proacuteximo registro

surfel representa o surfel da octree Conteacutem a classificaccedilatildeo em relaccedilatildeo a

outro modelo e um ponteiro para o surfel do Poinshop

Resultados 61

6 Resultados

Neste capiacutetulo apresentamos os testes realizados com o plugin para o

PointShop implementado para esta dissertaccedilatildeo a comparaccedilatildeo deste plugin com

o plugin de Pauly [3] e a comparaccedilatildeo entre o meacutetodo de Adams e Dutreacute [2] e o

meacutetodo de Pauly [3]

61 Testes

Os testes foram feitos em um PC x86 Family 6 261600 KB de RAM sem

placa graacutefica sistema operacional Windows 2000 O plugin foi implementado na

linguagem C

Os modelos usados para os testes satildeo modelos disponibilizados no

PointShop [11] Vale lembrar que o meacutetodo implementado em nosso plugin eacute

restrito a modelos soacutelidos e portanto foram usados apenas estes modelos

soacutelidos para os testes

O modelo na Figura 29 que eacute um dos modelos disponibilizados no

PointShop [11] foi usado para mostrar o resultado das operaccedilotildees realizadas

pelo plugin implementado nesta dissertaccedilatildeo O modelo Igea eacute um modelo soacutelido

que conteacutem 134345 surfels

Resultados 62

Figura 29-Modelo do PointShop Igea

Para realizar as operaccedilotildees este modelo foi carregado na cena do

PointShop duas vezes e um deles colorido de vermelho As Figuras 30 31 32

mostram o resultado da operaccedilatildeo de uniatildeo interseccedilatildeo e diferenccedila

respectivamente Os nuacutemeros de surfels dos modelos resultantes satildeo mostrados

na Tabela 2

Resultados 63

Figura 30-Resultado da uniatildeo de duas Igeas

Figura 31-Resultado da interseccedilatildeo de duas Igeas

Resultados 64

Figura 32-Resultado da diferenccedila entre duas Igeas

Tabela 2-Nuacutemero de surfels dos modelos resultantes

Observamos que o nuacutemero de surfels dos modelos resultantes estaacute

coerente com as figuras dos seus modelos

Para avaliar o tempo de processamento das operaccedilotildees foram realizados

vaacuterios testes com o objetivo de obter uma meacutedia dos tempos de realizaccedilatildeo de

cada operaccedilatildeo Tambeacutem foram armazenados os tempos da criaccedilatildeo das duas

octrees e da classificaccedilatildeo de todos os surfels dos dois objetos (como dentro ou

fora do outro modelo) Estes testes foram feitos usando o modelo Igea A meacutedia

dos tempos de processamento foi calculada e os resultados satildeo mostrados na

Tabela 3 Verificamos que o maior tempo gasto eacute para criaccedilatildeo das octrees

Verificamos tambeacutem que este resultado apresentado eacute similar ao resultado

verificado empiricamente com o plugin de Pauly [3] Os tempos gastos para

realizar as operaccedilotildees satildeo similares e o maior tempo gasto no plugin de Pauly

tambeacutem eacute para inicializaccedilatildeo de suas estruturas de dados que incluem a kd-tree

Operaccedilatildeo Nuacutemero de surfels do modelo resultado

Uniatildeo 189715

Interseccedilatildeo 72225

Diferenccedila 134552

Resultados 65

Operaccedilatildeo Criaccedilatildeo das

Octrees (seg)

Classificaccedilatildeo

(seg)

Criaccedilatildeo do

resultado (seg)

Total (seg)

Uniatildeo 39375 1324 18925 7154

Interseccedilatildeo 38585 1585 09547 63982

Diferenccedila 399875 1504 1729 729475

Tabela 3- Meacutedia dos tempos de processamento para as operaccedilotildees com duas Igeas

Com o objetivo de expor melhor os resultados deste trabalho

apresentamos abaixo mais um teste das operaccedilotildees booleanas usando o nosso

plugin Os modelos usados para este segundo teste satildeo o Max Planck e o Male

ambos modelos soacutelidos disponibilizados no PointShop Estes modelos satildeo

mostrados nas figura 33 e 34

O primeiro Max Planck conteacutem 52809 surfels

Figura 33-Modelo do PointShop MaxPlanck

O segundo modelo abaixo Male conteacutem 148138 surfels

Resultados 66

Figura 34-Modelo do PointShop Male

As Figuras 353637 mostram o resultado da operaccedilatildeo de uniatildeo interseccedilatildeo

e diferenccedila respectivamente usando os dois modelos acima Podemos observar

pela figura 35 que o resultado da operaccedilatildeo de diferenccedila neste caso gerou um

modelo resultado com trecircs partes desconexas Os nuacutemeros de surfels de cada

modelo resultado satildeo mostrados na Tabela 5

Figura 35- Resultado da Uniatildeo do modelo Male com MaxPlanck

Resultados 67

Figura 36-Resultado da interseccedilatildeo do modelo Male com o MaxPlanck

Figura 37-Resultado da diferenccedila do modelo Male do modelo MaxPlanck

As meacutedias de tempos de processamento foram calculadas da mesma

forma que o primeiro teste com o modelo Igea acima apresentado Os

resultados satildeo mostrados na Tabela 4 Podemos observar que este teste

Resultados 68

apresenta tempos um pouco menores que o teste com o modelo Igea Isto se

deve ao fato de que o modelo MaxPlanck ser significativamente menor que o

modelo Igea MaxPlanck possui 52809 surfels e Igea conteacutem 134345 surfels

Operaccedilatildeo Criaccedilatildeo das

Octrees (seg)

Classificaccedilatildeo

(seg)

Criaccedilatildeo do

resultado (seg)

Total

(seg)

Uniatildeo 3012 1254 102 5285

Interseccedilatildeo 2985 0901 0861 4747

Diferenccedila 2965 0911 0791 4667

Tabela 4-Tempo de processamento das operaccedilotildees com os modelos MaxPlanck e Male

Operaccedilatildeo Nuacutemero de surfels do resultado

Uniatildeo 126532

Interseccedilatildeo 88414

Diferenccedila 77635

Tabela 5-Nuacutemero de surfels dos modelos resultados das operaccedilotildees com os modelos MaxPlanck e Male

Em seguida apresentaremos uma comparaccedilatildeo entre o nosso plugin e o

plugin de Pauly[3] e tambeacutem uma comparaccedilatildeo entre o meacutetodo de Adams e Dutreacute

[2] e o meacutetodo de Pauly [3]

62 Comparaccedilatildeo entre os dois meacutetodos que realizam operaccedilotildees booleanas

A comparaccedilatildeo entre os meacutetodos de Pauly[3] e de Adams e Dutreacute foi feita

em termos de tempo de processamento e em termos conceituais Em termos de

tempo de processamento comparamos o plugin de Pauly[3] com o nosso plugin

Em termos de tempo de processamento verifica-se empiricamente que os

dois meacutetodos apresentam tempos bastante similares Entretanto o tempo de

processamento do algoritmo aqui implementado ainda pode ser melhorado com

Resultados 69

o uso do meacutetodo TINN [19] que foi proposto em Adams[2] - para otimizar a

pesquisa do surfel mais proacuteximo a um ponto que estaacute localizado na regiatildeo de um

noacute que conteacutem surfels - veja seccedilatildeo 42 O uso deste meacutetodo natildeo foi

implementado para este trabalho e a sua implementaccedilatildeo melhoraria o tempo de

resposta do algoritmo Aleacutem disso o trabalho de Sara F Frisken [12] citado no

capiacutetulo 2 apresenta uma otimizaccedilatildeo no uso de octrees que pode ser

incorporada no algoritmo implementado neste trabalho

Em termos conceituais vamos fazer a comparaccedilatildeo do uso do que

chamamos aqui de Regra 2 do tratamento de interseccedilatildeo e do tratamento de

ldquoarestas vivasrdquo

Como vimos na seccedilatildeo 41 tanto o algoritmo implementado nesta

dissertaccedilatildeo baseado no trabalho de Adams e Dutreacute como o meacutetodo de Pauly

[3] parte do que chamamos aqui de Regra 2 para realizar operaccedilotildees booleanas

com pontos Mas cada um destes meacutetodos daacute um tratamento diferente para o

uso desta regra

O meacutetodo de Pauly usa a Regra 2 para classificaccedilatildeo de cada ponto ou de

cada surfel Para classificar um surfel de B sb como dentro ou fora de A eacute

encontrado o surfel de A sa mais proacuteximo a sb e sb eacute classificado a partir de sa

Para encontrar sa Pauly utiliza uma kd-tree Como esta pesquisa para encontrar

sa eacute cara (mesmo usando uma kd-tree) Pauly utiliza uma esfera que conteacutem

pontos com a mesma classificaccedilatildeo (seccedilatildeo 432) e diminui em 90 este nuacutemero

de pesquisas Pauly utiliza tambeacutem a representaccedilatildeo impliacutecita MLS (Moving Least

Squares) para casos em que a Regra 2 poderia falhar e para tratamento de

interseccedilotildees Entretanto o nuacutemero destes casos em que a Regra 2 poderia falhar

eacute muito pequeno E a representaccedilatildeo MLS natildeo eacute uma estrutura simples de ser

implementada Portanto natildeo encontramos vantagens em usar MLS para estes

casos O meacutetodo de Adams e Dutreacute natildeo trata estes casos e na praacutetica

apresenta resultados bastante satisfatoacuterios como foi mostrado Portanto

consideramos que valeria a pena fazer algum tratamento especial para estes

casos se fosse um procedimento simples Para a execuccedilatildeo do algoritmo de

Pauly o uso de MLS natildeo interfere significativamente porque a construccedilatildeo desta

representaccedilatildeo natildeo eacute feita somente para realizar operaccedilotildees booleanas Os testes

empiacutericos que fizemos com o algoritmo de Pauly natildeo incluem a construccedilatildeo desta

representaccedilatildeo

Aparentemente os dois algoritmos satildeo bastante parecidos um usa octrees

e o outro usa kd-tree As duas estruturas de dados satildeo simples e otimizam a

classificaccedilatildeo dos surfels de um modelo como dentro ou fora do outro modelo

Resultados 70

Mas existe uma diferenccedila conceitual entre dois que merece ser destacada O

algoritmo aqui implementado usa a Regra 2 para classificaccedilatildeo dos noacutes de uma

octree e armazena esta octree classificada (ver capiacutetulo 5) Assim na maioria dos

casos natildeo seraacute necessaacuterio encontrar o surfel mais proacuteximo para classificar um

ponto (ou um surfel) como fora ou dentro de um modelo Caso o ponto esteja em

uma aacuterea da octree classificada ele teraacute a classificaccedilatildeo dada agravequela aacuterea A

pesquisa ao surfel mais proacuteximo seraacute feita apenas nos casos em que o ponto a

ser classificado estaacute localizado entre os planos que subdividem um noacute cheio

O uso desta octree classificada levanta uma questatildeo que natildeo foi citada no

trabalho de Adams e Dutreacute que eacute a proximidade desta estrutura (armazenada)

de octree classificada com uma representaccedilatildeo volumeacutetrica do objeto Sendo

assim esta estrutura pode ser aproveitada para outras funccedilotildees aleacutem da

classificaccedilatildeo dos surfels Por exemplo podemos ter uma aproximaccedilatildeo do

volume de uma cena somando os volumes aproximados dos modelos que a

compotildeem Como o enfoque deste trabalho eacute operaccedilatildeo booleana natildeo vamos nos

aprofundar nesta questatildeo

Outra importante diferenccedila entre os dois trabalhos que jaacute foi explicada na

seccedilatildeo 432 eacute que o meacutetodo de Pauly aplica-se a modelos soacutelidos ou natildeo

soacutelidos enquanto que o meacutetodo de Adams e Dutreacute aplica-se somente a modelos

soacutelidos

Quanto ao tratamento de interseccedilatildeo em termos de visualizaccedilatildeo todos os

dois resolvem bem o problema O tratamento de interseccedilatildeo nos dois trabalhos

tambeacutem resolve o problema da validade da Regra 2 (ver seccedilatildeo 44) Entretanto

o tratamento de Adams e Dutreacute natildeo depende da renderizaccedilatildeo sendo portanto

mais portaacutevel Aleacutem disso uma desvantagem do meacutetodo de Pauly eacute o uso da

representaccedilatildeo impliacutecita MLS (ldquoMoving Least Squaresrdquo) do objeto para obter os

pontos exatamente na curva de interseccedilatildeo Esta representaccedilatildeo torna o

tratamento de interseccedilatildeo mais complexo e a vantagem apresentada natildeo eacute tatildeo

significativa para este tratamento de interseccedilatildeo

Conclusatildeo 71

7 Conclusatildeo

Concluiacutemos entatildeo que as escolhas de Adams e Dutreacute por usar uma

octree classificada e pelo tratamento dado agrave interseccedilatildeo satildeo mais abrangentes

que a escolha de Pauly E consideramos que quanto mais abrangente for uma

escolha conceitual mais resultados poderemos tirar dela No caso de Adams e

Dutreacute eles estendem o problema de classificar um ponto para classificar todo o

modelo Como foi citado ele quase fornece uma representaccedilatildeo volumeacutetrica do

modelo Esta aproximada representaccedilatildeo volumeacutetrica pode nos fornecer outras

informaccedilotildees como por exemplo o volume aproximado do modelo

Aleacutem disso o uso da representaccedilatildeo impliacutecita MLS no meacutetodo de Pauly cria

uma complexidade a mais para o meacutetodo sem apresentar vantagens para a

realizaccedilatildeo de operaccedilotildees booleanas que eacute o nosso enfoque

Logo podemos dizer que o meacutetodo de Adams e Dutreacute apresenta as

seguintes vantagens em relaccedilatildeo ao de Pauly

- a estrutura de octree classificada aleacutem de ser usada para classificaccedilatildeo

fornece informaccedilotildees adicionais como volume aproximado do objeto

- o tempo de processamento no meacutetodo de Adams e Dutreacute tende a ser

melhor que no meacutetodo de Pauly se implementadas as melhorias acima citadas e

se colocaacutessemos em consideraccedilatildeo o uso da representaccedilatildeo impliacutecita MLS

(Moving Least Squares)

- o tratamento de interseccedilatildeo de Adams e Dutreacute apresenta a vantagem da

portabilidade ou seja iraacute funcionar independente do algoritmo de renderizaccedilatildeo

utilizado

E as vantagens do meacutetodo de Pauly em relaccedilatildeo ao de Adams e Dutreacute

- a colocaccedilatildeo de surfels exatamente na curva de interseccedilatildeo

- a possibilidade de trabalhar com modelos soacutelidos ou natildeo soacutelidos

E finalizando concluiacutemos que o estudo relatado nesta dissertaccedilatildeo foi

importante por

- fornecer um breve estudo sobre modelagem por pontos uma nova e

promissora aacuterea dentro da computaccedilatildeo graacutefica

Conclusatildeo 72

- por apresentar uma avaliaccedilatildeo dos dois trabalhos existentes sobre

operaccedilotildees booleanas com pontos encontrando as vantagens de cada um

e levantando questotildees que natildeo tinham sido citadas nos trabalhos originais

- por propor e implementar melhorias ao trabalho de Adams e Dutreacute

71 Trabalhos Futuros

Nossa implementaccedilatildeo pode ser ainda evoluiacuteda com as propostas

apresentadas na seccedilatildeo 62 Como observamos o tempo de processamento do

algoritmo aqui implementado ainda pode ser melhorado com o uso do meacutetodo

TINN [19] - que foi proposto em Adams[2] - para otimizar a pesquisa do surfel

mais proacuteximo a um ponto que estaacute localizado na regiatildeo de um noacute que conteacutem

surfels Aleacutem disso o trabalho Simple and Efficient Trasversal Methods for

Quadtrees and Octrees de Sara F Frisken [12] citado no capiacutetulo 2 apresenta

uma otimizaccedilatildeo no uso de octrees Outra proposta para melhorar o tempo de

processamento do algoritmo aqui implementado eacute usar a forma de trabalhar com

octrees apresentada neste trabalho

O trabalho de Adams e Dutreacute [2] eacute aplicado apenas a objetos soacutelidos O

nosso plugin portanto aplica-se somente a este tipo de objeto Jaacute o trabalho de

Pauly[3] eacute aplicado tambeacutem a modelos natildeo soacutelidos Apresentamos como

proposta a um trabalho futuro a extensatildeo do algoritmo aqui implementado para

modelos natildeo soacutelidos O surfel pode conter uma informaccedilatildeo adicional que indica

se ele estaacute delimitando um volume ou natildeo Assim pode-se ter um modelo com

ldquopartes soacutelidasrdquo e ldquopartes natildeo soacutelidasrdquo Por exemplo a uniatildeo de um plano com

uma esfera poderia resultar numa esfera com ldquoabasrdquo (seriam as partes do plano

que estariam fora da esfera) O modelo resultado teria uma parte correspondente

a um espaccedilo 3D (esfera) e outra parte que seria uma superfiacutecie 2D posicionada

no espaccedilo 3D sem delimitar algum volume (abas)

Muitos trabalhos podem ser desenvolvidos aplicando-se o modelo por

pontos em animaccedilatildeo jogos visualizaccedilatildeo de terrenos criaccedilatildeo de protoacutetipos etc

considerando-se a eficiecircncia e simplicidade do modelo E mais especificamente

as operaccedilotildees booleanas com pontos podem ser aplicadas para criaccedilatildeo de

cenaacuterios testes de colisotildees e nestes casos a representaccedilatildeo usando octrees

pode ser mais explorada considerando-se o seu potencial de representaccedilatildeo

volumeacutetrica de um objeto

Referecircncias Bibliograacuteficas 73

8 Referecircncias Bibliograacuteficas

[1] MAumlNTYLAuml M An Introduction to Solid Modeling Computer Science Press 1988

[2] ADAMS B DUTREacute P Interactive Boolean Operations on Surfel-

Bounded Solids Proceedings of SIGGRAPH 2003 San Diego USA 2003

[3] PAULY M KEISER R KOBBELT L GROSS M Shape Modeling

with Point-Sampled Geometry SIGGRAPH 2003 Computer Graphics

Proceedings Annual Conference Series ACM Press ACM SIGGRAPH 2003

[4] LEVOY M WHITTED T The Use of Points as Display Primitives

Technical Report TR 85-022 The University of North Carolina at Chapel Hill

Department of Computer Science 1985

[5] PFISTER H ZWICKER M VAN BAAR J GROSS M 2000 Surfels

Surface Elements as Rendering Primitives SIGGRAPH 2000 pp 335ndash342 New

Orleans LA July 23-28 2000

[6] ZWICKER M PFISTER H VAN BAAR J GROSS M Surface

Splatting SIGGRAPH 2001

[7] PAULY M KOBBELT L GROSS M Multiresolution Modeling of

Point-Sampled Geometry CS Techinical Report 378 September 16 2002

[8] CURLESS B New Methods for Surface Reconstruction from Range Images PhD thesis Stanford University 1997

[9] RUSINKIEWICZ S Real-time Acquisition and Rendering of Large 3D Models PhD thesis Stanford University 2001

Referecircncias Bibliograacuteficas 74

[10] AMENTA N BERN M KAMVYSSELIS M A new Voronoi-Based

Surface Reconstruction Algorithm SIGGRAPH 98 Conference proceedings pp

415-421 New York 1998

[11] ZWICKER M PAULY M KNOLL O GROSS M Pointshop 3D an

Interactive System for Point-Based Surface Editing Proceedings of SIGGRAPH 2002 San Antonio TX July 2002

[12] FRISKEN S PERRY R Simple and Efficient Traversal Methods for

Quadtrees and Octrees Journal of Graphics Tools Vol 7 Issue 3 May 2003

[13] CORREcircA W T OLIVEIRA M M Silva C T Wang J

Modeling and Rendering of Real Environments

Revista de Informaacutetica Teoacuterica e Aplicada (Brazilian Journal of Theoretic and Applied Computing) 9(2)127-156 2002

[14] DAVIS J MARSCHNER S GARR M LEVOY M Filling Holes in

Complex Surfaces Using Volumetric Diffusion First International Symposium on 3D Data Processing Visualization Transmission June 2002

[15] RAumlSAumlNEN J Surface Splatting Theory Extensions and Implementation Masterrsquos Thesis Dept of Computer Science Helsinki

University of Technology May 28 2002

[16] PAULY M Point Primitives for Interactive Modeling and Processing of 3D Geometry PhD thesis Federal Institute of Technology (ETH)

of Zurich 2003

[17] HOPPE H DEROSE T DUCHAMP T MCDONALD J

STUELZLE W Surface Reconstruction from Unorganized Points Computer Graphics 26(2)71ndash78 July 1992

[18] ALEXA M BEHR J COHEN-OR D FLEISHMAN S LEVIN D

SILVA C T Point Set Surfaces IEEE Visualization 2001 pp 21ndash28 October

2001

Referecircncias Bibliograacuteficas 75

[19] GREENSPAN M GODIN G TALBOT J Acceleration of Binning

Nearest Neighbor Methods Proceedings of Vision Interface 2000 pp 337-

344

[20] MENCL R Reconstruction of Surfaces from Unorganized Three-Dimensional Point Clouds Dissertation Dortmund Univ 2001

[21] KRIVANEK J Representing and Rendering Surfaces With Points

httpciteseernjneccomkrivanek03representinghtml Acesso em 30 jul

2003

[22] KRISTJANSSON ET AL Approximate Boolean Operations on Free-

form Solids Proceedings of SIGGRAPH 01 2001

Abstract

Leal Heloisa Reis Celes Waldemar(Advisor) Boolean Operations on Point-based models Rio de Janeiro 2004 75p MSc Dissertation - Departamento de Informaacutetica Pontifiacutecia Universidade Catoacutelica do Rio de Janeiro

Boolean operations are used to create or modify models These operations

in the majority of 3D object representations are very complex In the last years a

significant trend in computer graphics has been the shift towards point sampled

3D models due to their advantages over other representations such as simplicity

and efficiency Two recent works present algorithms to perform interactive

boolean operations on point-based models the work by Adams and Dutreacute and

the work by Pauly et Al Due to great importance of this novel representation

and of the use of boolean operations the present work makes an introduction to

point-based representation implements the algorithm proposed by Adams and

Dutreacute with some improvements and compares this implementation with the work

by Pauly et al

Palavras-chave

3D Modeling Point-based Modeling Boolean Operation Interactive

Computer Graphics

Sumaacuterio

1 Introduccedilatildeo 15

2 Trabalhos relacionados 18

3 Modelagem por Pontos 20 31 Ideacuteia da Representaccedilatildeo 20 32 Tipos de distribuiccedilatildeo dos surfels 22 33 Estrutura de multi-resoluccedilatildeo 22 34 Dados que um surfel pode conter 23 35 Aquisiccedilatildeo do modelo 23 351 Aquisiccedilatildeo da geometria 23 352 Aquisiccedilatildeo da textura 24 353 Correccedilatildeo das falhas da aquisiccedilatildeo 25 36 Reconstruccedilatildeo da superfiacutecie (contiacutenua) a partir do modelo (discreto) 25 37 Visualizaccedilatildeo do modelo 26 38 Ediccedilatildeo do modelo 28

4 Operaccedilotildees Booleanas com Pontos 29 41 Meacutetodos para realizar operaccedilotildees booleanas em objetos modelados por

pontos 29 42 Meacutetodo de Adams e Dutreacute 33 421 Modelo por Pontos em Adams e Dutreacute 33 422 Algoritmo de Operaccedilotildees Booleanas 34 43 Meacutetodo de Pauly 39 431 Modelo em Pauly 40 432 Algoritmo de Operaccedilotildees Booleanas 40 44 Validade da Regra 2 43

5 Melhorias Propostas 47 51 Descriccedilatildeo do algoritmo 47 511 Criaccedilatildeo e classificaccedilatildeo de uma octree para cada modelo 48

512 Teste DentroFora 52 513 Criaccedilatildeo do modelo resultado 54 52 Implementaccedilatildeo 55 521 Estruturas de Dados 57

6 Resultados 61 61 Testes 61 62 Comparaccedilatildeo entre os dois meacutetodos que realizam operaccedilotildees booleanas 68

7 Conclusatildeo 71 71 Trabalhos Futuros 72

8 Referecircncias Bibliograacuteficas 73

11

Lista de figuras

Figura 1 Um modelo por pontos e sua visualizaccedilatildeo 21 Figura 2 A superfiacutecie modelada por surfels O surfel em destaque tem raio de

alcance rt e normal n 22 Figura 3 Modelo por pontos e sua renderizaccedilatildeo usando Surface Splatting 26 Figura 4 Trecircs modelos novos foram criados a partir dos quatro iniciais (esfera

cilindro dois cubos) O primeiro eacute a esfera menos um cubo em seguida

retirou-se outro cubo e por uacuteltimo retirou-se o cilindro 29 Figura 5 A partir de dois modelos por pontos uma heacutelice e uma cabeccedila as trecircs

operaccedilotildees booleanas satildeo mostradas da esquerda para a direita uniatildeo

diferenccedila e interseccedilatildeo 30 Figura 6 (a) Dois modelos A e B (b) Posicionados de forma que A tem uma parte

dentro de B eacute mostrado o resultado A U B Af + Bf (c) Resultado de A ndash B Af

+ Bd (d) Resultado de A cap B Ad + Bd 31 Figura 7 Para classificar o ponto x encontra-se o surfel p (com normal np) mais

proacuteximo a x Se o produto interno entre np e (x ndash p) for maior que zero entatildeo

x eacute classificado como fora senatildeo seraacute classificado como dentro 32 Figura 8 Interseccedilatildeo de duas esferas agrave esquerda sem nenhum tratamento de

interseccedilatildeo agrave direita apoacutes o tratamento de interseccedilatildeo 33 Figura 9 Um objeto representado por pontos com suas normais e sua quadtree

correspondente classificada os noacutes cinza claro estatildeo dentro do modelo noacutes

cinza mais escuro estatildeo fora do modelo e noacutes com cinza intermediaacuterio satildeo

noacutes cheios noacutes que conteacutem pontos 35 Figura 10 Divisatildeo de noacute de contorno a parte agrave esquerda estaacute fora do modelo a

parte agrave direita estaacute dentro do modelo e a faixa intermediaacuteria conteacutem os

surfels 36 Figura 11 Interseccedilatildeo do surfel s e do plano que passa pelo surfel t o surfel mais

proacuteximo a s O surfel s eacute substituiacutedo por trecircs surfels menores 38 Figura 12 Agrave direita eacute mostrado o resultado do tratamento de interseccedilatildeo para o

caso de Arestas Vivas do objeto agrave esquerda 39 Figura 13 Os novos surfels satildeo colocados exatamente na curva de interseccedilatildeo e

convergem para o ponto de interseccedilatildeo 42 Figura 14 (a) Suponhamos a reta que eacute a interseccedilatildeo do plano tangente a S1 em

q1 e o plano tangente a S2 em q2 O ponto r eacute o ponto desta reta que estaacute

12

mais proacuteximo a q1 e q2 (b) r eacute projetado sobre S1 e S2 obtendo-se q1acute e q2acute

dois novos pontos de partida para nova iteraccedilatildeo (c) A nova iteraccedilatildeo gera r

que eacute uma aproximaccedilatildeo melhor de q 43 Figura 15 Para verificar se o ponto x estaacute fora de um contorno C encontra-se o

ponto y de C Se o produto interno entre a normal em y e o vetor que liga y a

x for maior que zero entatildeo x estaacute fora de C senatildeo estaacute dentro de C 44 Figura 16 As curvas vermelhas satildeo o Eixo Medial da curva em preto 45 Figura 17 Em 3D geralmente o Eixo Medial eacute uma superfiacutecie 2D (em vermelho)

Aqui o quadrado eacute o Eixo Medial da superfiacutecie transparente que o contorna

45 Figura 18 A figura mostra o diagrama de Voronoi de uma amostragem de pontos

S Da mesma forma que a amostragem aproxima a curva os veacutertices de

Voronoi aproximam o Eixo Medial 46 Figura 19 Quadtree classificada Os noacutes mais escuros estatildeo fora do modelo os

mais claros dentro e os em tom intermediaacuterio satildeo noacutes de contorno 48 Figura 20 O noacute cheio eacute dividido em trecircs partes agrave esquerda a regiatildeo estaacute dentro

do modelo agrave direita estaacute fora e entre as duas linhas que dividem o noacute estaacute a

regiatildeo que conteacutem os surfels 49 Figura 21 O noacute a eacute classificado pelo noacute c o noacute d tambeacutem eacute classificado pelo noacute c

a classificaccedilatildeo do noacute a eacute propagada para o noacute b 50 Figura 22 Os cantos a e b do noacute cheio possuem a mesma classificaccedilatildeo fora do

modelo Esta classificaccedilatildeo foi dada ao noacute vazio adjacente 50 Figura 23 Quadtree classificada 51 Figura 24 A normal n eacute a normal meacutedia e os surfels s1 e s2 juntamente com a

normal n definem as retas que dividem o noacute 52 Figura 25 Duas circunferecircncias e suas quadtrees correspondentes 53 Figura 26 a modelos natildeo se intersectam b modelo intersecta noacutes fora c

modelo intersecta apenas noacutes dentro d modelo intersecta noacutes dentro e noacutes

fora 54 Figura 27 Software PointShop 3D com dois modelos carregados na sua cena 56 Figura 28 Menu do PointShop com o plugin e as opccedilotildees para operaccedilotildees

booleanas 57 Figura 29 Modelo do PointShop Igea 62 Figura 30 Resultado da uniatildeo de duas Igeas 63 Figura 31 Resultado da interseccedilatildeo de duas Igeas 63 Figura 32 Resultado da diferenccedila entre duas Igeas 64

13

Figura 33 Modelo do PointShop MaxPlanck 65 Figura 34 Modelo do PointShop Male 66 Figura 35 Resultado da Uniatildeo do modelo Male com MaxPlanck 66 Figura 36 Resultado da interseccedilatildeo do modelo Male com o MaxPlanck 67 Figura 37 Resultado da diferenccedila do modelo Male do modelo MaxPlanck 67

14

Lista de tabelas

Tabela 1 Classificaccedilatildeo para operaccedilotildees booleanas 42

Tabela 2- Nuacutemero de surfels dos modelos resultantes 64 Tabela 3- Meacutedia dos tempos de processamento para as operaccedilotildees com duas

Igeas 65

Tabela 4-Tempo de processamento das operaccedilotildees com os modelos MaxPlanck

e Male 68 Tabela 5- Nuacutemero de surfels dos modelos resultados das operaccedilotildees com os

modelos MaxPlanck e Male 68

15

1 Introduccedilatildeo

O mundo digital estaacute conquistando cada vez mais espaccedilo nos meios de

comunicaccedilatildeo Sons imagens viacutedeos digitais satildeo miacutedias muito usadas em

diversas aacutereas como entretenimento medicina desenho industrial engenharia

arquitetura educaccedilatildeo arte ciecircncia entre outras Podemos citar alguns

exemplos dentro destas aacutereas como jogos efeitos especiais filmes digitais

visualizaccedilatildeo cientiacutefica viacutedeo-conferecircncia comeacutercio na internet Nos uacuteltimos anos

verificamos que o modelo 3D vem se tornando um novo meio de comunicaccedilatildeo

digital Com o desenvolvimento da tecnologia de aquisiccedilatildeo e do processamento

de modelos 3D ele vem sendo cada vez mais utilizado Jogos 3D animaccedilotildees

aplicaccedilotildees em realidade virtual visualizaccedilatildeo cientiacutefica aplicaccedilotildees para aacuterea

meacutedica e odontoloacutegica criaccedilatildeo de reacuteplicas para estudo e preservaccedilatildeo do

patrimocircnio histoacuterico sistemas CADCAM cataacutelogos de modelos 3D na Web para

comercializaccedilatildeo criaccedilatildeo de protoacutetipos para arquitetura engenharia satildeo alguns

exemplos de aplicaccedilotildees que usam modelos 3D

A aacuterea que estuda a representaccedilatildeo de um modelo 3D no computador eacute

chamada de modelagem em computaccedilatildeo graacutefica Existem diversos tipos de

modelagem para as diversas aplicaccedilotildees que usam um modelo 3D como por

exemplo representaccedilotildees poligonais como malhas triangulares que satildeo

geralmente usadas na aacuterea de entretenimento Este trabalho explora um novo

tipo de modelagem a modelagem por pontos

A modelagem por pontos comeccedilou a ser largamente explorada nesta

deacutecada e trata-se de uma aacuterea muito promissora em computaccedilatildeo graacutefica dadas

agraves vaacuterias e grandes vantagens em relaccedilatildeo aos outros tipos de representaccedilatildeo

como esquema de representaccedilatildeo CSG (Constructive Solid Geometry) [1] ou

malhas poligonais Dentre as principais vantagens podemos citar grande

simplicidade e flexibilidade boa performance robustez Mas a principal

vantagem desta modelagem que foi o fator que impulsionou o seu grande

desenvolvimento nesta deacutecada eacute que esta modelagem por pontos eacute a melhor

opccedilatildeo para tratar os dados de saiacuteda de equipamentos de aquisiccedilatildeo de modelos

3D O uso destes equipamentos tem aumentado muito nesta deacutecada A

16

tecnologia destes equipamentos tem progredido muito e eles tecircm se tornado

mais baratos A tendecircncia eacute que o uso destes equipamentos se torne o mais

utilizado meio de obtenccedilatildeo de modelos 3D Isto porque construir modelos 3D

bastante detalhados por meio de um software de modelagem eacute muito trabalhoso

O processo de aquisiccedilatildeo de modelos por meio destes equipamentos automatiza

este processo de construccedilatildeo

No trabalho com modelos 3D frequumlentemente satildeo usadas as operaccedilotildees

booleanas que satildeo operaccedilotildees de uniatildeo interseccedilatildeo ou diferenccedila No esquema

de representaccedilatildeo CSG estas operaccedilotildees fazem parte da representaccedilatildeo do

objeto Estas operaccedilotildees tambeacutem podem ser usadas para criar novos modelos ou

para alteraacute-los Na maioria dos tipos de representaccedilatildeo de objetos 3D estas

operaccedilotildees satildeo bastante complexas

A simplicidade da representaccedilatildeo por pontos permite que as operaccedilotildees

booleanas sejam realizadas com facilidade se compararmos com a realizaccedilatildeo

destas operaccedilotildees em outros tipos de representaccedilatildeo como malhas poligonais

Motivada pelas vantagens desta modelagem e pela utilidade destas operaccedilotildees

esta dissertaccedilatildeo apresenta uma introduccedilatildeo geral de modelagem por pontos e

trabalha mais especificamente com operaccedilotildees booleanas em objetos

modelados por pontos Dois trabalhos que exploram as operaccedilotildees booleanas na

modelagem por pontos seratildeo abordados o trabalho de Adams e Dutreacute [2] e o

trabalho de Pauly et al [3] O presente trabalho implementa o meacutetodo de Adams

e Dutreacute com algumas melhorias e faz uma comparaccedilatildeo entre o meacutetodo de Pauly

[3] e o meacutetodo de Adams e Dutreacute [2] com nossas melhorias

Como contribuiccedilotildees dadas por este trabalho apresentamos

- um estudo sobre modelagem por pontos

- um estudo sobre operaccedilotildees booleanas com pontos

- proposta de melhorias ao algoritmo proposto por Adams e Dutreacute [2]

- comparaccedilatildeo dos dois meacutetodos propostos para realizar estas operaccedilotildees

meacutetodo de Pauly et al [3] e de Adams e Dutreacute [2]

Este trabalho vem apresentado nesta dissertaccedilatildeo organizada em sete

capiacutetulos conforme descrito resumidamente a seguir

O capiacutetulo 2 cita alguns trabalhos sobre modelagem por pontos que estatildeo

relacionados a este trabalho

O capiacutetulo 3 apresenta uma visatildeo geral do modelo por pontos e explica

melhor alguns trabalhos citados no capiacutetulo 2

17

O capiacutetulo 4 apresenta operaccedilotildees booleanas com pontos e os dois

meacutetodos para realizaacute-las na modelagem por pontos meacutetodo de Pauly et al [3] e

de Adams e Dutreacute [2]

O capiacutetulo 5 apresenta algumas melhorias ao algoritmo de Adams e Dutreacute

[2] e a nossa implementaccedilatildeo deste algoritmo

O capiacutetulo 6 traz os resultados obtidos

E finalmente o capiacutetulo 7 encerra o trabalho com uma conclusatildeo e com

possiacuteveis trabalhos futuros

Trabalhos relacionados 18

2 Trabalhos relacionados

O primeiro pesquisador a propor o uso de pontos como primitiva graacutefica foi

Levoy em [4] Ele propotildee o uso de pontos como primitiva de renderizaccedilatildeo e

discute a conversatildeo dos outros modelos para o modelo por pontos

Nos uacuteltimos anos vaacuterios trabalhos importantes tecircm sido realizados na aacuterea

em diversos segmentos em visualizaccedilatildeo podemos destacar os trabalhos de

Pfister [5] e de Zwicker [6] que usam pontos como primitiva de renderizaccedilatildeo e

com resultados praacuteticos interativos muito bons

Em [7] Pauly et al propotildeem algoritmos para modelagem multi-resoluccedilatildeo

em modelos por pontos

Os trabalhos de Curless [8] e Rusinkiewicz [9] discutem os meacutetodos de

aquisiccedilatildeo que consistem em obter uma amostragem de pontos da superfiacutecie do

objeto real por meio de equipamentos como por exemplo o scanner 3D

Nas operaccedilotildees booleanas a interseccedilatildeo das superfiacutecies dos modelos

iniciais seraacute parte do modelo resultado e para ser representada corretamente

precisa ser reconstruiacuteda A reconstruccedilatildeo da superfiacutecie tambeacutem eacute usada na

visualizaccedilatildeo de um modelo Um trabalho significativo na aacuterea de reconstruccedilatildeo de

superfiacutecies estaacute em [10] de N Amenta etal Este trabalho apresenta uma

soluccedilatildeo praacutetica com garantias teoacutericas para este problema e uma heuriacutestica para

o tratamento de arestas vivas a questatildeo mais difiacutecil desta aacuterea Um exemplo

de uma aresta viva eacute o encontro de dois planos natildeo coincidentes

Frequumlentemente a interseccedilatildeo citada acima (interseccedilatildeo entre os modelos iniciais)

gera uma aresta viva (seccedilatildeo 4223)

O algoritmo aqui implementado eacute um plugin para o software PointShop 3D

[11] de Zwicker et al software de ediccedilatildeo de modelos com pontos O PointShop

tem seu coacutedigo aberto documentaccedilatildeo e trabalha com plugins Ele permite a

visualizaccedilatildeo e ediccedilatildeo interativa do modelo por pontos Eacute o uacutenico software livre

disponiacutevel com estas caracteriacutesticas Esta implementaccedilatildeo na forma de um plugin

facilitou muito o trabalho pois natildeo foi necessaacuterio implementar a visualizaccedilatildeo do

modelo 3D Aleacutem disso o Pointshop conteacutem tambeacutem um plugin com a

implementaccedilatildeo do meacutetodo de Pauly et al [3] discutido nesta dissertaccedilatildeo A

Trabalhos relacionados 19

execuccedilatildeo dos dois plugins que realizam operaccedilotildees booleanas pocircde ser

comparada

Os trabalhos aqui discutidos satildeo o de Bart Adams e Philip Dutreacute [2] e de

Pauly et al[3] que apresentam meacutetodos diferentes para realizaccedilatildeo de

operaccedilotildees booleanas com pontos Adams e Dutreacute utilizam octrees [1] e Pauly

Kd-Tree [16] e MLS (Moving Least Squares) [18] Estes algoritmos satildeo

discutidos no capiacutetulo 4

O trabalho de Sara F Frisken [12] apresenta um algoritmo para realizar

operaccedilotildees em octree de forma mais eficiente Como estas operaccedilotildees estatildeo

presentes em todo o nosso algoritmo este trabalho certamente oferece uma

forma de otimizaccedilatildeo mas que natildeo foi implementada

Modelagem por Pontos 20

3 Modelagem por Pontos

A computaccedilatildeo graacutefica natildeo lida diretamente com o objeto ou com o

fenocircmeno fiacutesico lida com modelos graacuteficos ou geomeacutetricos Modelos graacuteficos

satildeo estruturas computacionais (abstratas) que capturam aspectos de objetos de

interesse para uma aplicaccedilatildeo como forma cor textura etc Se apenas a forma

ou a geometria do objeto eacute relevante temos modelos geomeacutetricos

Estes modelos satildeo usados em vaacuterias aplicaccedilotildees em computaccedilatildeo graacutefica

como roboacutetica visatildeo computacional simulaccedilotildees realistas anaacutelises estruturais

prototipagem projeto e manufatura de produtos eletromecacircnicos arquitetura

Existem vaacuterios tipos de modelos graacuteficos Esta dissertaccedilatildeo trata de um tipo

muito em voga atualmente que eacute o modelo por pontos

Neste capiacutetulo daremos uma visatildeo geral do modelo por pontos

Introduziremos este modelo e seu processo de criaccedilatildeo Seraacute apresentado o que

eacute um modelo por pontos e o conceito de surfel [5] introduziremos os tipos de

distribuiccedilatildeo dos surfels uma estruturaccedilatildeo aplicada a estes surfels e dados que

eles podem conter As quatro proacuteximas subseccedilotildees (Ideacuteia da representaccedilatildeo

Tipos de distribuiccedilatildeo dos surfels Estrutura de multi-resoluccedilatildeo e Dados que um

surfel pode conter) tratam destes toacutepicos Um modelo por pontos pode ser criado

a partir da conversatildeo de outros tipos de modelagem NURBS por exemplo para

o modelo por pontos ou a partir de um processo de aquisiccedilatildeo Esta uacuteltima forma

de criaccedilatildeo pode ser dividida em duas etapas aquisiccedilatildeo do modelo reconstruccedilatildeo

da superfiacutecie As subseccedilotildees 35 e 36 tratam destas duas etapas

respectivamente A ediccedilatildeo do modelo 3D eacute tratada brevemente na subseccedilatildeo 38

e a sua visualizaccedilatildeo na subseccedilatildeo 37 A apresentaccedilatildeo do processo de aquisiccedilatildeo

(seccedilatildeo 35) eacute baseada no tutorial de W T Correcirca [13] A etapa de ediccedilatildeo 3D

consiste em operaccedilotildees para mudanccedila da cor textura ou forma do modelo Para

esta etapa enfocaremos as operaccedilotildees booleanas que modificam a forma do

modelo ou criam novos modelos

31 Ideacuteia da Representaccedilatildeo

Modelagem por Pontos 21

Figura 1 [20] -Um modelo por pontos e sua visualizaccedilatildeo

Um modelo por pontos representa um objeto atraveacutes de seu contorno Eacute

um tipo de representaccedilatildeo B-Rep (Boundary Representation) [1] Este contorno

consiste em uma superfiacutecie 2D posicionada no espaccedilo 3D Na modelagem por

pontos ela eacute representada por um conjunto de pontos 3D que satildeo uma

amostragem dos (infinitos) pontos que formam a superfiacutecie contiacutenua (Figura 1) A

amostragem pode ser obtida de diversas maneiras Uma delas o processo de

aquisiccedilatildeo progrediu muito nos uacuteltimos anos e este foi um dos fatores que tornou

muito importante o desenvolvimento deste modelo por pontos Outra forma de

gerar amostragem eacute fazer uma conversatildeo de um outro modelo NURBS por

exemplo para o modelo por pontos

Estes pontos satildeo denominados surfels e podem conter aleacutem da posiccedilatildeo

3D outras informaccedilotildees como normal agrave superfiacutecie cor textura raio de alcance A

Figura 2 mostra um conjunto de surfels representando uma superfiacutecie No surfel

em destaque podemos ver o raio de alcance rt e a normal n agrave superfiacutecie

Modelagem por Pontos 22

Figura 2 [5] A superfiacutecie modelada por surfels O surfel em destaque tem raio de alcance

rt e normal n

Como o modelo natildeo armazena qualquer informaccedilatildeo sobre a conexatildeo entre

os surfels a reconstruccedilatildeo da superfiacutecie contiacutenua a partir dele pode exigir

algumas restriccedilotildees na amostragem (seccedilatildeo 36)

32 Tipos de distribuiccedilatildeo dos surfels

Existem dois tipos de distribuiccedilatildeo dos surfels na modelagem por pontos

uniforme e natildeo uniforme Na distribuiccedilatildeo uniforme cada um deles descreve

partes de mesmo tamanho da superfiacutecie Na natildeo uniforme cada surfel armazena

a informaccedilatildeo de seu raio de alcance que eacute o raio do disco que este surfel

representa

A distribuiccedilatildeo uniforme tem a vantagem de ser mais simples e natildeo ser

necessaacuterio armazenar o raio de alcance do disco mas ela apresenta a seguinte

desvantagem se o modelo possui regiotildees com muito detalhe e regiotildees com

pouco detalhe ele teraacute que manter uma alta densidade mesmo nas regiotildees de

poucos detalhes

33 Estrutura de multi-resoluccedilatildeo

Um objeto pode ser representado em vaacuterios niacuteveis de detalhes Por

exemplo podemos representar um mesmo objeto com vaacuterias resoluccedilotildees

diferentes Este conceito pode ser aplicado ao modelo por pontos Desta forma

um modelo eacute representado por uma estrutura hieraacuterquica (uma aacutervore por

exemplo) onde em cada niacutevel temos uma representaccedilatildeo do objeto em uma

Modelagem por Pontos 23

determinada resoluccedilatildeo Em [7] Pauly et al propotildeem algoritmos para modelagem

multi-resoluccedilatildeo em modelos por pontos

34 Dados que um surfel pode conter

Cada surfel armazena sua localizaccedilatildeo e pode tambeacutem conter informaccedilotildees

como a cor ou coordenadas de textura Se a amostragem natildeo for uniforme o

surfel conteacutem a informaccedilatildeo do raio de alcance que eacute o raio de um disco cujo

centro eacute a posiccedilatildeo do surfel O surfel pode tambeacutem conter o vetor normal agrave

superfiacutecie e assim o surfel pode ser visto como um disco orientado A superfiacutecie

tambeacutem pode ser vista como uma superfiacutecie orientada

35 Aquisiccedilatildeo do modelo

Esta introduccedilatildeo sobre aquisiccedilatildeo do modelo aqui apresentada baseia-se no

tutorial de W T Correcirca [13]

O processo de aquisiccedilatildeo consiste em obter uma amostragem de pontos da

superfiacutecie do objeto real por meio de equipamentos como por exemplo o

scanner 3D Eacute uma aacuterea que tem progredido muito nos uacuteltimos anos A

resoluccedilatildeo e a precisatildeo dos equipamentos de aquisiccedilatildeo tecircm melhorado bastante

e o custo deles reduzido de forma significativa Isso possibilita que a aquisiccedilatildeo

de modelos 3D seja usada em aplicaccedilotildees de desenho industrial arte ou em

produtos para a aacuterea de entretenimento O consequumlente maior uso destes

equipamentos criou a necessidade de avanccedilos no tratamento dos seus dados de

saiacuteda que satildeo um conjunto de pontos

Este processo pode ser dividido em trecircs partes [13] aquisiccedilatildeo da

geometria aquisiccedilatildeo da textura e correccedilatildeo de falhas da aquisiccedilatildeo

351 Aquisiccedilatildeo da geometria

Existem vaacuterios meacutetodos de aquisiccedilatildeo da geometria Curless [8] e

Rusinkiewicz [9] classificaram estes meacutetodos em trecircs categorias meacutetodos por

contato transmissatildeo e reflexatildeo

O meacutetodo por contato toca a superfiacutecie do objeto com uma sonda e grava

a posiccedilatildeo Este meacutetodo do qual o Coordinate Measuring Machines (CMMs) eacute

Modelagem por Pontos 24

um exemplo eacute bastante preciso mas eacute muito lento e natildeo adequado a objetos

fraacutegeis

Meacutetodos por transmissatildeo projetam ondas de energia sobre o objeto e

gravam a energia transmitida Por exemplo tomografia computadorizada que

projeta ondas de raio-x sobre o objeto e mede a quantidade de radiaccedilatildeo que

passa atraveacutes dele O resultado eacute um modelo geomeacutetrico de alta resoluccedilatildeo Este

meacutetodo pode captar detalhes do objeto que natildeo satildeo visiacuteveis de fora do objeto

Por outro lado ele eacute caro e arriscado

Meacutetodos por reflexatildeo podem ser oacuteticos ou natildeo-oacuteticos Natildeo-oacuteticos incluem

radares que medem a distacircncia a um objeto enviando microondas ou ondas

sonoras para o objeto e gravando o tempo que a onda gasta para retornar Estes

meacutetodos natildeo satildeo muito precisos nem raacutepidos

Meacutetodos por reflexatildeo oacuteticos podem ser passivos ou ativos Meacutetodos oacuteticos

passivos natildeo interagem com o objeto e incluem teacutecnicas de visatildeo computacional

como shape-from-shading stereo triangulation optical flow e meacutetodos de

decomposiccedilatildeo para video streams Estes meacutetodos raramente constroem

modelos precisos e sua maior aplicaccedilatildeo eacute em reconhecimento de objetos

Meacutetodos oacuteticos ativos projetam luz sobre um objeto de maneira estruturada

e atraveacutes da reflexatildeo da luz determinam a forma do objeto Exemplos satildeo depth

from defocus photometric stereo projected-light triangulation time of flight

Meacutetodos por reflexatildeo oacuteticos ativos tecircm muitas vantagens sobre os passivos tecircm

um melhor desempenho quando natildeo existe textura satildeo mais baratos e mais

robustos e produzem uma amostragem precisa

352 Aquisiccedilatildeo da textura

Idealmente noacutes gostariacuteamos de ter uma completa descriccedilatildeo de como um

ponto da superfiacutecie reflete a luz dependendo do vetor normal a esta superfiacutecie

da direccedilatildeo do raio de luz incidente e do comprimento de onda Tal descriccedilatildeo eacute

conhecida como Bidirectional Reflectance Distribution Function (BRDF) Medir

BRDFs com precisatildeo eacute um problema difiacutecil

Pode-se ter uma aproximaccedilatildeo da aquisiccedilatildeo de cores do objeto tirando

fotos dele O objeto eacute fotografado e a cor de cada ponto da superfiacutecie eacute obtida a

partir de um mapeamento das fotos 2D para o modelo 3D Para mapear a

fotografia agrave geometria precisamos conhecer os paracircmetros de projeccedilatildeo da

cacircmera e a sua posiccedilatildeo no momento em que a foto foi batida Para cada ponto

Modelagem por Pontos 25

3D do modelo encontramos sua projeccedilatildeo 2D no plano da cacircmera e associamos

a cor do pixel nesta projeccedilatildeo agrave cor do ponto 3D

353 Correccedilatildeo das falhas da aquisiccedilatildeo

O processo de aquisiccedilatildeo deixa frequumlentemente buracos no modelo devido

a ruiacutedos no processo ou agrave impossibilidade de aquisiccedilatildeo de determinadas partes

de uma superfiacutecie Estes buracos devem ser corrigidos Pode-se usar por

exemplo um filtro de passa-baixa para remoccedilatildeo de ruiacutedos [14] Meacutetodos de

difusatildeo geomeacutetrica tecircm sido aplicados para preenchimento dos buracos [15] A

correccedilatildeo das falhas eacute tida como um preacute-processamento para o processo de

reconstruccedilatildeo da superfiacutecie contiacutenua (seccedilatildeo 36)

36 Reconstruccedilatildeo da superfiacutecie (contiacutenua) a partir do modelo (discreto)

A reconstruccedilatildeo da superfiacutecie contiacutenua consiste em a partir de um conjunto

natildeo estruturado de pontos obter um modelo contiacutenuo desta superfiacutecie Esta

reconstruccedilatildeo eacute frequumlentemente exigida para um modelo por pontos Na sua

visualizaccedilatildeo podemos desejar focar qualquer parte do modelo Para fazermos

operaccedilotildees booleanas com os modelos podemos querer determinar exatamente

onde eles se intersectam

No entanto natildeo precisamos ter necessariamente a representaccedilatildeo contiacutenua

de todo o objeto ao mesmo tempo A reconstruccedilatildeo desta superfiacutecie a partir dos

pontos amostrados pode ser feita no momento que for mais adequado agrave

aplicaccedilatildeo Na visualizaccedilatildeo a reconstruccedilatildeo pode ser feita na projeccedilatildeo 2D da

parte do modelo em foco (seccedilatildeo 37) Para operaccedilotildees booleanas pode-se

reconstruir apenas a aacuterea da interseccedilatildeo dos modelos

Este processo de reconstruccedilatildeo de superfiacutecie tem sido muito estudado em

modelagem geomeacutetrica e geometria computacional nos uacuteltimos anos O trabalho

mais importante desta aacuterea eacute o trabalho de Amenta et al [10] que foi a primeira

soluccedilatildeo com garantias demonstraacuteveis para este problema de reconstruccedilatildeo de

superfiacutecie A seccedilatildeo 44 explica estes conceitos e o trabalho [10] Este trabalho

demonstra que teoricamente para que a reconstruccedilatildeo da superfiacutecie (contiacutenua) a

partir das amostras seja correta a amostragem deve ser adequada Ele usa o

conceito de ldquoEixo Medialrdquo para definir o que eacute uma amostragem adequada

Modelagem por Pontos 26

(seccedilatildeo 44) Em duas dimensotildees os veacutertices de Voronoi de uma amostragem

densa aproximam o ldquoEixo Medialrdquo da amostragem

Por meio deste conceito de Eixo Medial [1016] obtecircm-se paracircmetros

teoacutericos para a definiccedilatildeo de amostragem adequada e baseado neste conceito

o algoritmo apresentado em [10] traz uma soluccedilatildeo praacutetica para o problema

obtendo uma malha poligonal a partir do modelo por pontos

O PointShop 3D [11] software de ediccedilatildeo de modelos por pontos utilizado

nesta pesquisa faz quando necessaacuterio a reconstruccedilatildeo da superfiacutecie Para isso

o PointShop 3D explora a vizinhanccedila local (surfels vizinhos de acordo com suas

posiccedilotildees) Ele usa o conceito de Eixo Medial para justificar seu meacutetodo de

reconstruccedilatildeo da superfiacutecie que na praacutetica apresenta resultados bastante

satisfatoacuterios apesar de teoricamente natildeo ter garantias [16]

37 Visualizaccedilatildeo do modelo

A primeira abordagem para visualizaccedilatildeo de um modelo por pontos foi

construir uma malha de poliacutegonos a partir dos surfels e renderizaacute-la Mas a

construccedilatildeo de malhas a partir dos surfels eacute um processo muito caro e lento

principalmente para modelos complexos Na tentativa de obter uma visualizaccedilatildeo

interativa do modelo por pontos estatildeo sendo estudadas teacutecnicas que utilizam

surfels como primitiva de visualizaccedilatildeo A ideacuteia foi apresentada inicialmente por

Levoy [4]

Figura 3 [21] -Modelo por pontos e sua renderizaccedilatildeo usando Surface Splatting

Modelagem por Pontos 27

O objetivo da renderizaccedilatildeo a partir dos surfels eacute projetaacute-los na tela e

reconstruir as superfiacutecies de forma contiacutenua sem buracos Para que esta

renderizaccedilatildeo seja amplamente utilizada deve-se ter cuidado com o uso de

memoacuteria e com a qualidade da imagem gerada Teacutecnicas recentes como Surface

Splatting [6] faz a renderizaccedilatildeo interativamente com qualidade (Figura 3)

comparada a outros meacutetodos de renderizaccedilatildeo como Image Based Rendering

Em geral a visualizaccedilatildeo do modelo por pontos pode ser dividida nas seguintes

etapas

- warping - projeccedilatildeo em perspectiva de cada ponto do modelo na tela

processo anaacutelogo agrave projeccedilatildeo de veacutertices dos triacircngulos na malha triangular Se

um pixel da tela estiver contido em mais de uma projeccedilatildeo de surfels (vizinhos)

ou seja mais de um ponto cobre este pixel os atributos destes pontos seratildeo

combinados

- shading por ponto - o processo de shading eacute realizado para cada ponto

visiacutevel (os pontos que natildeo satildeo vistos do ponto de vista em questatildeo devem ser

retirados) Qualquer modelo local de shading pode ser aplicado Uma nova

teacutecnica foi proposta em Surface Splatting [6]

- reconstruccedilatildeo da imagem ndash pixels que natildeo ldquoreceberamrdquo projeccedilatildeo de

nenhum ponto formam buracos na imagem Esta imagem deve ser reconstruiacuteda

sem buracos sem aliasing e as superfiacutecies devem ser reconstruiacutedas de forma

contiacutenua e devem ser ldquosuavizadasrdquo (smooth surface)

Os algoritmos de renderizaccedilatildeo por pontos podem tratar a questatildeo de

buracos na visualizaccedilatildeo de trecircs formas [17]

Detecccedilatildeo e preenchimento de buracos no espaccedilo da tela pontos satildeo

projetados na tela e pixels que natildeo receberam pontos satildeo detectados (buracos)

Para preencher estes buracos que natildeo receberam pontos eacute feita uma

interpolaccedilatildeo entre os vizinhos

Geraccedilatildeo de mais pontos a superfiacutecie eacute interpolada no espaccedilo do modelo

para garantir que todos os pixels recebam pelo menos a projeccedilatildeo de um ponto

Splatting um surfel eacute projetado na tela e sua contribuiccedilatildeo eacute espalhada de

forma diferenciada para os pixels vizinhos Agrave medida em que o vizinho se torna

mais distante a contribuiccedilatildeo do surfel diminui

Raumlsaumlnen faz uma analogia do processo de renderizaccedilatildeo proposto em [6]

com o mapeamento de textura [15] No mapeamento de textura para um

determinado pixel da tela satildeo encontrados os pontos da textura que afetam este

Modelagem por Pontos 28

pixel Num sentido inverso em splatting para um determinado surfel (que

representa a textura) satildeo encontrados os pixels da tela que este surfel afeta

38 Ediccedilatildeo do modelo

Ediccedilatildeo de um modelo 3D consiste em operaccedilotildees que modificam

caracteriacutesticas deste modelo como cor textura forma ou criam novos modelos

O software PointShop 3D [11] software de ediccedilatildeo de modelos por pontos 3D

implementa vaacuterias destas operaccedilotildees (ver seccedilatildeo 52)

Para modificar a forma de um modelo ou criar um novo satildeo muito usadas

as operaccedilotildees booleanas que eacute o nosso enfoque nesta dissertaccedilatildeo Na

modelagem CSG (Constructive Solid Geometry) as operaccedilotildees booleanas satildeo

usadas juntamente com primitivas soacutelidas para definir um modelo No entanto

em alguns tipos de modelos estas operaccedilotildees satildeo difiacuteceis como por exemplo

em malhas poligonais Com pontos elas podem ser feitas interativamente [32]

Operaccedilotildees Booleanas com Pontos 29

4 Operaccedilotildees Booleanas com Pontos

Operaccedilotildees booleanas satildeo as operaccedilotildees de uniatildeo interseccedilatildeo e diferenccedila

definidas na teoria matemaacutetica de conjuntos Estas operaccedilotildees satildeo aplicadas em

modelos soacutelidos para alteraacute-los ou para criar novos modelos A Figura 4 abaixo

mostra a criaccedilatildeo de trecircs novos modelos a partir de quatro modelos iniciais

Figura 4 [22] Trecircs modelos novos foram criados a partir dos quatro iniciais (esfera

cilindro dois cubos) O primeiro eacute a esfera menos um cubo em seguida retirou-se outro

cubo e por uacuteltimo retirou-se o cilindro

Estas operaccedilotildees satildeo aplicadas em objetos modelados por pontos em dois

trabalhos no trabalho de Bart Adams e Philip Dutreacute [2] e no trabalho de Pauly

et Al [3] Neste capiacutetulo a seccedilatildeo 41 apresenta a parte comum aos dois

trabalhos e as seccedilotildees 42 e 43 apresentam as particularidades de cada um A

seccedilatildeo 44 discute uma questatildeo natildeo explicitada em nenhum dos dois trabalhos

41 Meacutetodos para realizar operaccedilotildees booleanas em objetos modelados por pontos

A Figura 5 mostra o resultado do meacutetodo de Adams[2] operaccedilotildees de

uniatildeo diferenccedila e interseccedilatildeo de objetos soacutelidos 3D modelados por pontos

Operaccedilotildees Booleanas com Pontos 30

Figura 5 [2]-A partir de dois modelos por pontos uma heacutelice e uma cabeccedila as trecircs operaccedilotildees booleanas satildeo mostradas da esquerda para a direita uniatildeo diferenccedila e interseccedilatildeo

Sejam A e B objetos 3D soacutelidos modelados por pontos Definem-se os

seguintes elementos

Af ndash superfiacutecie (contorno) de A que estaacute fora de B

Ad ndash superfiacutecie (contorno) de A que estaacute dentro de B

Bf ndash superfiacutecie (contorno) de B que estaacute fora de A

Bd ndash superfiacutecie (contorno) de B que estaacute dentro de A

O resultado da operaccedilatildeo booleana entre A e B seraacute um modelo C cuja

superfiacutecie de contorno pode ser determinada pela seguinte regra [2] que aqui

chamamos de Regra 1

Regra 1 A U B Af + Bf

A cap B Ad + Bd

A ndash B Af + Bd (com a orientaccedilatildeo invertida)

B ndash A Ad (com a orientaccedilatildeo invertida) + Bf

A Figura 6 mostra as operaccedilotildees com dois modelos A e B

(a) (b)

Operaccedilotildees Booleanas com Pontos 31

(c) (d)

Figura 6 [22] (a) Dois modelos A e B (b) Posicionados de forma que A tem

uma parte dentro de B eacute mostrado o resultado A U B Af + Bf (c) Resultado de A ndash B Af

+ Bd (d) Resultado de A cap B Ad + Bd

Bart [2] e Pauly [3] apresentam dois meacutetodos para determinar os

elementos acima Estes dois meacutetodos satildeo construiacutedos a partir dos seguintes

conceitos os elementos Af Ad Bf Bd satildeo uma parte da superfiacutecie modelada por

pontos e portanto satildeo conjuntos de surfels Para determinaacute-los eacute necessaacuteria

entatildeo a classificaccedilatildeo de um surfel (que pode se resumir agrave classificaccedilatildeo de um

ponto que eacute o seu centro) de uma superfiacutecie como dentro ou fora de um outro

modelo Os dois meacutetodos utilizam a seguinte regra para esta classificaccedilatildeo aqui

denominada Regra 2

Regra 2 Dado um ponto x qualquer um volume V determinado por uma superfiacutecie

de contorno S uma amostragem P da superfiacutecie S um ponto p є P que eacute a

amostra mais proacutexima a x um vetor np normal agrave S em p e orientado para fora de

S temos que

(x ndash p) np gt 0 x notinV

Ou seja para classificar um ponto em relaccedilatildeo a um modelo verificamos o

produto interno entre a normal em p (surfel mais proacuteximo a x) e o vetor (x - p)

se este produto interno for maior que zero x natildeo pertence ao volume V e seraacute

classificado como fora senatildeo seraacute classificado como dentro De maneira

ainda mais informal se a normal em p apontar para a direccedilatildeo oposta a x x seraacute

classificado como dentro se apontar para x x seraacute classificado como fora

A Figura 7 mostra a Regra 2

Operaccedilotildees Booleanas com Pontos 32

Figura 7 Para classificar o ponto x encontra-se o surfel p (com normal np) mais proacuteximo

a x Se o produto interno entre np e (x ndash p) for maior que zero entatildeo x eacute classificado como

fora senatildeo seraacute classificado como dentro

A validade da Regra 2 eacute discutida na Seccedilatildeo 44 Uma das restriccedilotildees

teoacutericas para garantir-lhe a validade eacute que a superfiacutecie seja suave

Cada um dos dois meacutetodos daacute um tratamento diferente para o uso desta

regra Pauly usa a regra diretamente encontrando o surfel mais proacuteximo a um

ponto e classificando este ponto a partir deste surfel Ele utiliza tambeacutem a

representaccedilatildeo impliacutecita MLS (Moving Least Squares [18]) para casos em que a

Regra 2 poderia falhar e para tratamento de interseccedilotildees [3] Seu meacutetodo vale

para modelos soacutelidos ou natildeo soacutelidos O meacutetodo de Adams e Dutreacute [2] utiliza

octrees [1] criando uma classificaccedilatildeo dos noacutes da octree a partir desta Regra 2

Os pontos satildeo entatildeo classificados de acordo com o noacute da octree que o conteacutem

Este segundo meacutetodo aplica-se somente a modelos soacutelidos Os dois meacutetodos

seratildeo descritos em detalhes nas seccedilotildees abaixo

Como um surfel eacute considerado um disco podemos dizer que surfels de

dois modelos diferentes podem se intersectar A interseccedilatildeo destes dois surfels

corresponde agrave interseccedilatildeo destes dois discos Estes surfels geram problemas

para visualizaccedilatildeo se forem acrescentados ao resultado sem um tratamento

especiacutefico apresentaratildeo artefatos natildeo desejaacuteveis na renderizaccedilatildeo do modelo

resultado (Figura 8) se natildeo forem acrescentados ao resultado deixaratildeo buracos

no modelo

Operaccedilotildees Booleanas com Pontos 33

Figura 8 [2] -Interseccedilatildeo de duas esferas agrave esquerda sem nenhum tratamento de interseccedilatildeo agrave direita apoacutes o tratamento de interseccedilatildeo

Aleacutem disso nem sempre esta interseccedilatildeo forma uma superfiacutecie suave

Esta interseccedilatildeo pode formar uma aresta viva (seccedilatildeo 4223) gerando

problemas tambeacutem para o uso da Regra 2 que eacute vaacutelida apenas para superfiacutecies

suaves Eacute necessaacuterio entatildeo fazer um tratamento desta superfiacutecie de interseccedilatildeo

(formada por surfels originados de diferentes modelos) O tratamento de cada

um dos meacutetodos para este caso seraacute tambeacutem abaixo apresentado

42 Meacutetodo de Adams e Dutreacute

O meacutetodo aplica-se somente a modelos soacutelidos Para determinaccedilatildeo dos

elementos da aqui chamada Regra 1 (seccedilatildeo 41) este meacutetodo utiliza uma octree

[1] que subdivide o espaccedilo do modelo em trecircs fora dentro ou no contorno do

modelo Estes espaccedilos satildeo determinados pela classificaccedilatildeo dos noacutes da octree a

partir da Regra 2 Tambeacutem eacute usado o meacutetodo TINN - Triangle Inequality Nearest

Neighbour [19] - para otimizar a pesquisa dentro do noacute A seguir descrevemos o

modelo usado neste meacutetodo apresentando os dados associados aos pontos o

tipo de distribuiccedilatildeo e o algoritmo que realiza as operaccedilotildees

421 Modelo por Pontos em Adams e Dutreacute

Os surfels neste meacutetodo contecircm as seguintes informaccedilotildees posiccedilatildeo do

surfel xs orientaccedilatildeo do surfel ns e raio de alcance do surfel rs O surfel pode ser

pensado como um disco ortogonal a ns com centro xs e raio rs O raio eacute

escolhido de tal forma que a projeccedilatildeo dos discos no plano da imagem se

sobreponham

Operaccedilotildees Booleanas com Pontos 34

Os objetos representados satildeo soacutelidos A distribuiccedilatildeo dos surfels eacute

uniforme embora o algoritmo natildeo exija esta condiccedilatildeo Para cada soacutelido eacute

definido um rmax = Max rs o raio de alcance do maior surfel pertencente agrave

superfiacutecie do soacutelido Como o raio eacute escolhido de tal forma que a projeccedilatildeo dos

discos no plano da imagem se sobreponham o controle da amostragem eacute

entatildeo ligado agrave renderizaccedilatildeo

422 Algoritmo de Operaccedilotildees Booleanas

Utilizando objetos modelados da forma descrita acima o meacutetodo realiza

operaccedilotildees de uniatildeo interseccedilatildeo e diferenccedila com modelos soacutelidos Supondo dois

modelos soacutelidos S1 e S2 O algoritmo pode ser dividido nas seguintes etapas

Criaccedilatildeo de uma octree para cada modelo Teste Dentro-Fora Tratamento da

interseccedilatildeo Estas etapas satildeo apresentadas nas proacuteximas seccedilotildees

4221 Criaccedilatildeo de uma octree para cada modelo

Eacute criada uma octree [1] para cada modelo A criaccedilatildeo de uma octree eacute feita

da seguinte forma

Gera-se a ldquoCaixa envolventerdquo caixa alinhada com os eixos que conteacutem

todo o modelo A ldquoCaixa envolventerdquo corresponde ao noacute raiz da octree Este noacute

conteacutem inicialmente todos os surfels do modelo Em seguida o noacute raiz eacute

dividido em oito noacutes filhos Os surfels satildeo distribuiacutedos entre estes oito noacutes Cada

um deles caso contenha surfels eacute dividido novamente em 8 filhos e seus surfels

satildeo redistribuiacutedos entre eles Este processo eacute repetido recursivamente enquanto

o nuacutemero de surfels do noacute for maior que zero ou ateacute uma profundidade maacutexima

preacute-definida da octree ser alcanccedilada

Cada noacute da octree deve ser classificado O objetivo desta classificaccedilatildeo eacute

determinar que parte da octree estaacute dentro do modelo e que parte estaacute fora Os

noacutes da octree satildeo entatildeo classificados como ldquodentrordquo ldquoforardquo e ldquocontornordquo

Podemos ilustrar esta classificaccedilatildeo em 2D a Figura 9 mostra uma quadtree

classificada

Operaccedilotildees Booleanas com Pontos 35

Figura 9-Um objeto representado por pontos com suas normais e sua quadtree correspondente classificada os noacutes cinza claro estatildeo dentro do modelo noacutes cinza mais escuro estatildeo fora do modelo e noacutes com cinza intermediaacuterio satildeo noacutes cheios noacutes que conteacutem pontos

O noacutes que conteacutem surfels satildeo classificados como ldquocontornordquo Para

classificar um noacute vazio existem trecircs casos

o noacute vazio tem apenas um vizinho-irmatildeo natildeo vazio

o noacute vazio tem mais de um vizinho-irmatildeo natildeo vazio

o noacute vazio natildeo tem vizinhos-irmatildeos natildeo vazios

No primeiro caso o noacute vazio eacute classificado pelo seu vizinho natildeo vazio No

segundo caso considera-se qualquer um dos vizinhos natildeo vazios No terceiro

caso classifica-se primeiro os noacutes vizinhos e eacute dada a mesma classificaccedilatildeo para

o noacute vazio Como cada noacute natildeo folha de uma octree tem pelo menos um noacute filho

natildeo vazio sempre pode ser feita a classificaccedilatildeo dos noacutes vazios A classificaccedilatildeo

eacute feita da seguinte forma dentre os surfels do vizinho-irmatildeo escolhido encontra-

se o surfel mais proacuteximo ao noacute a ser classificado Se a normal deste surfel

aponta para o noacute vazio a ser classificado entatildeo ele eacute classificado como ldquoforardquo

Se a normal aponta no sentido contraacuterio entatildeo ele eacute classificado como ldquodentrordquo

De maneira mais formal sejam cv e cc coordenadas dos centros do noacute vazio e

do noacute contorno respectivamente Seja s o surfel mais proacuteximo ao noacute vazio e ns

a normal em s Se ( cv - cc )٠ ns gt 0 ( produto interno entre a normal em s e o

vetor cv - cc for maior que zero ) o noacute vazio seraacute classificado como ldquoforardquo

Senatildeo seraacute classificado como ldquodentrordquo

Em geral os noacutes ldquocontornordquo satildeo subdivididos em trecircs partes uma que estaacute

fora do modelo uma que estaacute dentro do modelo e uma terceira que conteacutem os

surfels Esta subdivisatildeo eacute feita por meio da criaccedilatildeo de dois planos paralelos que

Operaccedilotildees Booleanas com Pontos 36

dividem o noacute Para determinar estes planos calcula-se o vetor nm igual agrave

meacutedia das normais dos surfels do noacute nm = sum ns sum ns onde ns eacute a normal de

cada surfel do noacute

Em seguida encontra-se o surfel com maior produto interno entre a sua

normal e a normal meacutedia d1=Max(nm ٠ ns) Este surfel juntamente com a normal

meacutedia define um dos planos Encontra-se tambeacutem o surfel com menor produto

interno entre a sua normal e a normal meacutedia d2=Min(nm ٠ ns) Este surfel

juntamente com a normal meacutedia define o outro plano A Figura 10 mostra a

divisatildeo de um noacute de uma quadtree nas trecircs partes dentro do modelo fora do

modelo e no ldquocontornordquo

Esta subdivisatildeo aplica-se apenas a noacutes que conteacutem surfels cujas direccedilotildees

natildeo variem em mais de 90 graus Caso isso ocorra ele natildeo seraacute subdividido Ou

seja se um noacute possuir dois vetores normais (de dois surfels diferentes) que

formem um acircngulo maior que 90 graus ele natildeo seraacute subdividido

Figura 10 [2] -Divisatildeo de noacute de contorno a parte agrave esquerda estaacute fora do modelo a parte agrave direita estaacute dentro do modelo e a faixa intermediaacuteria conteacutem os surfels

4222 Teste Dentro-Fora

O Teste Dentro-Fora faz a classificaccedilatildeo dos surfels de um modelo como

ldquodentrordquo ou ldquoforardquo de outro modelo Portanto aplicaremos este mesmo teste duas

vezes uma para o modelo S1 em relaccedilatildeo ao modelo S2 e outra para S2 em

relaccedilatildeo a S1 Vamos mostrar o teste Dentro-Fora para o caso da classificaccedilatildeo

dos surfels do modelo S1 em relaccedilatildeo a S2

Operaccedilotildees Booleanas com Pontos 37

No item anterior foram criadas duas octrees uma para o modelo S1 e

outra para o modelo S2 Chamemos de A e B as octrees de S1 e S2

respectivamente Para classificar S1 em relaccedilatildeo a S2 inicialmente eacute feita uma

avaliaccedilatildeo da posiccedilatildeo de A em relaccedilatildeo a B A e B podem estar nas seguintes

situaccedilotildees

- A natildeo intersecta B

- A intersecta apenas noacutes ldquoforardquo de B

- A intersecta apenas noacutes ldquodentrordquo de B

- A intersecta noacutes ldquoforardquo e noacutes ldquodentrordquo de B

Para testar estas situaccedilotildees os noacutes satildeo aumentados de rmax o raio do

maior surfel do modelo soacutelido Isto eacute feito para compensar o fato de que o surfel

natildeo eacute apenas um ponto mas sim considerado como um disco

No primeiro e no segundo caso todos os surfels de A satildeo classificados

como ldquoforardquo No terceiro caso todos os surfels de A satildeo classificados como

ldquodentrordquo

No quarto caso temos que percorrer a octree A Comeccedilando pelo noacute raiz

percorre-se os filhos deste noacute Para cada filho os quatro testes acima satildeo feitos

Se o noacute filho encontra-se em um dos trecircs primeiros casos a classificaccedilatildeo eacute dada

como foi citada acima Se um filho estaacute no quarto caso e natildeo eacute um noacute folha

repete-se recursivamente o mesmo procedimento para seus filhos ateacute encontrar-

se um noacute folha Para um noacute que estaacute no quarto caso e eacute folha percorre-se a lista

de surfels que este noacute conteacutem classificando cada um destes surfels Seja sa um

surfel desta lista Para este caso percorre-se a octree B para classificar sa

Primeiramente encontramos o noacute de B que conteacutem sa Se este noacute de B foi

dividido testa-se de acordo com esta divisatildeo do noacute se o surfel sa estaacute na parte

do noacute que estaacute dentro do modelo ele eacute classificado como ldquodentrordquo se sa estaacute na

parte que estaacute fora do modelo ele eacute classificado como ldquoforardquo se sa estaacute na parte

intermediaacuteria ou se o noacute de B natildeo foi subdividido em planos encontra-se sb que

eacute o surfel pertencente a este noacute de B que estaacute mais proacuteximo de sa sa seraacute

entatildeo classificado de acordo com sb Se ( sa - sb )٠ nb gt 0 sa eacute classificado

como ldquoforardquo senatildeo eacute classificado como ldquodentrordquo Se os discos de sb e sa se

intersectam sa eacute marcado como interseccedilatildeo Para encontrar sb o algoritmo

implementa o meacutetodo TINN ndash Triangle Inequality Nearest Neighbour [19]

Operaccedilotildees Booleanas com Pontos 38

4223 Tratamento da interseccedilatildeo

Os surfels de A que intersectam surfels de B satildeo classificados como

ldquointerseccedilatildeordquo Se eles natildeo forem incluiacutedos no modelo resultado o soacutelido resultado

teraacute buracos Se eles forem incluiacutedos sem algum tratamento eles natildeo

representaratildeo adequadamente a regiatildeo Em geral o surfel sa (um surfel

ldquointerseccedilatildeordquo de A) eacute dividido em dois pelo plano que conteacutem o surfel sb (surfel de

B que sa intersecta) uma parte que estaacute fora de B e outra que estaacute dentro de B

Dependendo da operaccedilatildeo que estaacute sendo realizada vamos querer manter uma

destas partes do surfel sa no modelo resultado Seja xa a posiccedilatildeo do surfel sa e o

surfel sa uma circunferecircncia de centro xa e raio ra igual ao raio de alcance de sa

O plano que conteacutem o surfel sb define uma corda desta circunferecircncia como

mostra a Figura 11 O surfel sa seraacute substituiacutedo por um surfel menor que

ultrapassa esta corda de uma distacircncia e definida pelo usuaacuterio Para cobrir

completamente a interseccedilatildeo seratildeo adicionados surfels menores que cruzam a

corda de interseccedilatildeo

Figura 11 -Interseccedilatildeo do surfel s e do plano que passa pelo surfel t o surfel mais proacuteximo a s O surfel s eacute substituiacutedo por trecircs surfels menores

Operaccedilotildees Booleanas com Pontos 39

O tratamento de interseccedilatildeo proposto por Adams e Dutreacute [2] natildeo soacute evita

os buracos mas tambeacutem cria uma forma de renderizaccedilatildeo de arestas vivas A

colocaccedilatildeo de vaacuterios pequenos surfels na regiatildeo da interseccedilatildeo permite esta

correta renderizaccedilatildeo das ldquoarestas vivasrdquo Desta forma o problema das arestas

vivas eacute resolvido na modelagem (Figura 12) A vantagem de se resolver o caso

na modelagem eacute que natildeo eacute necessaacuterio fazer um tratamento especial na

renderizaccedilatildeo para que mostre esta aresta viva Diferente do tratamento feito

em Pauly (seccedilatildeo 431) que resolve esta questatildeo em tempo de renderizaccedilatildeo

Aleacutem disso o tratamento resolve alguns casos onde a Regra 2 poderia falhar

(veja em Validade da Regra 2-seccedilatildeo 44)

Figura 12 [2] -Agrave direita eacute mostrado o resultado do tratamento de interseccedilatildeo para o caso de Arestas Vivas do objeto agrave esquerda

43 Meacutetodo de Pauly

O meacutetodo aplica-se a objetos soacutelidos e natildeo soacutelidos Os modelos podem ser

obtidos a partir de diferentes entradas como nuvem de pontos irregulares ou por

meio de scanners 3D Cria um modelo hiacutebrido destes objetos usa o modelo por

pontos juntamente com a representaccedilatildeo impliacutecita Moving Least Squares - MLS

[18] Realiza operaccedilotildees booleanas com pontos e utiliza adicionalmente MLS

para alguns casos de classificaccedilatildeo de surfels e no tratamento de interseccedilatildeo A

seguir apresentamos as caracteriacutesticas do modelo por pontos deste meacutetodo e o

algoritmo que realiza as operaccedilotildees

Operaccedilotildees Booleanas com Pontos 40

431 Modelo em Pauly

O modelo eacute uma estrutura hiacutebrida de pontos com a representaccedilatildeo impliacutecita

Moving Least Squares - MLS [18] Esta estrutura eacute usada para fazer operaccedilotildees

booleanas e tambeacutem operaccedilotildees de free-form (natildeo abordadas nesta

dissertaccedilatildeo) Para operaccedilotildees booleanas a representaccedilatildeo MLS permite que a

curva de interseccedilatildeo entre os modelos seja reconstruiacuteda e surfels sejam

colocados nesta curva e em alguns casos de classificaccedilatildeo de surfels mostrados

na seccedilatildeo 432 Para este modelo natildeo existem restriccedilotildees quanto agrave forma do

objeto

Os surfels contecircm informaccedilotildees sobre sua posiccedilatildeo e sua normal Aleacutem

disso surfels podem conter informaccedilotildees adicionais como textura cor

propriedades de materiais

A distribuiccedilatildeo dos surfels eacute natildeo-uniforme e a amostragem eacute

aproximadamente adequada (Veja seccedilatildeo 44)

432 Algoritmo de Operaccedilotildees Booleanas

O algoritmo classifica surfels de um modelo como ldquodentrordquo ou ldquoforardquo de

outro modelo Antes de colocarmos como eacute feita esta classificaccedilatildeo devemos

acrescentar que Pauly estende esta classificaccedilatildeo para modelos que natildeo satildeo

soacutelidos Ou seja mesmo um modelo natildeo soacutelido divide o espaccedilo da cena (espaccedilo

em que se encontra o modelo) em dois sub-espaccedilos dentro ou fora do modelo

Pauly faz esta subdivisatildeo da seguinte forma

Como a superfiacutecie que determina o modelo eacute orientada (conteacutem vetores

normais agrave superfiacutecie que apontam para ldquoforardquo do modelo) Pauly considera que

um modelo natildeo soacutelido divide o espaccedilo em dois sub-espaccedilos um ldquoforardquo do

modelo (os vetores normais apontam para este sub-espaccedilo) e um que estaacute

ldquodentrordquo do modelo (os vetores normais apontam para direccedilatildeo oposta a este sub-

espaccedilo) Por exemplo um plano eacute representado como um conjunto de surfels

contidos num determinado espaccedilo geomeacutetrico plano π Cada surfel conteacutem um

vetor normal direcionado Este modelo divide entatildeo o espaccedilo em dois sub-

espaccedilos o sub-espaccedilo que eacute apontado por estes surfels (considerado ldquoforardquo do

modelo) e o sub-espaccedilo que estaacute na direccedilatildeo oposta (considerado ldquodentrordquo do

modelo) Desta forma ele aplica as classificaccedilotildees de ldquodentrordquo e ldquoforardquo de um

modelo tambeacutem a modelos natildeo soacutelidos A partir desta consideraccedilatildeo as

Operaccedilotildees Booleanas com Pontos 41

operaccedilotildees booleanas satildeo realizadas com os modelos natildeo soacutelidos da mesma

forma que com os modelos soacutelidos

Para determinar esta classificaccedilatildeo (dentro ou fora do modelo) Pauly utiliza

a Regra 2 Para pesquisa do surfel mais proacuteximo o meacutetodo usa a estrutura Kd-

tree [16] e tambeacutem o algoritmo ANN [16] No entanto o meacutetodo apresenta uma

restriccedilatildeo da Regra 2 ela soacute deve ser usada para classificaccedilotildees de pontos x se

a distacircncia x-p for maior que o espaccedilamento da amostragem local ηp em p

Este espaccedilamento da amostragem local ηp em p eacute um caacutelculo aproximado da

distacircncia meacutedia entre os surfels vizinhos a p Se x estaacute muito proacuteximo agrave

superfiacutecie a classificaccedilatildeo pode falhar Neste caso ele calcula o ponto exato de

S mais proacuteximo a x usando a projeccedilatildeo MLS (ldquoMoving Least Squaresrdquo)

Por questotildees de melhoria de desempenho utiliza-se o fato de que sendo

Ωp (x) a classificaccedilatildeo do ponto x em relaccedilatildeo agrave amostragem P tem-se que Ωp (x)

= Ωp (xrsquo) para todos os pontos de xrsquo que estatildeo dentro da esfera de centro x e

raio igual a x-p - ηp (onde p eacute o surfel mais proacuteximo e ηp eacute o espaccedilamento

local da amostragem em p acima citado) Ou seja sendo x um ponto qualquer p

o surfel mais proacuteximo a x ηp eacute o espaccedilamento local da amostragem em p se

desenharmos uma esfera com centro x e raio igual a x-p - ηp temos que

todos os pontos xrsquo que estatildeo dentro da esfera teratildeo a mesma classificaccedilatildeo de x

Desta forma o nuacutemero de vezes que a classificaccedilatildeo eacute feita (pesquisando-se o

surfel mais proacuteximo ao ponto e usando a Regra 2) diminui em ateacute 90 Assim

em geral a classificaccedilatildeo de um surfel eacute obtida a partir do seu surfel vizinho

Dados

S1 a superfiacutecie MLS de contorno que define o modelo A

S2 a superfiacutecie MLS de contorno que define o modelo B

P1 o conjunto de surfels que representa a superfiacutecie S1

P2 o conjunto de surfels que representa a superfiacutecie S2

Ωp1 (x) a classificaccedilatildeo do ponto p em relaccedilatildeo a uma amostragem P1

Q1 o subconjunto de P1 que vai compor o resultado

Ωp2 (x) a classificaccedilatildeo do ponto p em relaccedilatildeo a uma amostragem P2

Q2 o subconjunto de P2 que vai compor o resultado

Os conjuntos Q1 e Q2 satildeo obtidos por meio da Tabela 1 mostrada abaixo

Operaccedilotildees Booleanas com Pontos 42

Tabela 1 Classificaccedilatildeo para operaccedilotildees booleanas

Para o tratamento de interseccedilatildeo neste meacutetodo satildeo computados pontos

que caem exatamente na curva de interseccedilatildeo e estes satildeo acrescentados ao

modelo resultado Estes pontos satildeo determinados de forma que a densidade da

amostragem vai crescendo agrave medida que os surfels se aproximam da curva de

interseccedilatildeo e convergem para este ponto de interseccedilatildeo como mostra a Figura

13

(a) (b) (c)

Figura 13 - Os novos surfels satildeo colocados exatamente na curva de interseccedilatildeo

e convergem para o ponto de interseccedilatildeo

A Figura 14 mostra o processo de encontrar os surfels que caem nesta

curva de interseccedilatildeo Inicialmente satildeo encontrados todos os pontos de Q1 e Q2

que estatildeo proacuteximos agrave curva de interseccedilatildeo por meio da funccedilatildeo de distacircncia do

operador de projeccedilatildeo MLS Em seguida procura-se todos os pares mais

proacuteximos (q1 є Q1 q2 є Q2 ) e computa-se o ponto q na curva de interseccedilatildeo da

seguinte forma (veja a Figura 14)Seja r o ponto na linha de interseccedilatildeo dos dois

planos tangentes em q1 e q2 e que estaacute mais proacuteximo a estes dois pontos isto eacute

que minimiza a distacircncia ||r-q1|| + ||r-q2|| r eacute a primeira aproximaccedilatildeo de q e agora

pode ser projetado sobre S1 e S2 para obter dois novos pontos de partida q1rsquo e q2

rsquo

para a iteraccedilatildeo Este procedimento pode ser repetido iterativamente ateacute que os

pontos q1 e q2 convirjam ao ponto q na curva de interseccedilatildeo Normalmente este

processo requer menos de trecircs iteraccedilotildees

Operaccedilotildees Booleanas com Pontos 43

(a) (b)

(c)

Figura 14 (a) Suponhamos a reta que eacute a interseccedilatildeo do plano tangente a S1 em q1 e o

plano tangente a S2 em q2 O ponto r eacute o ponto desta reta que estaacute mais proacuteximo a q1 e

q2 (b) r eacute projetado sobre S1 e S2 obtendo-se q1acute e q2acute dois novos pontos de partida

para nova iteraccedilatildeo (c) A nova iteraccedilatildeo gera r que eacute uma aproximaccedilatildeo melhor de q

Pauly faz o tratamento de arestas vivas em tempo de renderizaccedilatildeo Ele

faz uma alteraccedilatildeo no renderizador Marca os surfels de interseccedilatildeo e ao

renderizaacute-los satildeo cortados para gerar uma aresta viva

44 Validade da Regra 2

Os dois meacutetodos analisados nesta dissertaccedilatildeo utilizam a seguinte regra

para a classificaccedilatildeo de um surfel

Regra 2 dado um volume V determinado por uma superfiacutecie de contorno

S uma amostragem P da superfiacutecie S um ponto x qualquer um ponto p є P que

eacute a amostra mais proacutexima a x um vetor ny normal a S em p e orientado para

fora de S temos que (x ndash p) np gt 0 x notinV

Em [16] eacute colocado que esta regra eacute tirada da seguinte propriedade da

geometria diferencial (aqui chamada Propriedade 1)

Propriedade 1 Dado um volume V determinado por uma superfiacutecie de

contorno S contiacutenua e duplamente diferenciaacutevel um ponto x qualquer um ponto

Operaccedilotildees Booleanas com Pontos 44

y є S que eacute o ponto de S mais proacuteximo a x um vetor ny normal a S em y e

orientado para fora de S temos que (x ndash y) ny gt 0 x notinV

A Figura 15 ilustra esta propriedade

Figura 15 Para verificar se o ponto x estaacute fora de um contorno C encontra-se o ponto y

de C Se o produto interno entre a normal em y e o vetor que liga y a x for maior que

zero entatildeo x estaacute fora de C senatildeo estaacute dentro de C

Pauly assume que tendo uma amostragem P da superfiacutecie S podemos

usar a Propriedade 1 substituindo y por p o surfel mais proacuteximo ao ponto x (x ndash

p) np gt 0 x notinV (Regra 2) Esta amostragem P em seu trabalho eacute

(aproximadamente) uma ldquoamostragem adequadardquo Tambeacutem seu tratamento de

interseccedilatildeo cria uma aproximaccedilatildeo dela (seccedilatildeo 43) Empiricamente a

ldquodiscretizaccedilatildeo da propriedaderdquo eacute vaacutelida a partir desta suposiccedilatildeo Mas isso natildeo foi

demonstrado teoricamente em seu trabalho

Pauly coloca em [16] que natildeo existe ainda uma teoria matemaacutetica rigorosa

de amostragem anaacuteloga a teoria de Fourier para superfiacutecies discretas

A melhor aproximaccedilatildeo teoacuterica para esta aacuterea eacute o uso do Eixo Medial que

foi colocado em [10] Vamos descrever este trabalho brevemente nesta seccedilatildeo

Este trabalho apresenta um algoritmo de reconstruccedilatildeo de superfiacutecie que parte de

uma amostragem adequada (abaixo definida) de pontos e obteacutem uma malha

que eacute topologicamente equivalente agrave superfiacutecie do objeto e agrave medida que a

densidade da amostragem cresce a saiacuteda converge para esta superfiacutecie

Para definir amostragem adequada o trabalho parte do conceito de Eixo

Medial

Operaccedilotildees Booleanas com Pontos 45

ldquoEixo Medialrdquo de uma superfiacutecie 2D posicionada no R3 eacute o conjunto

(fechado) de pontos pi para os quais buscando-se o ponto da superfiacutecie que

estaacute mais proacuteximo a pi mais de um ponto pertencentes a esta superfiacutecie satildeo

encontrados A Figura 16 abaixo ilustra o Eixo Medial em 2D

Figura 16 [10] As curvas de cor mais clara satildeo o Eixo Medial da curva em preto

Em duas dimensotildees os veacutertices de Voronoi de uma amostragem densa

aproximam o ldquoEixo Medialrdquo da amostragem (mas esta propriedade natildeo se

estende a 3D) A Figura 17 mostra o Eixo Medial em 3D

Figura 17 [10] Em 3D geralmente o Eixo Medial eacute uma superfiacutecie 2D (em cor mais

clara) Aqui o quadrado eacute o Eixo Medial da superfiacutecie transparente que o contorna

Podemos definir agora a amostragem adequada da seguinte forma

Supondo uma superfiacutecie suave que quer dizer uma 2-manifold duplamente

diferenciaacutevel posicionada no R3 uma ldquoamostragem adequadardquo desta superfiacutecie eacute

aquela na qual a densidade da amostragem eacute (pelo menos) inversamente

proporcional agrave distacircncia ao ldquoEixo Medialrdquo A Figura 18 mostra uma amostragem

adequada

Operaccedilotildees Booleanas com Pontos 46

Figura 18 [10] A figura mostra o diagrama de Voronoi de uma amostragem de pontos S

Da mesma forma que o a amostragem aproxima a curva os veacutertices de Voronoi

aproximam o Eixo Medial

Na praacutetica na reconstruccedilatildeo da superfiacutecie uma aproximaccedilatildeo deste ldquoEixo

Medialrdquo eacute computada (devido agrave dificuldade de computaacute-lo exatamente e em

alguns casos ateacute impossibilidade)

Melhorias Propostas 47

5 Melhorias Propostas

No capiacutetulo 4 apresentamos dois meacutetodos que realizam operaccedilotildees

booleanas em modelos por pontos o meacutetodo de Adams e Dutreacute [2] e o meacutetodo

de Pauly[3] Para esta dissertaccedilatildeo usamos o meacutetodo de Adams e Dutreacute [2] e

propomos as seguintes melhorias

- Alteramos o momento em que eacute feita a classificaccedilatildeo da octree Fazemos

esta classificaccedilatildeo durante a sua criaccedilatildeo Os noacutes filhos de um noacute pai P qualquer

satildeo classificados logo apoacutes a criaccedilatildeo de todos estes filhos de P

independentemente do restante da octree ter sido criada Isso pode ser feito

porque a octree eacute construiacuteda na ordem raiz-esquerda-direita (preorder

traversal) e portanto apoacutes todos os filhos de um noacute pai serem criados a parte

necessaacuteria da octree para a classificaccedilatildeo destes filhos jaacute estaacute criada

- A classificaccedilatildeo da octree eacute otimizada classificando-se os cantos dos seus

noacutes como dentro ou fora do modelo Na classificaccedilatildeo de um noacute n1 a partir de seu

vizinho n2 se os cantos que satildeo comuns a n1 e n2 tiverem a mesma

classificaccedilatildeo esta seraacute dada ao noacute Assim diminuiacutemos o nuacutemero de pesquisas

pelo surfel mais proacuteximo que eacute a parte criacutetica da classificaccedilatildeo dos noacutes da octree

em termos de tempo de processamento

- Acrescentamos um valor miacutenimo (maior que zero) para o nuacutemero de

surfels contidos em um noacute que eacute uma das condiccedilotildees de parada na criaccedilatildeo da

octree Verificamos que desta forma diminui-se a chance de erro na classificaccedilatildeo

de partes criacuteticas como ldquoarestas vivasrdquo

Uma comparaccedilatildeo entre a nossa implementaccedilatildeo e a de Pauly tambeacutem seraacute

feita no capiacutetulo 6

51 Descriccedilatildeo do algoritmo

O algoritmo implementado para esta dissertaccedilatildeo baseado no meacutetodo de

Adams e Dutreacute [2] pode ser dividido nas seguintes partes Criaccedilatildeo e

classificaccedilatildeo de uma octree para cada modelo Teste DentroFora Criaccedilatildeo do

modelo resultado Natildeo foi implementado tratamento especial algum de

interseccedilatildeo para o nosso plugin As proacuteximas seccedilotildees apresentam estas partes

Melhorias Propostas 48

511 Criaccedilatildeo e classificaccedilatildeo de uma octree para cada modelo

As ideacuteias do algoritmo satildeo aqui ilustradas em 2D mas a extensatildeo delas

para 3D eacute feita facilmente

Para cada modelo a octree eacute criada e classificada da seguinte forma

Figura 19-Quadtree classificada Os noacutes mais escuros estatildeo fora do modelo os mais claros dentro e os em tom intermediaacuterio satildeo noacutes de contorno

Gera-se uma ldquocaixa envolventerdquo do modelo contendo todos os surfels e

cria-se o noacute raiz da octree que corresponde a esta ldquocaixa envolventerdquo Este noacute

raiz eacute subdividido em oito filhos e seus surfels satildeo distribuiacutedos entre eles Ao

inveacutes de testarmos os valores de xy e z para cada surfel a fim de determinar

para qual filho ele iraacute utilizamos listas auxiliares Primeiro os surfels satildeo

subdivididos em dois grupos pelos valores de x e armazenados em uma lista

auxiliar Em seguida cada uma das listas eacute subdividida pelo valor de y e as

quatro listas obtidas seratildeo subdivididas pelo valor de z Ao final teremos 8 listas

de surfels cada uma delas pertencente a um filho

Cada noacute seraacute entatildeo novamente subdividido enquanto contiver um nuacutemero

de surfels gt nmin (valor preacute-definido) ou enquanto a profundidade da aacutervore lt pmax

(valor preacute-definido) Na figura 19 pmax = 3 e nmin = 3

Melhorias Propostas 49

Figura 20-O noacute cheio eacute dividido em trecircs partes agrave esquerda a regiatildeo estaacute dentro do modelo agrave direita estaacute fora e entre as duas linhas que dividem o noacute estaacute a regiatildeo que conteacutem os surfels

Os noacutes cheios recebem um tratamento especial Eles satildeo subdivididos em

trecircs partes da seguinte forma uma que estaacute fora do modelo outra que estaacute

dentro e uma que conteacutem os surfels Esta subdivisatildeo eacute feita por meio da criaccedilatildeo

de dois planos paralelos que dividem o noacute Para determinar estes planos

calcula-se o vetor nm igual agrave meacutedia das normais dos surfels do noacute nm = sum ns

sum ns onde ns eacute a normal de cada surfel do noacute Em seguida encontra-se o

surfel com maior produto interno entre a sua normal e a normal meacutedia

d1=Max(nm ٠ ns) Este surfel juntamente com a normal meacutedia define um dos

planos Encontra-se tambeacutem o surfel com menor produto interno entre a sua

normal e a normal meacutedia d2=Min (nm ٠ ns) Este surfel juntamente com a normal

meacutedia define o outro plano (Figura 20) Se o noacute conteacutem surfels de superfiacutecies de

orientaccedilotildees diferentes ele natildeo seraacute subdividido ou seja os planos coincidiratildeo

com os planos que delimitam o proacuteprio noacute Este teste foi implementado da

seguinte forma escolhe-se um surfel qualquer do noacute Calcula-se o produto

interno entre a normal deste surfel e as outras normais dos outros surfels deste

noacute Se algum produto interno for menor que zero este noacute natildeo seraacute subdividido

Apoacutes a etapa de subdivisatildeo classificam-se os oito cantos deste noacute como

dentro ou fora do modelo por meio da classificaccedilatildeo de um ponto que

descreveremos na sub-seccedilatildeo 5111

Melhorias Propostas 50

a b

c d

Figura 21-O noacute a eacute classificado pelo noacute c o noacute d tambeacutem eacute classificado pelo noacute c a classificaccedilatildeo do noacute a eacute propagada para o noacute b

Jaacute os noacutes vazios da octree seratildeo classificados como ldquodentrordquo ou ldquoforardquo do

modelo da seguinte forma cada noacute folha vazio eacute classificado a partir de um de

seus irmatildeos vizinhos adjacentes Se ele possuir um vizinho adjacente cheio ele

seraacute classificado por este vizinho se natildeo possuir os vizinhos adjacentes seratildeo

classificados primeiro e ele teraacute esta mesma classificaccedilatildeo (Figura 21) Como tem

que existir sempre pelo menos um noacute cheio entre os filhos de um noacute pai entatildeo

sempre esta classificaccedilatildeo poderaacute ser feita Com a classificaccedilatildeo de todos os

filhos tem-se tambeacutem a classificaccedilatildeo dos cantos do noacute pai

Mf03c003fmx a b

Figura 22-Os cantos a e b do noacute cheio possuem a mesma classificaccedilatildeo fora do modelo Esta classificaccedilatildeo foi dada ao noacute vazio adjacente

Melhorias Propostas 51

Para classificar um noacute vazio por meio de um noacute cheio verificam-se os

cantos comuns destes dois noacutes se todos os cantos tiverem a mesma

classificaccedilatildeo esta seraacute dada ao noacute vazio (Figura 22) Se houver classificaccedilotildees

diferentes escolhe-se o surfel do noacute cheio mais proacuteximo ao noacute vazio faz-se o

produto interno entre a normal deste surfel e o vetor que liga o centro do noacute

cheio ao centro do noacute vazio (ou o vetor que liga o surfel ao centro do noacute vazio)

Se o produto interno for maior que zero o noacute eacute classificado como ldquoforardquo senatildeo eacute

classificado como ldquodentrordquo Para encontrar o surfel (pertencente a um noacute cheio)

mais proacuteximo ao noacute vazio existem dois casos

- O noacute cheio eacute folha percorre-se toda a lista de surfels e escolhe o surfel

mais proacuteximo da fronteira entre o noacute cheio e o vazio

- O noacute cheio natildeo eacute um noacute folha percorrem-se os filhos do noacute cheio ou seja

esta pesquisa eacute feita descendo na octree a partir do noacute cheio procurando o

surfel mais proacuteximo agrave fronteira do pai com o noacute vazio a ser classificado

Classificando o centro do noacute vazio todo o noacute deve ter a mesma

classificaccedilatildeo pois este noacute natildeo conteacutem surfels Para encontrar o surfel do noacute

vazio mais proacuteximo da fronteira entre o noacute cheio e o vazio basta testar o valor da

coordenada se a fronteira eacute o lado direito do noacute cheio escolhe-se o surfel com

maior coordenada lsquoxrsquo se eacute o lado esquerdo escolhe-se o surfel com menor lsquoxrsquo

se lado superior surfel com maior lsquoyrsquo etc A seguir apresentamos a classificaccedilatildeo

de um ponto qualquer pertencente a um noacute cheio

Figura 23- Quadtree classificada

Melhorias Propostas 52

5111 Classificaccedilatildeo de um ponto de um noacute cheio

Figura 24 [2] A normal n eacute a normal meacutedia e os surfels s1 e s2 juntamente com a normal

n definem as retas que dividem o noacute O ponto a estaacute fora do modelo e o ponto b estaacute

dentro do modelo

Para um ponto localizado dentro do noacute faz-se o seguinte teste se o noacute foi

dividido testa-se de acordo com a divisatildeo do noacute se o ponto estaacute na parte do noacute

que estaacute dentro do modelo ele eacute classificado como ldquodentrordquo se o ponto estaacute na

parte que estaacute fora do modelo ele eacute classificado como ldquoforardquo (Figura 24) se o

ponto estaacute na parte que conteacutem os surfels encontra-se o surfel s pertencente ao

noacute mais proacuteximo do ponto e o classifica de acordo com s seja ns a normal em s

cs a coordenada de s cp a coordenada do ponto Se (cp - cs )٠ ns gt 0 o ponto

seraacute classificado como ldquoforardquo Senatildeo seraacute classificado como ldquodentrordquo

Se o noacute natildeo foi dividido em planos esta classificaccedilatildeo a partir do surfel

mais proacuteximo seraacute sempre feita

512 Teste DentroFora

Melhorias Propostas 53

Figura 25-Duas circunferecircncias e suas quadtrees correspondentes

O Teste DentroFora classifica os surfels de um modelo como dentro ou

fora de outro modelo ou na sua interseccedilatildeo Este teste foi aqui implementado

exatamente como foi proposto em Adams e Dutreacute [2] exceto que natildeo foi

implementado o meacutetodo TINN - Triangle Inequality Nearest Neighbour [19]

Cada octree eacute percorrida verificando-se se os seus noacutes ou surfels estatildeo dentro

fora ou no contorno do outro modelo (Figura 25) Sejam A e B duas octrees e

queremos classificar a octree A As duas octrees (AB) satildeo percorridas partindo

da raiz

Para cada noacute de A existem quatro casos (Figura 26) Para testar estas

situaccedilotildees os boxes dos noacutes satildeo aumentados de rmax o raio do maior surfel do

modelo Isto eacute feito para compensar o fato de que o surfel natildeo eacute apenas um

ponto mas sim considerado como um disco

Os quatro casos satildeo

Se o noacute de A natildeo intersecta B entatildeo todos os surfels deste noacute satildeo

classificados como fora

Se o noacute de A intersecta apenas noacutes de B que estatildeo fora do modelo

todos os surfels deste noacute satildeo fora

Se o noacute de A intersecta apenas noacutes de B que estatildeo dentro do modelo

todos os surfels deste noacute satildeo dentro

Melhorias Propostas 54

Se o noacute de A intersecta noacutes de B que estatildeo dentro e tambeacutem noacutes de B

que estatildeo fora testa-se se este noacute de A eacute ou natildeo folha Se natildeo for folha

percorre-se os filhos deste noacute de A ateacute encontrar um noacute folha cheio que

intersecta B Para cada surfel sa deste noacute folha de A encontra-se o surfel de B

mais proacuteximo e classifica-se a coordenada de sa da forma apresentada na seccedilatildeo

5111 Seja sb o surfel usado na classificaccedilatildeo de sa Se os discos de sb e sa

se intersectam sa eacute classificado como ldquointerseccedilatildeordquo

(a) (b)

(c) (d)

Figura 26- a modelos natildeo se intersectam b modelo intersecta noacutes fora c modelo intersecta apenas noacutes dentro d modelo intersecta noacutes dentro e noacutes fora

513 Criaccedilatildeo do modelo resultado

Um novo modelo eacute criado com os seguintes surfels (de acordo com a

operaccedilatildeo booleana escolhida pelo usuaacuterio - veja Regra 1 da seccedilatildeo 41)

Uniatildeo - surfels de A que estatildeo fora de B + surfels de B que estatildeo fora de A

Melhorias Propostas 55

Interseccedilatildeo - surfels de A que estatildeo dentro de B + surfels de B que estatildeo

dentro de A

Diferenccedila A-B - surfels de A que estatildeo fora de B + surfels de B que estatildeo

dentro de A (com orientaccedilatildeo invertida)

Como natildeo foi implementado tratamento especial algum de interseccedilatildeo para

o nosso plugin os surfels que se intersectam satildeo mantidos no modelo resultado

final sem modificaccedilotildees

Descrito o algoritmo vejamos a seguir a sua implementaccedilatildeo

52 Implementaccedilatildeo

Este algoritmo foi implementado na forma de um plugin para o software

PointShop 3D [11] Este plugin foi desenvolvido na linguagem C e no sistema

operacional Windows

A escolha deste tipo de implementaccedilatildeo permitiu-nos usar o software

PointShop para os testes do algoritmo Estes testes foram feitos com os modelos

disponibilizados para o PointShop [11] Nesta seccedilatildeo apresentaremos o software

PointShop e as principais estruturas de dados usadas em nosso plugin

O Pointshop eacute um software aberto com seu coacutedigo disponiacutevel e preparado

para trabalhar com plugins Eacute um software de ediccedilatildeo de modelos 3D por pontos

Ele permite aleacutem de visualizar o modelo alterar as suas caracteriacutesticas como

cor brilho e fazer mapeamento de textura iluminaccedilatildeo filtragem (Figura 27)

Melhorias Propostas 56

Figura 27-Software PointShop 3D com dois modelos carregados na sua cena

Aleacutem disso pode-se criar uma cena com vaacuterios modelos e visualizaacute-los de

qualquer ponto de vista Implementa o virtual trackball para rotacionaacute-los e

transladaacute-los Usa uma iluminaccedilatildeo simples direcional A sua arquitetura eacute

extensiacutevel permite que o usuaacuterio adicione seus proacuteprios componentes ao

sistema Possui trecircs tipos de componentes

ldquoToolsrdquo fornece funcionalidades para ediccedilatildeo interativa de superfiacutecie Satildeo

disponibilizados na ldquotoolbarrdquo

Plugins fornece funcionalidades para processar em um soacute passo

modelos ou partes deles selecionadas Satildeo disponibilizados no menu ldquoPluginsrdquo

Renderes fornece funcionalidades de display para os modelos

Para esta dissertaccedilatildeo foi escolhida a construccedilatildeo do componente Plugin

por adequar-se agrave nossa proposta e ser a mais simples de ser construiacuteda O

PointShop [11] jaacute conteacutem uma tool que executa operaccedilotildees booleanas e

deformaccedilatildeo free-form sobre os modelos carregados na cena usando o meacutetodo

de Pauly [3] apresentado no capiacutetulo 4 O nosso plugin Operaccedilotildees Booleanas

implementa o algoritmo descrito na seccedilatildeo anterior baseado na proposta de

Melhorias Propostas 57

Adams e Dutreacute [2] Uma comparaccedilatildeo entre o nosso plugin e a tool de Pauly [3] eacute

feita no capiacutetulo 6

Figura 28-Menu do PointShop com o plugin e as opccedilotildees para operaccedilotildees booleanas

Para se executar o plugin o usuaacuterio precisa carregar dois modelos na

cena do PointShop acionar o plugin informando a operaccedilatildeo que seraacute executada

O plugin executaraacute o algoritmo acima proposto e carregaraacute o resultado na cena

do Pointshop retirando os modelos anteriores

521 Estruturas de Dados

Como vimos o software PointShop [11] trabalha com modelos por pontos

Um modelo deste software descrito na seccedilatildeo 42 conteacutem todas as informaccedilotildees

que o algoritmo proposto em Bart [2] necessita Abaixo relacionamos as

Melhorias Propostas 58

principais estruturas de dados do PointShop usadas no plugin e as principais

estruturas de dados do nosso plugin

As principais classes do PointShop usadas no plugin satildeo

Classe Scene

Classe Objects

Classe SurfelColections

Classe Surfel

Classe StatusBar

Classe Transformer

A hierarquia de dados eacute a seguinte a Scene conteacutem vaacuterios Objects os

quais conteacutem SurfelColections Cada SurfelColections conteacutem Surfels que

suportam uma ou mais propriedades tais como cor difusa cor especular

Classe Scene Classe que representa uma cena que conteacutem modelos

Classe Object Um modelo eacute representado pela classe Object que

conteacutem uma SurfelCollection e as matrizes de transformaccedilatildeo para rotaccedilatildeo

escala e translaccedilatildeo Cada Object eacute identificado pelo seu nome que eacute uacutenico na

Scene O meacutetodo getUniqueName retorna um nome uacutenico Cada Object tem sua

proacutepria matriz de transformaccedilatildeo que pode ser modificada com setRotation

rotate setPosition translate setScale e scale Objects podem ser copiados com

copy Objects consiste em um conjunto de surfels os quais podem ser

recuperados pela getSurfelCollection O Object pode ser ativado com

setActiveObject e recuperado com getActiveObject

Objects podem ser adicionados ou removidos com addObject e

removeObject Os Objects podem ser obtidos pela getFirstObject e

getNextObject

Classe SurfelCollection representa o conjunto de surfels de um modelo

Cada surfelcollection consiste em um conjunto de surfels (SurfelInterface) de

tamanho obtido por getNofSurfels Os surfels podem ser recuperados com

getFirstSurfel getCurrentSurfel e getNextSurfel

A SurfelCollection conteacutem um PropertyDescriptor e uma SurfelList

A SurfelList eacute uma lista duplamente encadeada de surfels Possui os

atributos firstSurfel lastSurfel currentSurfel que satildeo ponteiros para uma

SurfelInterface nSurfels que eacute o nuacutemero de Surfels

A SurfelInterface define a API para os surfels que satildeo os menores

elementos que compotildeem um Object Podem ser considerados como pontos com

uma normal que define a orientaccedilatildeo do ciacuterculo (ou elipse) que seraacute desenhado

Melhorias Propostas 59

tatildeo logo o surfel seja renderizado Tem como atributos dois ponteiros (next e

prev) para SurfelInterface

PropertyDescriptor consiste em ateacute 32 valores descrevendo quais as

propriedades a SurfelInterface suporta

Classe Surfel classe que representa o surfel

Classe StatusBar classe que imprime mensagens na tela Os plugins

podem mandar mensagens para o usuaacuterio pela StatusBar

Mensagens texto podem ser impressas com showMessage O progresso

de uma operaccedilatildeo pode ser indicado com setProgress ou resetProgress

Classe Transformer representa a transformaccedilatildeo entre sistemas de

coordenadas Esta classe fornece meacutetodos para transformar pontos e vetores

entre os diferentes sistemas de coordenadas do Pointshop

A seguir apresentamos as principais estruturas de dados do plugin

Operaccedilotildees Booleanas

As principais estruturas de dados do plugin satildeo boundingbox tree no

lista_surfel surfel

Boundingbox conteacutem dois pontos 3D que definem uma caixa que conteacutem

o modelo um ponto com menores coordenadas xy e z e outro ponto com

maiores xyz

Tree representa a octree do modelo Cada registro conteacutem um ponteiro

para um noacute e oito ponteiros para as 8 octrees filhas

No representa um noacute da octree Conteacutem os seguintes dados

- localizaccedilatildeo do noacute que eacute o canto inferior esquerdo do noacute

- lista_surfel (preenchida apenas para noacutes folha cheios)

- quantidade de surfels do noacute

- classificaccedilatildeo do noacute como dentro fora ou contorno

- classificaccedilatildeo do noacute em relaccedilatildeo a outro modelo

- indica se o noacute eacute folha ou natildeo

- vetor que eacute a meacutedia das normais dos surfels do noacute

- ponto que eacute a meacutedia das localizaccedilotildees dos surfels do noacute

- surfel que tem (entre todos os surfels do noacute) o maior produto interno

entre a sua normal e a normal meacutedia

- surfel que tem (entre todos os surfels do noacute) o menor produto interno

entre a sua normal e a normal meacutedia

- produto interno maacuteximo e miacutenimo entre as normais dos surfels do noacute e a

normal meacutedia deste noacute

Melhorias Propostas 60

- indica se o noacute conteacutem surfels com normais em sentido oposto (produto

interno entre elas eacute menor que zero)

- classificaccedilatildeo dos oito cantos do noacute

lista_surfels lista em que cada registro conteacutem um apontador para um

surfel e um apontador para o proacuteximo registro

surfel representa o surfel da octree Conteacutem a classificaccedilatildeo em relaccedilatildeo a

outro modelo e um ponteiro para o surfel do Poinshop

Resultados 61

6 Resultados

Neste capiacutetulo apresentamos os testes realizados com o plugin para o

PointShop implementado para esta dissertaccedilatildeo a comparaccedilatildeo deste plugin com

o plugin de Pauly [3] e a comparaccedilatildeo entre o meacutetodo de Adams e Dutreacute [2] e o

meacutetodo de Pauly [3]

61 Testes

Os testes foram feitos em um PC x86 Family 6 261600 KB de RAM sem

placa graacutefica sistema operacional Windows 2000 O plugin foi implementado na

linguagem C

Os modelos usados para os testes satildeo modelos disponibilizados no

PointShop [11] Vale lembrar que o meacutetodo implementado em nosso plugin eacute

restrito a modelos soacutelidos e portanto foram usados apenas estes modelos

soacutelidos para os testes

O modelo na Figura 29 que eacute um dos modelos disponibilizados no

PointShop [11] foi usado para mostrar o resultado das operaccedilotildees realizadas

pelo plugin implementado nesta dissertaccedilatildeo O modelo Igea eacute um modelo soacutelido

que conteacutem 134345 surfels

Resultados 62

Figura 29-Modelo do PointShop Igea

Para realizar as operaccedilotildees este modelo foi carregado na cena do

PointShop duas vezes e um deles colorido de vermelho As Figuras 30 31 32

mostram o resultado da operaccedilatildeo de uniatildeo interseccedilatildeo e diferenccedila

respectivamente Os nuacutemeros de surfels dos modelos resultantes satildeo mostrados

na Tabela 2

Resultados 63

Figura 30-Resultado da uniatildeo de duas Igeas

Figura 31-Resultado da interseccedilatildeo de duas Igeas

Resultados 64

Figura 32-Resultado da diferenccedila entre duas Igeas

Tabela 2-Nuacutemero de surfels dos modelos resultantes

Observamos que o nuacutemero de surfels dos modelos resultantes estaacute

coerente com as figuras dos seus modelos

Para avaliar o tempo de processamento das operaccedilotildees foram realizados

vaacuterios testes com o objetivo de obter uma meacutedia dos tempos de realizaccedilatildeo de

cada operaccedilatildeo Tambeacutem foram armazenados os tempos da criaccedilatildeo das duas

octrees e da classificaccedilatildeo de todos os surfels dos dois objetos (como dentro ou

fora do outro modelo) Estes testes foram feitos usando o modelo Igea A meacutedia

dos tempos de processamento foi calculada e os resultados satildeo mostrados na

Tabela 3 Verificamos que o maior tempo gasto eacute para criaccedilatildeo das octrees

Verificamos tambeacutem que este resultado apresentado eacute similar ao resultado

verificado empiricamente com o plugin de Pauly [3] Os tempos gastos para

realizar as operaccedilotildees satildeo similares e o maior tempo gasto no plugin de Pauly

tambeacutem eacute para inicializaccedilatildeo de suas estruturas de dados que incluem a kd-tree

Operaccedilatildeo Nuacutemero de surfels do modelo resultado

Uniatildeo 189715

Interseccedilatildeo 72225

Diferenccedila 134552

Resultados 65

Operaccedilatildeo Criaccedilatildeo das

Octrees (seg)

Classificaccedilatildeo

(seg)

Criaccedilatildeo do

resultado (seg)

Total (seg)

Uniatildeo 39375 1324 18925 7154

Interseccedilatildeo 38585 1585 09547 63982

Diferenccedila 399875 1504 1729 729475

Tabela 3- Meacutedia dos tempos de processamento para as operaccedilotildees com duas Igeas

Com o objetivo de expor melhor os resultados deste trabalho

apresentamos abaixo mais um teste das operaccedilotildees booleanas usando o nosso

plugin Os modelos usados para este segundo teste satildeo o Max Planck e o Male

ambos modelos soacutelidos disponibilizados no PointShop Estes modelos satildeo

mostrados nas figura 33 e 34

O primeiro Max Planck conteacutem 52809 surfels

Figura 33-Modelo do PointShop MaxPlanck

O segundo modelo abaixo Male conteacutem 148138 surfels

Resultados 66

Figura 34-Modelo do PointShop Male

As Figuras 353637 mostram o resultado da operaccedilatildeo de uniatildeo interseccedilatildeo

e diferenccedila respectivamente usando os dois modelos acima Podemos observar

pela figura 35 que o resultado da operaccedilatildeo de diferenccedila neste caso gerou um

modelo resultado com trecircs partes desconexas Os nuacutemeros de surfels de cada

modelo resultado satildeo mostrados na Tabela 5

Figura 35- Resultado da Uniatildeo do modelo Male com MaxPlanck

Resultados 67

Figura 36-Resultado da interseccedilatildeo do modelo Male com o MaxPlanck

Figura 37-Resultado da diferenccedila do modelo Male do modelo MaxPlanck

As meacutedias de tempos de processamento foram calculadas da mesma

forma que o primeiro teste com o modelo Igea acima apresentado Os

resultados satildeo mostrados na Tabela 4 Podemos observar que este teste

Resultados 68

apresenta tempos um pouco menores que o teste com o modelo Igea Isto se

deve ao fato de que o modelo MaxPlanck ser significativamente menor que o

modelo Igea MaxPlanck possui 52809 surfels e Igea conteacutem 134345 surfels

Operaccedilatildeo Criaccedilatildeo das

Octrees (seg)

Classificaccedilatildeo

(seg)

Criaccedilatildeo do

resultado (seg)

Total

(seg)

Uniatildeo 3012 1254 102 5285

Interseccedilatildeo 2985 0901 0861 4747

Diferenccedila 2965 0911 0791 4667

Tabela 4-Tempo de processamento das operaccedilotildees com os modelos MaxPlanck e Male

Operaccedilatildeo Nuacutemero de surfels do resultado

Uniatildeo 126532

Interseccedilatildeo 88414

Diferenccedila 77635

Tabela 5-Nuacutemero de surfels dos modelos resultados das operaccedilotildees com os modelos MaxPlanck e Male

Em seguida apresentaremos uma comparaccedilatildeo entre o nosso plugin e o

plugin de Pauly[3] e tambeacutem uma comparaccedilatildeo entre o meacutetodo de Adams e Dutreacute

[2] e o meacutetodo de Pauly [3]

62 Comparaccedilatildeo entre os dois meacutetodos que realizam operaccedilotildees booleanas

A comparaccedilatildeo entre os meacutetodos de Pauly[3] e de Adams e Dutreacute foi feita

em termos de tempo de processamento e em termos conceituais Em termos de

tempo de processamento comparamos o plugin de Pauly[3] com o nosso plugin

Em termos de tempo de processamento verifica-se empiricamente que os

dois meacutetodos apresentam tempos bastante similares Entretanto o tempo de

processamento do algoritmo aqui implementado ainda pode ser melhorado com

Resultados 69

o uso do meacutetodo TINN [19] que foi proposto em Adams[2] - para otimizar a

pesquisa do surfel mais proacuteximo a um ponto que estaacute localizado na regiatildeo de um

noacute que conteacutem surfels - veja seccedilatildeo 42 O uso deste meacutetodo natildeo foi

implementado para este trabalho e a sua implementaccedilatildeo melhoraria o tempo de

resposta do algoritmo Aleacutem disso o trabalho de Sara F Frisken [12] citado no

capiacutetulo 2 apresenta uma otimizaccedilatildeo no uso de octrees que pode ser

incorporada no algoritmo implementado neste trabalho

Em termos conceituais vamos fazer a comparaccedilatildeo do uso do que

chamamos aqui de Regra 2 do tratamento de interseccedilatildeo e do tratamento de

ldquoarestas vivasrdquo

Como vimos na seccedilatildeo 41 tanto o algoritmo implementado nesta

dissertaccedilatildeo baseado no trabalho de Adams e Dutreacute como o meacutetodo de Pauly

[3] parte do que chamamos aqui de Regra 2 para realizar operaccedilotildees booleanas

com pontos Mas cada um destes meacutetodos daacute um tratamento diferente para o

uso desta regra

O meacutetodo de Pauly usa a Regra 2 para classificaccedilatildeo de cada ponto ou de

cada surfel Para classificar um surfel de B sb como dentro ou fora de A eacute

encontrado o surfel de A sa mais proacuteximo a sb e sb eacute classificado a partir de sa

Para encontrar sa Pauly utiliza uma kd-tree Como esta pesquisa para encontrar

sa eacute cara (mesmo usando uma kd-tree) Pauly utiliza uma esfera que conteacutem

pontos com a mesma classificaccedilatildeo (seccedilatildeo 432) e diminui em 90 este nuacutemero

de pesquisas Pauly utiliza tambeacutem a representaccedilatildeo impliacutecita MLS (Moving Least

Squares) para casos em que a Regra 2 poderia falhar e para tratamento de

interseccedilotildees Entretanto o nuacutemero destes casos em que a Regra 2 poderia falhar

eacute muito pequeno E a representaccedilatildeo MLS natildeo eacute uma estrutura simples de ser

implementada Portanto natildeo encontramos vantagens em usar MLS para estes

casos O meacutetodo de Adams e Dutreacute natildeo trata estes casos e na praacutetica

apresenta resultados bastante satisfatoacuterios como foi mostrado Portanto

consideramos que valeria a pena fazer algum tratamento especial para estes

casos se fosse um procedimento simples Para a execuccedilatildeo do algoritmo de

Pauly o uso de MLS natildeo interfere significativamente porque a construccedilatildeo desta

representaccedilatildeo natildeo eacute feita somente para realizar operaccedilotildees booleanas Os testes

empiacutericos que fizemos com o algoritmo de Pauly natildeo incluem a construccedilatildeo desta

representaccedilatildeo

Aparentemente os dois algoritmos satildeo bastante parecidos um usa octrees

e o outro usa kd-tree As duas estruturas de dados satildeo simples e otimizam a

classificaccedilatildeo dos surfels de um modelo como dentro ou fora do outro modelo

Resultados 70

Mas existe uma diferenccedila conceitual entre dois que merece ser destacada O

algoritmo aqui implementado usa a Regra 2 para classificaccedilatildeo dos noacutes de uma

octree e armazena esta octree classificada (ver capiacutetulo 5) Assim na maioria dos

casos natildeo seraacute necessaacuterio encontrar o surfel mais proacuteximo para classificar um

ponto (ou um surfel) como fora ou dentro de um modelo Caso o ponto esteja em

uma aacuterea da octree classificada ele teraacute a classificaccedilatildeo dada agravequela aacuterea A

pesquisa ao surfel mais proacuteximo seraacute feita apenas nos casos em que o ponto a

ser classificado estaacute localizado entre os planos que subdividem um noacute cheio

O uso desta octree classificada levanta uma questatildeo que natildeo foi citada no

trabalho de Adams e Dutreacute que eacute a proximidade desta estrutura (armazenada)

de octree classificada com uma representaccedilatildeo volumeacutetrica do objeto Sendo

assim esta estrutura pode ser aproveitada para outras funccedilotildees aleacutem da

classificaccedilatildeo dos surfels Por exemplo podemos ter uma aproximaccedilatildeo do

volume de uma cena somando os volumes aproximados dos modelos que a

compotildeem Como o enfoque deste trabalho eacute operaccedilatildeo booleana natildeo vamos nos

aprofundar nesta questatildeo

Outra importante diferenccedila entre os dois trabalhos que jaacute foi explicada na

seccedilatildeo 432 eacute que o meacutetodo de Pauly aplica-se a modelos soacutelidos ou natildeo

soacutelidos enquanto que o meacutetodo de Adams e Dutreacute aplica-se somente a modelos

soacutelidos

Quanto ao tratamento de interseccedilatildeo em termos de visualizaccedilatildeo todos os

dois resolvem bem o problema O tratamento de interseccedilatildeo nos dois trabalhos

tambeacutem resolve o problema da validade da Regra 2 (ver seccedilatildeo 44) Entretanto

o tratamento de Adams e Dutreacute natildeo depende da renderizaccedilatildeo sendo portanto

mais portaacutevel Aleacutem disso uma desvantagem do meacutetodo de Pauly eacute o uso da

representaccedilatildeo impliacutecita MLS (ldquoMoving Least Squaresrdquo) do objeto para obter os

pontos exatamente na curva de interseccedilatildeo Esta representaccedilatildeo torna o

tratamento de interseccedilatildeo mais complexo e a vantagem apresentada natildeo eacute tatildeo

significativa para este tratamento de interseccedilatildeo

Conclusatildeo 71

7 Conclusatildeo

Concluiacutemos entatildeo que as escolhas de Adams e Dutreacute por usar uma

octree classificada e pelo tratamento dado agrave interseccedilatildeo satildeo mais abrangentes

que a escolha de Pauly E consideramos que quanto mais abrangente for uma

escolha conceitual mais resultados poderemos tirar dela No caso de Adams e

Dutreacute eles estendem o problema de classificar um ponto para classificar todo o

modelo Como foi citado ele quase fornece uma representaccedilatildeo volumeacutetrica do

modelo Esta aproximada representaccedilatildeo volumeacutetrica pode nos fornecer outras

informaccedilotildees como por exemplo o volume aproximado do modelo

Aleacutem disso o uso da representaccedilatildeo impliacutecita MLS no meacutetodo de Pauly cria

uma complexidade a mais para o meacutetodo sem apresentar vantagens para a

realizaccedilatildeo de operaccedilotildees booleanas que eacute o nosso enfoque

Logo podemos dizer que o meacutetodo de Adams e Dutreacute apresenta as

seguintes vantagens em relaccedilatildeo ao de Pauly

- a estrutura de octree classificada aleacutem de ser usada para classificaccedilatildeo

fornece informaccedilotildees adicionais como volume aproximado do objeto

- o tempo de processamento no meacutetodo de Adams e Dutreacute tende a ser

melhor que no meacutetodo de Pauly se implementadas as melhorias acima citadas e

se colocaacutessemos em consideraccedilatildeo o uso da representaccedilatildeo impliacutecita MLS

(Moving Least Squares)

- o tratamento de interseccedilatildeo de Adams e Dutreacute apresenta a vantagem da

portabilidade ou seja iraacute funcionar independente do algoritmo de renderizaccedilatildeo

utilizado

E as vantagens do meacutetodo de Pauly em relaccedilatildeo ao de Adams e Dutreacute

- a colocaccedilatildeo de surfels exatamente na curva de interseccedilatildeo

- a possibilidade de trabalhar com modelos soacutelidos ou natildeo soacutelidos

E finalizando concluiacutemos que o estudo relatado nesta dissertaccedilatildeo foi

importante por

- fornecer um breve estudo sobre modelagem por pontos uma nova e

promissora aacuterea dentro da computaccedilatildeo graacutefica

Conclusatildeo 72

- por apresentar uma avaliaccedilatildeo dos dois trabalhos existentes sobre

operaccedilotildees booleanas com pontos encontrando as vantagens de cada um

e levantando questotildees que natildeo tinham sido citadas nos trabalhos originais

- por propor e implementar melhorias ao trabalho de Adams e Dutreacute

71 Trabalhos Futuros

Nossa implementaccedilatildeo pode ser ainda evoluiacuteda com as propostas

apresentadas na seccedilatildeo 62 Como observamos o tempo de processamento do

algoritmo aqui implementado ainda pode ser melhorado com o uso do meacutetodo

TINN [19] - que foi proposto em Adams[2] - para otimizar a pesquisa do surfel

mais proacuteximo a um ponto que estaacute localizado na regiatildeo de um noacute que conteacutem

surfels Aleacutem disso o trabalho Simple and Efficient Trasversal Methods for

Quadtrees and Octrees de Sara F Frisken [12] citado no capiacutetulo 2 apresenta

uma otimizaccedilatildeo no uso de octrees Outra proposta para melhorar o tempo de

processamento do algoritmo aqui implementado eacute usar a forma de trabalhar com

octrees apresentada neste trabalho

O trabalho de Adams e Dutreacute [2] eacute aplicado apenas a objetos soacutelidos O

nosso plugin portanto aplica-se somente a este tipo de objeto Jaacute o trabalho de

Pauly[3] eacute aplicado tambeacutem a modelos natildeo soacutelidos Apresentamos como

proposta a um trabalho futuro a extensatildeo do algoritmo aqui implementado para

modelos natildeo soacutelidos O surfel pode conter uma informaccedilatildeo adicional que indica

se ele estaacute delimitando um volume ou natildeo Assim pode-se ter um modelo com

ldquopartes soacutelidasrdquo e ldquopartes natildeo soacutelidasrdquo Por exemplo a uniatildeo de um plano com

uma esfera poderia resultar numa esfera com ldquoabasrdquo (seriam as partes do plano

que estariam fora da esfera) O modelo resultado teria uma parte correspondente

a um espaccedilo 3D (esfera) e outra parte que seria uma superfiacutecie 2D posicionada

no espaccedilo 3D sem delimitar algum volume (abas)

Muitos trabalhos podem ser desenvolvidos aplicando-se o modelo por

pontos em animaccedilatildeo jogos visualizaccedilatildeo de terrenos criaccedilatildeo de protoacutetipos etc

considerando-se a eficiecircncia e simplicidade do modelo E mais especificamente

as operaccedilotildees booleanas com pontos podem ser aplicadas para criaccedilatildeo de

cenaacuterios testes de colisotildees e nestes casos a representaccedilatildeo usando octrees

pode ser mais explorada considerando-se o seu potencial de representaccedilatildeo

volumeacutetrica de um objeto

Referecircncias Bibliograacuteficas 73

8 Referecircncias Bibliograacuteficas

[1] MAumlNTYLAuml M An Introduction to Solid Modeling Computer Science Press 1988

[2] ADAMS B DUTREacute P Interactive Boolean Operations on Surfel-

Bounded Solids Proceedings of SIGGRAPH 2003 San Diego USA 2003

[3] PAULY M KEISER R KOBBELT L GROSS M Shape Modeling

with Point-Sampled Geometry SIGGRAPH 2003 Computer Graphics

Proceedings Annual Conference Series ACM Press ACM SIGGRAPH 2003

[4] LEVOY M WHITTED T The Use of Points as Display Primitives

Technical Report TR 85-022 The University of North Carolina at Chapel Hill

Department of Computer Science 1985

[5] PFISTER H ZWICKER M VAN BAAR J GROSS M 2000 Surfels

Surface Elements as Rendering Primitives SIGGRAPH 2000 pp 335ndash342 New

Orleans LA July 23-28 2000

[6] ZWICKER M PFISTER H VAN BAAR J GROSS M Surface

Splatting SIGGRAPH 2001

[7] PAULY M KOBBELT L GROSS M Multiresolution Modeling of

Point-Sampled Geometry CS Techinical Report 378 September 16 2002

[8] CURLESS B New Methods for Surface Reconstruction from Range Images PhD thesis Stanford University 1997

[9] RUSINKIEWICZ S Real-time Acquisition and Rendering of Large 3D Models PhD thesis Stanford University 2001

Referecircncias Bibliograacuteficas 74

[10] AMENTA N BERN M KAMVYSSELIS M A new Voronoi-Based

Surface Reconstruction Algorithm SIGGRAPH 98 Conference proceedings pp

415-421 New York 1998

[11] ZWICKER M PAULY M KNOLL O GROSS M Pointshop 3D an

Interactive System for Point-Based Surface Editing Proceedings of SIGGRAPH 2002 San Antonio TX July 2002

[12] FRISKEN S PERRY R Simple and Efficient Traversal Methods for

Quadtrees and Octrees Journal of Graphics Tools Vol 7 Issue 3 May 2003

[13] CORREcircA W T OLIVEIRA M M Silva C T Wang J

Modeling and Rendering of Real Environments

Revista de Informaacutetica Teoacuterica e Aplicada (Brazilian Journal of Theoretic and Applied Computing) 9(2)127-156 2002

[14] DAVIS J MARSCHNER S GARR M LEVOY M Filling Holes in

Complex Surfaces Using Volumetric Diffusion First International Symposium on 3D Data Processing Visualization Transmission June 2002

[15] RAumlSAumlNEN J Surface Splatting Theory Extensions and Implementation Masterrsquos Thesis Dept of Computer Science Helsinki

University of Technology May 28 2002

[16] PAULY M Point Primitives for Interactive Modeling and Processing of 3D Geometry PhD thesis Federal Institute of Technology (ETH)

of Zurich 2003

[17] HOPPE H DEROSE T DUCHAMP T MCDONALD J

STUELZLE W Surface Reconstruction from Unorganized Points Computer Graphics 26(2)71ndash78 July 1992

[18] ALEXA M BEHR J COHEN-OR D FLEISHMAN S LEVIN D

SILVA C T Point Set Surfaces IEEE Visualization 2001 pp 21ndash28 October

2001

Referecircncias Bibliograacuteficas 75

[19] GREENSPAN M GODIN G TALBOT J Acceleration of Binning

Nearest Neighbor Methods Proceedings of Vision Interface 2000 pp 337-

344

[20] MENCL R Reconstruction of Surfaces from Unorganized Three-Dimensional Point Clouds Dissertation Dortmund Univ 2001

[21] KRIVANEK J Representing and Rendering Surfaces With Points

httpciteseernjneccomkrivanek03representinghtml Acesso em 30 jul

2003

[22] KRISTJANSSON ET AL Approximate Boolean Operations on Free-

form Solids Proceedings of SIGGRAPH 01 2001

Sumaacuterio

1 Introduccedilatildeo 15

2 Trabalhos relacionados 18

3 Modelagem por Pontos 20 31 Ideacuteia da Representaccedilatildeo 20 32 Tipos de distribuiccedilatildeo dos surfels 22 33 Estrutura de multi-resoluccedilatildeo 22 34 Dados que um surfel pode conter 23 35 Aquisiccedilatildeo do modelo 23 351 Aquisiccedilatildeo da geometria 23 352 Aquisiccedilatildeo da textura 24 353 Correccedilatildeo das falhas da aquisiccedilatildeo 25 36 Reconstruccedilatildeo da superfiacutecie (contiacutenua) a partir do modelo (discreto) 25 37 Visualizaccedilatildeo do modelo 26 38 Ediccedilatildeo do modelo 28

4 Operaccedilotildees Booleanas com Pontos 29 41 Meacutetodos para realizar operaccedilotildees booleanas em objetos modelados por

pontos 29 42 Meacutetodo de Adams e Dutreacute 33 421 Modelo por Pontos em Adams e Dutreacute 33 422 Algoritmo de Operaccedilotildees Booleanas 34 43 Meacutetodo de Pauly 39 431 Modelo em Pauly 40 432 Algoritmo de Operaccedilotildees Booleanas 40 44 Validade da Regra 2 43

5 Melhorias Propostas 47 51 Descriccedilatildeo do algoritmo 47 511 Criaccedilatildeo e classificaccedilatildeo de uma octree para cada modelo 48

512 Teste DentroFora 52 513 Criaccedilatildeo do modelo resultado 54 52 Implementaccedilatildeo 55 521 Estruturas de Dados 57

6 Resultados 61 61 Testes 61 62 Comparaccedilatildeo entre os dois meacutetodos que realizam operaccedilotildees booleanas 68

7 Conclusatildeo 71 71 Trabalhos Futuros 72

8 Referecircncias Bibliograacuteficas 73

11

Lista de figuras

Figura 1 Um modelo por pontos e sua visualizaccedilatildeo 21 Figura 2 A superfiacutecie modelada por surfels O surfel em destaque tem raio de

alcance rt e normal n 22 Figura 3 Modelo por pontos e sua renderizaccedilatildeo usando Surface Splatting 26 Figura 4 Trecircs modelos novos foram criados a partir dos quatro iniciais (esfera

cilindro dois cubos) O primeiro eacute a esfera menos um cubo em seguida

retirou-se outro cubo e por uacuteltimo retirou-se o cilindro 29 Figura 5 A partir de dois modelos por pontos uma heacutelice e uma cabeccedila as trecircs

operaccedilotildees booleanas satildeo mostradas da esquerda para a direita uniatildeo

diferenccedila e interseccedilatildeo 30 Figura 6 (a) Dois modelos A e B (b) Posicionados de forma que A tem uma parte

dentro de B eacute mostrado o resultado A U B Af + Bf (c) Resultado de A ndash B Af

+ Bd (d) Resultado de A cap B Ad + Bd 31 Figura 7 Para classificar o ponto x encontra-se o surfel p (com normal np) mais

proacuteximo a x Se o produto interno entre np e (x ndash p) for maior que zero entatildeo

x eacute classificado como fora senatildeo seraacute classificado como dentro 32 Figura 8 Interseccedilatildeo de duas esferas agrave esquerda sem nenhum tratamento de

interseccedilatildeo agrave direita apoacutes o tratamento de interseccedilatildeo 33 Figura 9 Um objeto representado por pontos com suas normais e sua quadtree

correspondente classificada os noacutes cinza claro estatildeo dentro do modelo noacutes

cinza mais escuro estatildeo fora do modelo e noacutes com cinza intermediaacuterio satildeo

noacutes cheios noacutes que conteacutem pontos 35 Figura 10 Divisatildeo de noacute de contorno a parte agrave esquerda estaacute fora do modelo a

parte agrave direita estaacute dentro do modelo e a faixa intermediaacuteria conteacutem os

surfels 36 Figura 11 Interseccedilatildeo do surfel s e do plano que passa pelo surfel t o surfel mais

proacuteximo a s O surfel s eacute substituiacutedo por trecircs surfels menores 38 Figura 12 Agrave direita eacute mostrado o resultado do tratamento de interseccedilatildeo para o

caso de Arestas Vivas do objeto agrave esquerda 39 Figura 13 Os novos surfels satildeo colocados exatamente na curva de interseccedilatildeo e

convergem para o ponto de interseccedilatildeo 42 Figura 14 (a) Suponhamos a reta que eacute a interseccedilatildeo do plano tangente a S1 em

q1 e o plano tangente a S2 em q2 O ponto r eacute o ponto desta reta que estaacute

12

mais proacuteximo a q1 e q2 (b) r eacute projetado sobre S1 e S2 obtendo-se q1acute e q2acute

dois novos pontos de partida para nova iteraccedilatildeo (c) A nova iteraccedilatildeo gera r

que eacute uma aproximaccedilatildeo melhor de q 43 Figura 15 Para verificar se o ponto x estaacute fora de um contorno C encontra-se o

ponto y de C Se o produto interno entre a normal em y e o vetor que liga y a

x for maior que zero entatildeo x estaacute fora de C senatildeo estaacute dentro de C 44 Figura 16 As curvas vermelhas satildeo o Eixo Medial da curva em preto 45 Figura 17 Em 3D geralmente o Eixo Medial eacute uma superfiacutecie 2D (em vermelho)

Aqui o quadrado eacute o Eixo Medial da superfiacutecie transparente que o contorna

45 Figura 18 A figura mostra o diagrama de Voronoi de uma amostragem de pontos

S Da mesma forma que a amostragem aproxima a curva os veacutertices de

Voronoi aproximam o Eixo Medial 46 Figura 19 Quadtree classificada Os noacutes mais escuros estatildeo fora do modelo os

mais claros dentro e os em tom intermediaacuterio satildeo noacutes de contorno 48 Figura 20 O noacute cheio eacute dividido em trecircs partes agrave esquerda a regiatildeo estaacute dentro

do modelo agrave direita estaacute fora e entre as duas linhas que dividem o noacute estaacute a

regiatildeo que conteacutem os surfels 49 Figura 21 O noacute a eacute classificado pelo noacute c o noacute d tambeacutem eacute classificado pelo noacute c

a classificaccedilatildeo do noacute a eacute propagada para o noacute b 50 Figura 22 Os cantos a e b do noacute cheio possuem a mesma classificaccedilatildeo fora do

modelo Esta classificaccedilatildeo foi dada ao noacute vazio adjacente 50 Figura 23 Quadtree classificada 51 Figura 24 A normal n eacute a normal meacutedia e os surfels s1 e s2 juntamente com a

normal n definem as retas que dividem o noacute 52 Figura 25 Duas circunferecircncias e suas quadtrees correspondentes 53 Figura 26 a modelos natildeo se intersectam b modelo intersecta noacutes fora c

modelo intersecta apenas noacutes dentro d modelo intersecta noacutes dentro e noacutes

fora 54 Figura 27 Software PointShop 3D com dois modelos carregados na sua cena 56 Figura 28 Menu do PointShop com o plugin e as opccedilotildees para operaccedilotildees

booleanas 57 Figura 29 Modelo do PointShop Igea 62 Figura 30 Resultado da uniatildeo de duas Igeas 63 Figura 31 Resultado da interseccedilatildeo de duas Igeas 63 Figura 32 Resultado da diferenccedila entre duas Igeas 64

13

Figura 33 Modelo do PointShop MaxPlanck 65 Figura 34 Modelo do PointShop Male 66 Figura 35 Resultado da Uniatildeo do modelo Male com MaxPlanck 66 Figura 36 Resultado da interseccedilatildeo do modelo Male com o MaxPlanck 67 Figura 37 Resultado da diferenccedila do modelo Male do modelo MaxPlanck 67

14

Lista de tabelas

Tabela 1 Classificaccedilatildeo para operaccedilotildees booleanas 42

Tabela 2- Nuacutemero de surfels dos modelos resultantes 64 Tabela 3- Meacutedia dos tempos de processamento para as operaccedilotildees com duas

Igeas 65

Tabela 4-Tempo de processamento das operaccedilotildees com os modelos MaxPlanck

e Male 68 Tabela 5- Nuacutemero de surfels dos modelos resultados das operaccedilotildees com os

modelos MaxPlanck e Male 68

15

1 Introduccedilatildeo

O mundo digital estaacute conquistando cada vez mais espaccedilo nos meios de

comunicaccedilatildeo Sons imagens viacutedeos digitais satildeo miacutedias muito usadas em

diversas aacutereas como entretenimento medicina desenho industrial engenharia

arquitetura educaccedilatildeo arte ciecircncia entre outras Podemos citar alguns

exemplos dentro destas aacutereas como jogos efeitos especiais filmes digitais

visualizaccedilatildeo cientiacutefica viacutedeo-conferecircncia comeacutercio na internet Nos uacuteltimos anos

verificamos que o modelo 3D vem se tornando um novo meio de comunicaccedilatildeo

digital Com o desenvolvimento da tecnologia de aquisiccedilatildeo e do processamento

de modelos 3D ele vem sendo cada vez mais utilizado Jogos 3D animaccedilotildees

aplicaccedilotildees em realidade virtual visualizaccedilatildeo cientiacutefica aplicaccedilotildees para aacuterea

meacutedica e odontoloacutegica criaccedilatildeo de reacuteplicas para estudo e preservaccedilatildeo do

patrimocircnio histoacuterico sistemas CADCAM cataacutelogos de modelos 3D na Web para

comercializaccedilatildeo criaccedilatildeo de protoacutetipos para arquitetura engenharia satildeo alguns

exemplos de aplicaccedilotildees que usam modelos 3D

A aacuterea que estuda a representaccedilatildeo de um modelo 3D no computador eacute

chamada de modelagem em computaccedilatildeo graacutefica Existem diversos tipos de

modelagem para as diversas aplicaccedilotildees que usam um modelo 3D como por

exemplo representaccedilotildees poligonais como malhas triangulares que satildeo

geralmente usadas na aacuterea de entretenimento Este trabalho explora um novo

tipo de modelagem a modelagem por pontos

A modelagem por pontos comeccedilou a ser largamente explorada nesta

deacutecada e trata-se de uma aacuterea muito promissora em computaccedilatildeo graacutefica dadas

agraves vaacuterias e grandes vantagens em relaccedilatildeo aos outros tipos de representaccedilatildeo

como esquema de representaccedilatildeo CSG (Constructive Solid Geometry) [1] ou

malhas poligonais Dentre as principais vantagens podemos citar grande

simplicidade e flexibilidade boa performance robustez Mas a principal

vantagem desta modelagem que foi o fator que impulsionou o seu grande

desenvolvimento nesta deacutecada eacute que esta modelagem por pontos eacute a melhor

opccedilatildeo para tratar os dados de saiacuteda de equipamentos de aquisiccedilatildeo de modelos

3D O uso destes equipamentos tem aumentado muito nesta deacutecada A

16

tecnologia destes equipamentos tem progredido muito e eles tecircm se tornado

mais baratos A tendecircncia eacute que o uso destes equipamentos se torne o mais

utilizado meio de obtenccedilatildeo de modelos 3D Isto porque construir modelos 3D

bastante detalhados por meio de um software de modelagem eacute muito trabalhoso

O processo de aquisiccedilatildeo de modelos por meio destes equipamentos automatiza

este processo de construccedilatildeo

No trabalho com modelos 3D frequumlentemente satildeo usadas as operaccedilotildees

booleanas que satildeo operaccedilotildees de uniatildeo interseccedilatildeo ou diferenccedila No esquema

de representaccedilatildeo CSG estas operaccedilotildees fazem parte da representaccedilatildeo do

objeto Estas operaccedilotildees tambeacutem podem ser usadas para criar novos modelos ou

para alteraacute-los Na maioria dos tipos de representaccedilatildeo de objetos 3D estas

operaccedilotildees satildeo bastante complexas

A simplicidade da representaccedilatildeo por pontos permite que as operaccedilotildees

booleanas sejam realizadas com facilidade se compararmos com a realizaccedilatildeo

destas operaccedilotildees em outros tipos de representaccedilatildeo como malhas poligonais

Motivada pelas vantagens desta modelagem e pela utilidade destas operaccedilotildees

esta dissertaccedilatildeo apresenta uma introduccedilatildeo geral de modelagem por pontos e

trabalha mais especificamente com operaccedilotildees booleanas em objetos

modelados por pontos Dois trabalhos que exploram as operaccedilotildees booleanas na

modelagem por pontos seratildeo abordados o trabalho de Adams e Dutreacute [2] e o

trabalho de Pauly et al [3] O presente trabalho implementa o meacutetodo de Adams

e Dutreacute com algumas melhorias e faz uma comparaccedilatildeo entre o meacutetodo de Pauly

[3] e o meacutetodo de Adams e Dutreacute [2] com nossas melhorias

Como contribuiccedilotildees dadas por este trabalho apresentamos

- um estudo sobre modelagem por pontos

- um estudo sobre operaccedilotildees booleanas com pontos

- proposta de melhorias ao algoritmo proposto por Adams e Dutreacute [2]

- comparaccedilatildeo dos dois meacutetodos propostos para realizar estas operaccedilotildees

meacutetodo de Pauly et al [3] e de Adams e Dutreacute [2]

Este trabalho vem apresentado nesta dissertaccedilatildeo organizada em sete

capiacutetulos conforme descrito resumidamente a seguir

O capiacutetulo 2 cita alguns trabalhos sobre modelagem por pontos que estatildeo

relacionados a este trabalho

O capiacutetulo 3 apresenta uma visatildeo geral do modelo por pontos e explica

melhor alguns trabalhos citados no capiacutetulo 2

17

O capiacutetulo 4 apresenta operaccedilotildees booleanas com pontos e os dois

meacutetodos para realizaacute-las na modelagem por pontos meacutetodo de Pauly et al [3] e

de Adams e Dutreacute [2]

O capiacutetulo 5 apresenta algumas melhorias ao algoritmo de Adams e Dutreacute

[2] e a nossa implementaccedilatildeo deste algoritmo

O capiacutetulo 6 traz os resultados obtidos

E finalmente o capiacutetulo 7 encerra o trabalho com uma conclusatildeo e com

possiacuteveis trabalhos futuros

Trabalhos relacionados 18

2 Trabalhos relacionados

O primeiro pesquisador a propor o uso de pontos como primitiva graacutefica foi

Levoy em [4] Ele propotildee o uso de pontos como primitiva de renderizaccedilatildeo e

discute a conversatildeo dos outros modelos para o modelo por pontos

Nos uacuteltimos anos vaacuterios trabalhos importantes tecircm sido realizados na aacuterea

em diversos segmentos em visualizaccedilatildeo podemos destacar os trabalhos de

Pfister [5] e de Zwicker [6] que usam pontos como primitiva de renderizaccedilatildeo e

com resultados praacuteticos interativos muito bons

Em [7] Pauly et al propotildeem algoritmos para modelagem multi-resoluccedilatildeo

em modelos por pontos

Os trabalhos de Curless [8] e Rusinkiewicz [9] discutem os meacutetodos de

aquisiccedilatildeo que consistem em obter uma amostragem de pontos da superfiacutecie do

objeto real por meio de equipamentos como por exemplo o scanner 3D

Nas operaccedilotildees booleanas a interseccedilatildeo das superfiacutecies dos modelos

iniciais seraacute parte do modelo resultado e para ser representada corretamente

precisa ser reconstruiacuteda A reconstruccedilatildeo da superfiacutecie tambeacutem eacute usada na

visualizaccedilatildeo de um modelo Um trabalho significativo na aacuterea de reconstruccedilatildeo de

superfiacutecies estaacute em [10] de N Amenta etal Este trabalho apresenta uma

soluccedilatildeo praacutetica com garantias teoacutericas para este problema e uma heuriacutestica para

o tratamento de arestas vivas a questatildeo mais difiacutecil desta aacuterea Um exemplo

de uma aresta viva eacute o encontro de dois planos natildeo coincidentes

Frequumlentemente a interseccedilatildeo citada acima (interseccedilatildeo entre os modelos iniciais)

gera uma aresta viva (seccedilatildeo 4223)

O algoritmo aqui implementado eacute um plugin para o software PointShop 3D

[11] de Zwicker et al software de ediccedilatildeo de modelos com pontos O PointShop

tem seu coacutedigo aberto documentaccedilatildeo e trabalha com plugins Ele permite a

visualizaccedilatildeo e ediccedilatildeo interativa do modelo por pontos Eacute o uacutenico software livre

disponiacutevel com estas caracteriacutesticas Esta implementaccedilatildeo na forma de um plugin

facilitou muito o trabalho pois natildeo foi necessaacuterio implementar a visualizaccedilatildeo do

modelo 3D Aleacutem disso o Pointshop conteacutem tambeacutem um plugin com a

implementaccedilatildeo do meacutetodo de Pauly et al [3] discutido nesta dissertaccedilatildeo A

Trabalhos relacionados 19

execuccedilatildeo dos dois plugins que realizam operaccedilotildees booleanas pocircde ser

comparada

Os trabalhos aqui discutidos satildeo o de Bart Adams e Philip Dutreacute [2] e de

Pauly et al[3] que apresentam meacutetodos diferentes para realizaccedilatildeo de

operaccedilotildees booleanas com pontos Adams e Dutreacute utilizam octrees [1] e Pauly

Kd-Tree [16] e MLS (Moving Least Squares) [18] Estes algoritmos satildeo

discutidos no capiacutetulo 4

O trabalho de Sara F Frisken [12] apresenta um algoritmo para realizar

operaccedilotildees em octree de forma mais eficiente Como estas operaccedilotildees estatildeo

presentes em todo o nosso algoritmo este trabalho certamente oferece uma

forma de otimizaccedilatildeo mas que natildeo foi implementada

Modelagem por Pontos 20

3 Modelagem por Pontos

A computaccedilatildeo graacutefica natildeo lida diretamente com o objeto ou com o

fenocircmeno fiacutesico lida com modelos graacuteficos ou geomeacutetricos Modelos graacuteficos

satildeo estruturas computacionais (abstratas) que capturam aspectos de objetos de

interesse para uma aplicaccedilatildeo como forma cor textura etc Se apenas a forma

ou a geometria do objeto eacute relevante temos modelos geomeacutetricos

Estes modelos satildeo usados em vaacuterias aplicaccedilotildees em computaccedilatildeo graacutefica

como roboacutetica visatildeo computacional simulaccedilotildees realistas anaacutelises estruturais

prototipagem projeto e manufatura de produtos eletromecacircnicos arquitetura

Existem vaacuterios tipos de modelos graacuteficos Esta dissertaccedilatildeo trata de um tipo

muito em voga atualmente que eacute o modelo por pontos

Neste capiacutetulo daremos uma visatildeo geral do modelo por pontos

Introduziremos este modelo e seu processo de criaccedilatildeo Seraacute apresentado o que

eacute um modelo por pontos e o conceito de surfel [5] introduziremos os tipos de

distribuiccedilatildeo dos surfels uma estruturaccedilatildeo aplicada a estes surfels e dados que

eles podem conter As quatro proacuteximas subseccedilotildees (Ideacuteia da representaccedilatildeo

Tipos de distribuiccedilatildeo dos surfels Estrutura de multi-resoluccedilatildeo e Dados que um

surfel pode conter) tratam destes toacutepicos Um modelo por pontos pode ser criado

a partir da conversatildeo de outros tipos de modelagem NURBS por exemplo para

o modelo por pontos ou a partir de um processo de aquisiccedilatildeo Esta uacuteltima forma

de criaccedilatildeo pode ser dividida em duas etapas aquisiccedilatildeo do modelo reconstruccedilatildeo

da superfiacutecie As subseccedilotildees 35 e 36 tratam destas duas etapas

respectivamente A ediccedilatildeo do modelo 3D eacute tratada brevemente na subseccedilatildeo 38

e a sua visualizaccedilatildeo na subseccedilatildeo 37 A apresentaccedilatildeo do processo de aquisiccedilatildeo

(seccedilatildeo 35) eacute baseada no tutorial de W T Correcirca [13] A etapa de ediccedilatildeo 3D

consiste em operaccedilotildees para mudanccedila da cor textura ou forma do modelo Para

esta etapa enfocaremos as operaccedilotildees booleanas que modificam a forma do

modelo ou criam novos modelos

31 Ideacuteia da Representaccedilatildeo

Modelagem por Pontos 21

Figura 1 [20] -Um modelo por pontos e sua visualizaccedilatildeo

Um modelo por pontos representa um objeto atraveacutes de seu contorno Eacute

um tipo de representaccedilatildeo B-Rep (Boundary Representation) [1] Este contorno

consiste em uma superfiacutecie 2D posicionada no espaccedilo 3D Na modelagem por

pontos ela eacute representada por um conjunto de pontos 3D que satildeo uma

amostragem dos (infinitos) pontos que formam a superfiacutecie contiacutenua (Figura 1) A

amostragem pode ser obtida de diversas maneiras Uma delas o processo de

aquisiccedilatildeo progrediu muito nos uacuteltimos anos e este foi um dos fatores que tornou

muito importante o desenvolvimento deste modelo por pontos Outra forma de

gerar amostragem eacute fazer uma conversatildeo de um outro modelo NURBS por

exemplo para o modelo por pontos

Estes pontos satildeo denominados surfels e podem conter aleacutem da posiccedilatildeo

3D outras informaccedilotildees como normal agrave superfiacutecie cor textura raio de alcance A

Figura 2 mostra um conjunto de surfels representando uma superfiacutecie No surfel

em destaque podemos ver o raio de alcance rt e a normal n agrave superfiacutecie

Modelagem por Pontos 22

Figura 2 [5] A superfiacutecie modelada por surfels O surfel em destaque tem raio de alcance

rt e normal n

Como o modelo natildeo armazena qualquer informaccedilatildeo sobre a conexatildeo entre

os surfels a reconstruccedilatildeo da superfiacutecie contiacutenua a partir dele pode exigir

algumas restriccedilotildees na amostragem (seccedilatildeo 36)

32 Tipos de distribuiccedilatildeo dos surfels

Existem dois tipos de distribuiccedilatildeo dos surfels na modelagem por pontos

uniforme e natildeo uniforme Na distribuiccedilatildeo uniforme cada um deles descreve

partes de mesmo tamanho da superfiacutecie Na natildeo uniforme cada surfel armazena

a informaccedilatildeo de seu raio de alcance que eacute o raio do disco que este surfel

representa

A distribuiccedilatildeo uniforme tem a vantagem de ser mais simples e natildeo ser

necessaacuterio armazenar o raio de alcance do disco mas ela apresenta a seguinte

desvantagem se o modelo possui regiotildees com muito detalhe e regiotildees com

pouco detalhe ele teraacute que manter uma alta densidade mesmo nas regiotildees de

poucos detalhes

33 Estrutura de multi-resoluccedilatildeo

Um objeto pode ser representado em vaacuterios niacuteveis de detalhes Por

exemplo podemos representar um mesmo objeto com vaacuterias resoluccedilotildees

diferentes Este conceito pode ser aplicado ao modelo por pontos Desta forma

um modelo eacute representado por uma estrutura hieraacuterquica (uma aacutervore por

exemplo) onde em cada niacutevel temos uma representaccedilatildeo do objeto em uma

Modelagem por Pontos 23

determinada resoluccedilatildeo Em [7] Pauly et al propotildeem algoritmos para modelagem

multi-resoluccedilatildeo em modelos por pontos

34 Dados que um surfel pode conter

Cada surfel armazena sua localizaccedilatildeo e pode tambeacutem conter informaccedilotildees

como a cor ou coordenadas de textura Se a amostragem natildeo for uniforme o

surfel conteacutem a informaccedilatildeo do raio de alcance que eacute o raio de um disco cujo

centro eacute a posiccedilatildeo do surfel O surfel pode tambeacutem conter o vetor normal agrave

superfiacutecie e assim o surfel pode ser visto como um disco orientado A superfiacutecie

tambeacutem pode ser vista como uma superfiacutecie orientada

35 Aquisiccedilatildeo do modelo

Esta introduccedilatildeo sobre aquisiccedilatildeo do modelo aqui apresentada baseia-se no

tutorial de W T Correcirca [13]

O processo de aquisiccedilatildeo consiste em obter uma amostragem de pontos da

superfiacutecie do objeto real por meio de equipamentos como por exemplo o

scanner 3D Eacute uma aacuterea que tem progredido muito nos uacuteltimos anos A

resoluccedilatildeo e a precisatildeo dos equipamentos de aquisiccedilatildeo tecircm melhorado bastante

e o custo deles reduzido de forma significativa Isso possibilita que a aquisiccedilatildeo

de modelos 3D seja usada em aplicaccedilotildees de desenho industrial arte ou em

produtos para a aacuterea de entretenimento O consequumlente maior uso destes

equipamentos criou a necessidade de avanccedilos no tratamento dos seus dados de

saiacuteda que satildeo um conjunto de pontos

Este processo pode ser dividido em trecircs partes [13] aquisiccedilatildeo da

geometria aquisiccedilatildeo da textura e correccedilatildeo de falhas da aquisiccedilatildeo

351 Aquisiccedilatildeo da geometria

Existem vaacuterios meacutetodos de aquisiccedilatildeo da geometria Curless [8] e

Rusinkiewicz [9] classificaram estes meacutetodos em trecircs categorias meacutetodos por

contato transmissatildeo e reflexatildeo

O meacutetodo por contato toca a superfiacutecie do objeto com uma sonda e grava

a posiccedilatildeo Este meacutetodo do qual o Coordinate Measuring Machines (CMMs) eacute

Modelagem por Pontos 24

um exemplo eacute bastante preciso mas eacute muito lento e natildeo adequado a objetos

fraacutegeis

Meacutetodos por transmissatildeo projetam ondas de energia sobre o objeto e

gravam a energia transmitida Por exemplo tomografia computadorizada que

projeta ondas de raio-x sobre o objeto e mede a quantidade de radiaccedilatildeo que

passa atraveacutes dele O resultado eacute um modelo geomeacutetrico de alta resoluccedilatildeo Este

meacutetodo pode captar detalhes do objeto que natildeo satildeo visiacuteveis de fora do objeto

Por outro lado ele eacute caro e arriscado

Meacutetodos por reflexatildeo podem ser oacuteticos ou natildeo-oacuteticos Natildeo-oacuteticos incluem

radares que medem a distacircncia a um objeto enviando microondas ou ondas

sonoras para o objeto e gravando o tempo que a onda gasta para retornar Estes

meacutetodos natildeo satildeo muito precisos nem raacutepidos

Meacutetodos por reflexatildeo oacuteticos podem ser passivos ou ativos Meacutetodos oacuteticos

passivos natildeo interagem com o objeto e incluem teacutecnicas de visatildeo computacional

como shape-from-shading stereo triangulation optical flow e meacutetodos de

decomposiccedilatildeo para video streams Estes meacutetodos raramente constroem

modelos precisos e sua maior aplicaccedilatildeo eacute em reconhecimento de objetos

Meacutetodos oacuteticos ativos projetam luz sobre um objeto de maneira estruturada

e atraveacutes da reflexatildeo da luz determinam a forma do objeto Exemplos satildeo depth

from defocus photometric stereo projected-light triangulation time of flight

Meacutetodos por reflexatildeo oacuteticos ativos tecircm muitas vantagens sobre os passivos tecircm

um melhor desempenho quando natildeo existe textura satildeo mais baratos e mais

robustos e produzem uma amostragem precisa

352 Aquisiccedilatildeo da textura

Idealmente noacutes gostariacuteamos de ter uma completa descriccedilatildeo de como um

ponto da superfiacutecie reflete a luz dependendo do vetor normal a esta superfiacutecie

da direccedilatildeo do raio de luz incidente e do comprimento de onda Tal descriccedilatildeo eacute

conhecida como Bidirectional Reflectance Distribution Function (BRDF) Medir

BRDFs com precisatildeo eacute um problema difiacutecil

Pode-se ter uma aproximaccedilatildeo da aquisiccedilatildeo de cores do objeto tirando

fotos dele O objeto eacute fotografado e a cor de cada ponto da superfiacutecie eacute obtida a

partir de um mapeamento das fotos 2D para o modelo 3D Para mapear a

fotografia agrave geometria precisamos conhecer os paracircmetros de projeccedilatildeo da

cacircmera e a sua posiccedilatildeo no momento em que a foto foi batida Para cada ponto

Modelagem por Pontos 25

3D do modelo encontramos sua projeccedilatildeo 2D no plano da cacircmera e associamos

a cor do pixel nesta projeccedilatildeo agrave cor do ponto 3D

353 Correccedilatildeo das falhas da aquisiccedilatildeo

O processo de aquisiccedilatildeo deixa frequumlentemente buracos no modelo devido

a ruiacutedos no processo ou agrave impossibilidade de aquisiccedilatildeo de determinadas partes

de uma superfiacutecie Estes buracos devem ser corrigidos Pode-se usar por

exemplo um filtro de passa-baixa para remoccedilatildeo de ruiacutedos [14] Meacutetodos de

difusatildeo geomeacutetrica tecircm sido aplicados para preenchimento dos buracos [15] A

correccedilatildeo das falhas eacute tida como um preacute-processamento para o processo de

reconstruccedilatildeo da superfiacutecie contiacutenua (seccedilatildeo 36)

36 Reconstruccedilatildeo da superfiacutecie (contiacutenua) a partir do modelo (discreto)

A reconstruccedilatildeo da superfiacutecie contiacutenua consiste em a partir de um conjunto

natildeo estruturado de pontos obter um modelo contiacutenuo desta superfiacutecie Esta

reconstruccedilatildeo eacute frequumlentemente exigida para um modelo por pontos Na sua

visualizaccedilatildeo podemos desejar focar qualquer parte do modelo Para fazermos

operaccedilotildees booleanas com os modelos podemos querer determinar exatamente

onde eles se intersectam

No entanto natildeo precisamos ter necessariamente a representaccedilatildeo contiacutenua

de todo o objeto ao mesmo tempo A reconstruccedilatildeo desta superfiacutecie a partir dos

pontos amostrados pode ser feita no momento que for mais adequado agrave

aplicaccedilatildeo Na visualizaccedilatildeo a reconstruccedilatildeo pode ser feita na projeccedilatildeo 2D da

parte do modelo em foco (seccedilatildeo 37) Para operaccedilotildees booleanas pode-se

reconstruir apenas a aacuterea da interseccedilatildeo dos modelos

Este processo de reconstruccedilatildeo de superfiacutecie tem sido muito estudado em

modelagem geomeacutetrica e geometria computacional nos uacuteltimos anos O trabalho

mais importante desta aacuterea eacute o trabalho de Amenta et al [10] que foi a primeira

soluccedilatildeo com garantias demonstraacuteveis para este problema de reconstruccedilatildeo de

superfiacutecie A seccedilatildeo 44 explica estes conceitos e o trabalho [10] Este trabalho

demonstra que teoricamente para que a reconstruccedilatildeo da superfiacutecie (contiacutenua) a

partir das amostras seja correta a amostragem deve ser adequada Ele usa o

conceito de ldquoEixo Medialrdquo para definir o que eacute uma amostragem adequada

Modelagem por Pontos 26

(seccedilatildeo 44) Em duas dimensotildees os veacutertices de Voronoi de uma amostragem

densa aproximam o ldquoEixo Medialrdquo da amostragem

Por meio deste conceito de Eixo Medial [1016] obtecircm-se paracircmetros

teoacutericos para a definiccedilatildeo de amostragem adequada e baseado neste conceito

o algoritmo apresentado em [10] traz uma soluccedilatildeo praacutetica para o problema

obtendo uma malha poligonal a partir do modelo por pontos

O PointShop 3D [11] software de ediccedilatildeo de modelos por pontos utilizado

nesta pesquisa faz quando necessaacuterio a reconstruccedilatildeo da superfiacutecie Para isso

o PointShop 3D explora a vizinhanccedila local (surfels vizinhos de acordo com suas

posiccedilotildees) Ele usa o conceito de Eixo Medial para justificar seu meacutetodo de

reconstruccedilatildeo da superfiacutecie que na praacutetica apresenta resultados bastante

satisfatoacuterios apesar de teoricamente natildeo ter garantias [16]

37 Visualizaccedilatildeo do modelo

A primeira abordagem para visualizaccedilatildeo de um modelo por pontos foi

construir uma malha de poliacutegonos a partir dos surfels e renderizaacute-la Mas a

construccedilatildeo de malhas a partir dos surfels eacute um processo muito caro e lento

principalmente para modelos complexos Na tentativa de obter uma visualizaccedilatildeo

interativa do modelo por pontos estatildeo sendo estudadas teacutecnicas que utilizam

surfels como primitiva de visualizaccedilatildeo A ideacuteia foi apresentada inicialmente por

Levoy [4]

Figura 3 [21] -Modelo por pontos e sua renderizaccedilatildeo usando Surface Splatting

Modelagem por Pontos 27

O objetivo da renderizaccedilatildeo a partir dos surfels eacute projetaacute-los na tela e

reconstruir as superfiacutecies de forma contiacutenua sem buracos Para que esta

renderizaccedilatildeo seja amplamente utilizada deve-se ter cuidado com o uso de

memoacuteria e com a qualidade da imagem gerada Teacutecnicas recentes como Surface

Splatting [6] faz a renderizaccedilatildeo interativamente com qualidade (Figura 3)

comparada a outros meacutetodos de renderizaccedilatildeo como Image Based Rendering

Em geral a visualizaccedilatildeo do modelo por pontos pode ser dividida nas seguintes

etapas

- warping - projeccedilatildeo em perspectiva de cada ponto do modelo na tela

processo anaacutelogo agrave projeccedilatildeo de veacutertices dos triacircngulos na malha triangular Se

um pixel da tela estiver contido em mais de uma projeccedilatildeo de surfels (vizinhos)

ou seja mais de um ponto cobre este pixel os atributos destes pontos seratildeo

combinados

- shading por ponto - o processo de shading eacute realizado para cada ponto

visiacutevel (os pontos que natildeo satildeo vistos do ponto de vista em questatildeo devem ser

retirados) Qualquer modelo local de shading pode ser aplicado Uma nova

teacutecnica foi proposta em Surface Splatting [6]

- reconstruccedilatildeo da imagem ndash pixels que natildeo ldquoreceberamrdquo projeccedilatildeo de

nenhum ponto formam buracos na imagem Esta imagem deve ser reconstruiacuteda

sem buracos sem aliasing e as superfiacutecies devem ser reconstruiacutedas de forma

contiacutenua e devem ser ldquosuavizadasrdquo (smooth surface)

Os algoritmos de renderizaccedilatildeo por pontos podem tratar a questatildeo de

buracos na visualizaccedilatildeo de trecircs formas [17]

Detecccedilatildeo e preenchimento de buracos no espaccedilo da tela pontos satildeo

projetados na tela e pixels que natildeo receberam pontos satildeo detectados (buracos)

Para preencher estes buracos que natildeo receberam pontos eacute feita uma

interpolaccedilatildeo entre os vizinhos

Geraccedilatildeo de mais pontos a superfiacutecie eacute interpolada no espaccedilo do modelo

para garantir que todos os pixels recebam pelo menos a projeccedilatildeo de um ponto

Splatting um surfel eacute projetado na tela e sua contribuiccedilatildeo eacute espalhada de

forma diferenciada para os pixels vizinhos Agrave medida em que o vizinho se torna

mais distante a contribuiccedilatildeo do surfel diminui

Raumlsaumlnen faz uma analogia do processo de renderizaccedilatildeo proposto em [6]

com o mapeamento de textura [15] No mapeamento de textura para um

determinado pixel da tela satildeo encontrados os pontos da textura que afetam este

Modelagem por Pontos 28

pixel Num sentido inverso em splatting para um determinado surfel (que

representa a textura) satildeo encontrados os pixels da tela que este surfel afeta

38 Ediccedilatildeo do modelo

Ediccedilatildeo de um modelo 3D consiste em operaccedilotildees que modificam

caracteriacutesticas deste modelo como cor textura forma ou criam novos modelos

O software PointShop 3D [11] software de ediccedilatildeo de modelos por pontos 3D

implementa vaacuterias destas operaccedilotildees (ver seccedilatildeo 52)

Para modificar a forma de um modelo ou criar um novo satildeo muito usadas

as operaccedilotildees booleanas que eacute o nosso enfoque nesta dissertaccedilatildeo Na

modelagem CSG (Constructive Solid Geometry) as operaccedilotildees booleanas satildeo

usadas juntamente com primitivas soacutelidas para definir um modelo No entanto

em alguns tipos de modelos estas operaccedilotildees satildeo difiacuteceis como por exemplo

em malhas poligonais Com pontos elas podem ser feitas interativamente [32]

Operaccedilotildees Booleanas com Pontos 29

4 Operaccedilotildees Booleanas com Pontos

Operaccedilotildees booleanas satildeo as operaccedilotildees de uniatildeo interseccedilatildeo e diferenccedila

definidas na teoria matemaacutetica de conjuntos Estas operaccedilotildees satildeo aplicadas em

modelos soacutelidos para alteraacute-los ou para criar novos modelos A Figura 4 abaixo

mostra a criaccedilatildeo de trecircs novos modelos a partir de quatro modelos iniciais

Figura 4 [22] Trecircs modelos novos foram criados a partir dos quatro iniciais (esfera

cilindro dois cubos) O primeiro eacute a esfera menos um cubo em seguida retirou-se outro

cubo e por uacuteltimo retirou-se o cilindro

Estas operaccedilotildees satildeo aplicadas em objetos modelados por pontos em dois

trabalhos no trabalho de Bart Adams e Philip Dutreacute [2] e no trabalho de Pauly

et Al [3] Neste capiacutetulo a seccedilatildeo 41 apresenta a parte comum aos dois

trabalhos e as seccedilotildees 42 e 43 apresentam as particularidades de cada um A

seccedilatildeo 44 discute uma questatildeo natildeo explicitada em nenhum dos dois trabalhos

41 Meacutetodos para realizar operaccedilotildees booleanas em objetos modelados por pontos

A Figura 5 mostra o resultado do meacutetodo de Adams[2] operaccedilotildees de

uniatildeo diferenccedila e interseccedilatildeo de objetos soacutelidos 3D modelados por pontos

Operaccedilotildees Booleanas com Pontos 30

Figura 5 [2]-A partir de dois modelos por pontos uma heacutelice e uma cabeccedila as trecircs operaccedilotildees booleanas satildeo mostradas da esquerda para a direita uniatildeo diferenccedila e interseccedilatildeo

Sejam A e B objetos 3D soacutelidos modelados por pontos Definem-se os

seguintes elementos

Af ndash superfiacutecie (contorno) de A que estaacute fora de B

Ad ndash superfiacutecie (contorno) de A que estaacute dentro de B

Bf ndash superfiacutecie (contorno) de B que estaacute fora de A

Bd ndash superfiacutecie (contorno) de B que estaacute dentro de A

O resultado da operaccedilatildeo booleana entre A e B seraacute um modelo C cuja

superfiacutecie de contorno pode ser determinada pela seguinte regra [2] que aqui

chamamos de Regra 1

Regra 1 A U B Af + Bf

A cap B Ad + Bd

A ndash B Af + Bd (com a orientaccedilatildeo invertida)

B ndash A Ad (com a orientaccedilatildeo invertida) + Bf

A Figura 6 mostra as operaccedilotildees com dois modelos A e B

(a) (b)

Operaccedilotildees Booleanas com Pontos 31

(c) (d)

Figura 6 [22] (a) Dois modelos A e B (b) Posicionados de forma que A tem

uma parte dentro de B eacute mostrado o resultado A U B Af + Bf (c) Resultado de A ndash B Af

+ Bd (d) Resultado de A cap B Ad + Bd

Bart [2] e Pauly [3] apresentam dois meacutetodos para determinar os

elementos acima Estes dois meacutetodos satildeo construiacutedos a partir dos seguintes

conceitos os elementos Af Ad Bf Bd satildeo uma parte da superfiacutecie modelada por

pontos e portanto satildeo conjuntos de surfels Para determinaacute-los eacute necessaacuteria

entatildeo a classificaccedilatildeo de um surfel (que pode se resumir agrave classificaccedilatildeo de um

ponto que eacute o seu centro) de uma superfiacutecie como dentro ou fora de um outro

modelo Os dois meacutetodos utilizam a seguinte regra para esta classificaccedilatildeo aqui

denominada Regra 2

Regra 2 Dado um ponto x qualquer um volume V determinado por uma superfiacutecie

de contorno S uma amostragem P da superfiacutecie S um ponto p є P que eacute a

amostra mais proacutexima a x um vetor np normal agrave S em p e orientado para fora de

S temos que

(x ndash p) np gt 0 x notinV

Ou seja para classificar um ponto em relaccedilatildeo a um modelo verificamos o

produto interno entre a normal em p (surfel mais proacuteximo a x) e o vetor (x - p)

se este produto interno for maior que zero x natildeo pertence ao volume V e seraacute

classificado como fora senatildeo seraacute classificado como dentro De maneira

ainda mais informal se a normal em p apontar para a direccedilatildeo oposta a x x seraacute

classificado como dentro se apontar para x x seraacute classificado como fora

A Figura 7 mostra a Regra 2

Operaccedilotildees Booleanas com Pontos 32

Figura 7 Para classificar o ponto x encontra-se o surfel p (com normal np) mais proacuteximo

a x Se o produto interno entre np e (x ndash p) for maior que zero entatildeo x eacute classificado como

fora senatildeo seraacute classificado como dentro

A validade da Regra 2 eacute discutida na Seccedilatildeo 44 Uma das restriccedilotildees

teoacutericas para garantir-lhe a validade eacute que a superfiacutecie seja suave

Cada um dos dois meacutetodos daacute um tratamento diferente para o uso desta

regra Pauly usa a regra diretamente encontrando o surfel mais proacuteximo a um

ponto e classificando este ponto a partir deste surfel Ele utiliza tambeacutem a

representaccedilatildeo impliacutecita MLS (Moving Least Squares [18]) para casos em que a

Regra 2 poderia falhar e para tratamento de interseccedilotildees [3] Seu meacutetodo vale

para modelos soacutelidos ou natildeo soacutelidos O meacutetodo de Adams e Dutreacute [2] utiliza

octrees [1] criando uma classificaccedilatildeo dos noacutes da octree a partir desta Regra 2

Os pontos satildeo entatildeo classificados de acordo com o noacute da octree que o conteacutem

Este segundo meacutetodo aplica-se somente a modelos soacutelidos Os dois meacutetodos

seratildeo descritos em detalhes nas seccedilotildees abaixo

Como um surfel eacute considerado um disco podemos dizer que surfels de

dois modelos diferentes podem se intersectar A interseccedilatildeo destes dois surfels

corresponde agrave interseccedilatildeo destes dois discos Estes surfels geram problemas

para visualizaccedilatildeo se forem acrescentados ao resultado sem um tratamento

especiacutefico apresentaratildeo artefatos natildeo desejaacuteveis na renderizaccedilatildeo do modelo

resultado (Figura 8) se natildeo forem acrescentados ao resultado deixaratildeo buracos

no modelo

Operaccedilotildees Booleanas com Pontos 33

Figura 8 [2] -Interseccedilatildeo de duas esferas agrave esquerda sem nenhum tratamento de interseccedilatildeo agrave direita apoacutes o tratamento de interseccedilatildeo

Aleacutem disso nem sempre esta interseccedilatildeo forma uma superfiacutecie suave

Esta interseccedilatildeo pode formar uma aresta viva (seccedilatildeo 4223) gerando

problemas tambeacutem para o uso da Regra 2 que eacute vaacutelida apenas para superfiacutecies

suaves Eacute necessaacuterio entatildeo fazer um tratamento desta superfiacutecie de interseccedilatildeo

(formada por surfels originados de diferentes modelos) O tratamento de cada

um dos meacutetodos para este caso seraacute tambeacutem abaixo apresentado

42 Meacutetodo de Adams e Dutreacute

O meacutetodo aplica-se somente a modelos soacutelidos Para determinaccedilatildeo dos

elementos da aqui chamada Regra 1 (seccedilatildeo 41) este meacutetodo utiliza uma octree

[1] que subdivide o espaccedilo do modelo em trecircs fora dentro ou no contorno do

modelo Estes espaccedilos satildeo determinados pela classificaccedilatildeo dos noacutes da octree a

partir da Regra 2 Tambeacutem eacute usado o meacutetodo TINN - Triangle Inequality Nearest

Neighbour [19] - para otimizar a pesquisa dentro do noacute A seguir descrevemos o

modelo usado neste meacutetodo apresentando os dados associados aos pontos o

tipo de distribuiccedilatildeo e o algoritmo que realiza as operaccedilotildees

421 Modelo por Pontos em Adams e Dutreacute

Os surfels neste meacutetodo contecircm as seguintes informaccedilotildees posiccedilatildeo do

surfel xs orientaccedilatildeo do surfel ns e raio de alcance do surfel rs O surfel pode ser

pensado como um disco ortogonal a ns com centro xs e raio rs O raio eacute

escolhido de tal forma que a projeccedilatildeo dos discos no plano da imagem se

sobreponham

Operaccedilotildees Booleanas com Pontos 34

Os objetos representados satildeo soacutelidos A distribuiccedilatildeo dos surfels eacute

uniforme embora o algoritmo natildeo exija esta condiccedilatildeo Para cada soacutelido eacute

definido um rmax = Max rs o raio de alcance do maior surfel pertencente agrave

superfiacutecie do soacutelido Como o raio eacute escolhido de tal forma que a projeccedilatildeo dos

discos no plano da imagem se sobreponham o controle da amostragem eacute

entatildeo ligado agrave renderizaccedilatildeo

422 Algoritmo de Operaccedilotildees Booleanas

Utilizando objetos modelados da forma descrita acima o meacutetodo realiza

operaccedilotildees de uniatildeo interseccedilatildeo e diferenccedila com modelos soacutelidos Supondo dois

modelos soacutelidos S1 e S2 O algoritmo pode ser dividido nas seguintes etapas

Criaccedilatildeo de uma octree para cada modelo Teste Dentro-Fora Tratamento da

interseccedilatildeo Estas etapas satildeo apresentadas nas proacuteximas seccedilotildees

4221 Criaccedilatildeo de uma octree para cada modelo

Eacute criada uma octree [1] para cada modelo A criaccedilatildeo de uma octree eacute feita

da seguinte forma

Gera-se a ldquoCaixa envolventerdquo caixa alinhada com os eixos que conteacutem

todo o modelo A ldquoCaixa envolventerdquo corresponde ao noacute raiz da octree Este noacute

conteacutem inicialmente todos os surfels do modelo Em seguida o noacute raiz eacute

dividido em oito noacutes filhos Os surfels satildeo distribuiacutedos entre estes oito noacutes Cada

um deles caso contenha surfels eacute dividido novamente em 8 filhos e seus surfels

satildeo redistribuiacutedos entre eles Este processo eacute repetido recursivamente enquanto

o nuacutemero de surfels do noacute for maior que zero ou ateacute uma profundidade maacutexima

preacute-definida da octree ser alcanccedilada

Cada noacute da octree deve ser classificado O objetivo desta classificaccedilatildeo eacute

determinar que parte da octree estaacute dentro do modelo e que parte estaacute fora Os

noacutes da octree satildeo entatildeo classificados como ldquodentrordquo ldquoforardquo e ldquocontornordquo

Podemos ilustrar esta classificaccedilatildeo em 2D a Figura 9 mostra uma quadtree

classificada

Operaccedilotildees Booleanas com Pontos 35

Figura 9-Um objeto representado por pontos com suas normais e sua quadtree correspondente classificada os noacutes cinza claro estatildeo dentro do modelo noacutes cinza mais escuro estatildeo fora do modelo e noacutes com cinza intermediaacuterio satildeo noacutes cheios noacutes que conteacutem pontos

O noacutes que conteacutem surfels satildeo classificados como ldquocontornordquo Para

classificar um noacute vazio existem trecircs casos

o noacute vazio tem apenas um vizinho-irmatildeo natildeo vazio

o noacute vazio tem mais de um vizinho-irmatildeo natildeo vazio

o noacute vazio natildeo tem vizinhos-irmatildeos natildeo vazios

No primeiro caso o noacute vazio eacute classificado pelo seu vizinho natildeo vazio No

segundo caso considera-se qualquer um dos vizinhos natildeo vazios No terceiro

caso classifica-se primeiro os noacutes vizinhos e eacute dada a mesma classificaccedilatildeo para

o noacute vazio Como cada noacute natildeo folha de uma octree tem pelo menos um noacute filho

natildeo vazio sempre pode ser feita a classificaccedilatildeo dos noacutes vazios A classificaccedilatildeo

eacute feita da seguinte forma dentre os surfels do vizinho-irmatildeo escolhido encontra-

se o surfel mais proacuteximo ao noacute a ser classificado Se a normal deste surfel

aponta para o noacute vazio a ser classificado entatildeo ele eacute classificado como ldquoforardquo

Se a normal aponta no sentido contraacuterio entatildeo ele eacute classificado como ldquodentrordquo

De maneira mais formal sejam cv e cc coordenadas dos centros do noacute vazio e

do noacute contorno respectivamente Seja s o surfel mais proacuteximo ao noacute vazio e ns

a normal em s Se ( cv - cc )٠ ns gt 0 ( produto interno entre a normal em s e o

vetor cv - cc for maior que zero ) o noacute vazio seraacute classificado como ldquoforardquo

Senatildeo seraacute classificado como ldquodentrordquo

Em geral os noacutes ldquocontornordquo satildeo subdivididos em trecircs partes uma que estaacute

fora do modelo uma que estaacute dentro do modelo e uma terceira que conteacutem os

surfels Esta subdivisatildeo eacute feita por meio da criaccedilatildeo de dois planos paralelos que

Operaccedilotildees Booleanas com Pontos 36

dividem o noacute Para determinar estes planos calcula-se o vetor nm igual agrave

meacutedia das normais dos surfels do noacute nm = sum ns sum ns onde ns eacute a normal de

cada surfel do noacute

Em seguida encontra-se o surfel com maior produto interno entre a sua

normal e a normal meacutedia d1=Max(nm ٠ ns) Este surfel juntamente com a normal

meacutedia define um dos planos Encontra-se tambeacutem o surfel com menor produto

interno entre a sua normal e a normal meacutedia d2=Min(nm ٠ ns) Este surfel

juntamente com a normal meacutedia define o outro plano A Figura 10 mostra a

divisatildeo de um noacute de uma quadtree nas trecircs partes dentro do modelo fora do

modelo e no ldquocontornordquo

Esta subdivisatildeo aplica-se apenas a noacutes que conteacutem surfels cujas direccedilotildees

natildeo variem em mais de 90 graus Caso isso ocorra ele natildeo seraacute subdividido Ou

seja se um noacute possuir dois vetores normais (de dois surfels diferentes) que

formem um acircngulo maior que 90 graus ele natildeo seraacute subdividido

Figura 10 [2] -Divisatildeo de noacute de contorno a parte agrave esquerda estaacute fora do modelo a parte agrave direita estaacute dentro do modelo e a faixa intermediaacuteria conteacutem os surfels

4222 Teste Dentro-Fora

O Teste Dentro-Fora faz a classificaccedilatildeo dos surfels de um modelo como

ldquodentrordquo ou ldquoforardquo de outro modelo Portanto aplicaremos este mesmo teste duas

vezes uma para o modelo S1 em relaccedilatildeo ao modelo S2 e outra para S2 em

relaccedilatildeo a S1 Vamos mostrar o teste Dentro-Fora para o caso da classificaccedilatildeo

dos surfels do modelo S1 em relaccedilatildeo a S2

Operaccedilotildees Booleanas com Pontos 37

No item anterior foram criadas duas octrees uma para o modelo S1 e

outra para o modelo S2 Chamemos de A e B as octrees de S1 e S2

respectivamente Para classificar S1 em relaccedilatildeo a S2 inicialmente eacute feita uma

avaliaccedilatildeo da posiccedilatildeo de A em relaccedilatildeo a B A e B podem estar nas seguintes

situaccedilotildees

- A natildeo intersecta B

- A intersecta apenas noacutes ldquoforardquo de B

- A intersecta apenas noacutes ldquodentrordquo de B

- A intersecta noacutes ldquoforardquo e noacutes ldquodentrordquo de B

Para testar estas situaccedilotildees os noacutes satildeo aumentados de rmax o raio do

maior surfel do modelo soacutelido Isto eacute feito para compensar o fato de que o surfel

natildeo eacute apenas um ponto mas sim considerado como um disco

No primeiro e no segundo caso todos os surfels de A satildeo classificados

como ldquoforardquo No terceiro caso todos os surfels de A satildeo classificados como

ldquodentrordquo

No quarto caso temos que percorrer a octree A Comeccedilando pelo noacute raiz

percorre-se os filhos deste noacute Para cada filho os quatro testes acima satildeo feitos

Se o noacute filho encontra-se em um dos trecircs primeiros casos a classificaccedilatildeo eacute dada

como foi citada acima Se um filho estaacute no quarto caso e natildeo eacute um noacute folha

repete-se recursivamente o mesmo procedimento para seus filhos ateacute encontrar-

se um noacute folha Para um noacute que estaacute no quarto caso e eacute folha percorre-se a lista

de surfels que este noacute conteacutem classificando cada um destes surfels Seja sa um

surfel desta lista Para este caso percorre-se a octree B para classificar sa

Primeiramente encontramos o noacute de B que conteacutem sa Se este noacute de B foi

dividido testa-se de acordo com esta divisatildeo do noacute se o surfel sa estaacute na parte

do noacute que estaacute dentro do modelo ele eacute classificado como ldquodentrordquo se sa estaacute na

parte que estaacute fora do modelo ele eacute classificado como ldquoforardquo se sa estaacute na parte

intermediaacuteria ou se o noacute de B natildeo foi subdividido em planos encontra-se sb que

eacute o surfel pertencente a este noacute de B que estaacute mais proacuteximo de sa sa seraacute

entatildeo classificado de acordo com sb Se ( sa - sb )٠ nb gt 0 sa eacute classificado

como ldquoforardquo senatildeo eacute classificado como ldquodentrordquo Se os discos de sb e sa se

intersectam sa eacute marcado como interseccedilatildeo Para encontrar sb o algoritmo

implementa o meacutetodo TINN ndash Triangle Inequality Nearest Neighbour [19]

Operaccedilotildees Booleanas com Pontos 38

4223 Tratamento da interseccedilatildeo

Os surfels de A que intersectam surfels de B satildeo classificados como

ldquointerseccedilatildeordquo Se eles natildeo forem incluiacutedos no modelo resultado o soacutelido resultado

teraacute buracos Se eles forem incluiacutedos sem algum tratamento eles natildeo

representaratildeo adequadamente a regiatildeo Em geral o surfel sa (um surfel

ldquointerseccedilatildeordquo de A) eacute dividido em dois pelo plano que conteacutem o surfel sb (surfel de

B que sa intersecta) uma parte que estaacute fora de B e outra que estaacute dentro de B

Dependendo da operaccedilatildeo que estaacute sendo realizada vamos querer manter uma

destas partes do surfel sa no modelo resultado Seja xa a posiccedilatildeo do surfel sa e o

surfel sa uma circunferecircncia de centro xa e raio ra igual ao raio de alcance de sa

O plano que conteacutem o surfel sb define uma corda desta circunferecircncia como

mostra a Figura 11 O surfel sa seraacute substituiacutedo por um surfel menor que

ultrapassa esta corda de uma distacircncia e definida pelo usuaacuterio Para cobrir

completamente a interseccedilatildeo seratildeo adicionados surfels menores que cruzam a

corda de interseccedilatildeo

Figura 11 -Interseccedilatildeo do surfel s e do plano que passa pelo surfel t o surfel mais proacuteximo a s O surfel s eacute substituiacutedo por trecircs surfels menores

Operaccedilotildees Booleanas com Pontos 39

O tratamento de interseccedilatildeo proposto por Adams e Dutreacute [2] natildeo soacute evita

os buracos mas tambeacutem cria uma forma de renderizaccedilatildeo de arestas vivas A

colocaccedilatildeo de vaacuterios pequenos surfels na regiatildeo da interseccedilatildeo permite esta

correta renderizaccedilatildeo das ldquoarestas vivasrdquo Desta forma o problema das arestas

vivas eacute resolvido na modelagem (Figura 12) A vantagem de se resolver o caso

na modelagem eacute que natildeo eacute necessaacuterio fazer um tratamento especial na

renderizaccedilatildeo para que mostre esta aresta viva Diferente do tratamento feito

em Pauly (seccedilatildeo 431) que resolve esta questatildeo em tempo de renderizaccedilatildeo

Aleacutem disso o tratamento resolve alguns casos onde a Regra 2 poderia falhar

(veja em Validade da Regra 2-seccedilatildeo 44)

Figura 12 [2] -Agrave direita eacute mostrado o resultado do tratamento de interseccedilatildeo para o caso de Arestas Vivas do objeto agrave esquerda

43 Meacutetodo de Pauly

O meacutetodo aplica-se a objetos soacutelidos e natildeo soacutelidos Os modelos podem ser

obtidos a partir de diferentes entradas como nuvem de pontos irregulares ou por

meio de scanners 3D Cria um modelo hiacutebrido destes objetos usa o modelo por

pontos juntamente com a representaccedilatildeo impliacutecita Moving Least Squares - MLS

[18] Realiza operaccedilotildees booleanas com pontos e utiliza adicionalmente MLS

para alguns casos de classificaccedilatildeo de surfels e no tratamento de interseccedilatildeo A

seguir apresentamos as caracteriacutesticas do modelo por pontos deste meacutetodo e o

algoritmo que realiza as operaccedilotildees

Operaccedilotildees Booleanas com Pontos 40

431 Modelo em Pauly

O modelo eacute uma estrutura hiacutebrida de pontos com a representaccedilatildeo impliacutecita

Moving Least Squares - MLS [18] Esta estrutura eacute usada para fazer operaccedilotildees

booleanas e tambeacutem operaccedilotildees de free-form (natildeo abordadas nesta

dissertaccedilatildeo) Para operaccedilotildees booleanas a representaccedilatildeo MLS permite que a

curva de interseccedilatildeo entre os modelos seja reconstruiacuteda e surfels sejam

colocados nesta curva e em alguns casos de classificaccedilatildeo de surfels mostrados

na seccedilatildeo 432 Para este modelo natildeo existem restriccedilotildees quanto agrave forma do

objeto

Os surfels contecircm informaccedilotildees sobre sua posiccedilatildeo e sua normal Aleacutem

disso surfels podem conter informaccedilotildees adicionais como textura cor

propriedades de materiais

A distribuiccedilatildeo dos surfels eacute natildeo-uniforme e a amostragem eacute

aproximadamente adequada (Veja seccedilatildeo 44)

432 Algoritmo de Operaccedilotildees Booleanas

O algoritmo classifica surfels de um modelo como ldquodentrordquo ou ldquoforardquo de

outro modelo Antes de colocarmos como eacute feita esta classificaccedilatildeo devemos

acrescentar que Pauly estende esta classificaccedilatildeo para modelos que natildeo satildeo

soacutelidos Ou seja mesmo um modelo natildeo soacutelido divide o espaccedilo da cena (espaccedilo

em que se encontra o modelo) em dois sub-espaccedilos dentro ou fora do modelo

Pauly faz esta subdivisatildeo da seguinte forma

Como a superfiacutecie que determina o modelo eacute orientada (conteacutem vetores

normais agrave superfiacutecie que apontam para ldquoforardquo do modelo) Pauly considera que

um modelo natildeo soacutelido divide o espaccedilo em dois sub-espaccedilos um ldquoforardquo do

modelo (os vetores normais apontam para este sub-espaccedilo) e um que estaacute

ldquodentrordquo do modelo (os vetores normais apontam para direccedilatildeo oposta a este sub-

espaccedilo) Por exemplo um plano eacute representado como um conjunto de surfels

contidos num determinado espaccedilo geomeacutetrico plano π Cada surfel conteacutem um

vetor normal direcionado Este modelo divide entatildeo o espaccedilo em dois sub-

espaccedilos o sub-espaccedilo que eacute apontado por estes surfels (considerado ldquoforardquo do

modelo) e o sub-espaccedilo que estaacute na direccedilatildeo oposta (considerado ldquodentrordquo do

modelo) Desta forma ele aplica as classificaccedilotildees de ldquodentrordquo e ldquoforardquo de um

modelo tambeacutem a modelos natildeo soacutelidos A partir desta consideraccedilatildeo as

Operaccedilotildees Booleanas com Pontos 41

operaccedilotildees booleanas satildeo realizadas com os modelos natildeo soacutelidos da mesma

forma que com os modelos soacutelidos

Para determinar esta classificaccedilatildeo (dentro ou fora do modelo) Pauly utiliza

a Regra 2 Para pesquisa do surfel mais proacuteximo o meacutetodo usa a estrutura Kd-

tree [16] e tambeacutem o algoritmo ANN [16] No entanto o meacutetodo apresenta uma

restriccedilatildeo da Regra 2 ela soacute deve ser usada para classificaccedilotildees de pontos x se

a distacircncia x-p for maior que o espaccedilamento da amostragem local ηp em p

Este espaccedilamento da amostragem local ηp em p eacute um caacutelculo aproximado da

distacircncia meacutedia entre os surfels vizinhos a p Se x estaacute muito proacuteximo agrave

superfiacutecie a classificaccedilatildeo pode falhar Neste caso ele calcula o ponto exato de

S mais proacuteximo a x usando a projeccedilatildeo MLS (ldquoMoving Least Squaresrdquo)

Por questotildees de melhoria de desempenho utiliza-se o fato de que sendo

Ωp (x) a classificaccedilatildeo do ponto x em relaccedilatildeo agrave amostragem P tem-se que Ωp (x)

= Ωp (xrsquo) para todos os pontos de xrsquo que estatildeo dentro da esfera de centro x e

raio igual a x-p - ηp (onde p eacute o surfel mais proacuteximo e ηp eacute o espaccedilamento

local da amostragem em p acima citado) Ou seja sendo x um ponto qualquer p

o surfel mais proacuteximo a x ηp eacute o espaccedilamento local da amostragem em p se

desenharmos uma esfera com centro x e raio igual a x-p - ηp temos que

todos os pontos xrsquo que estatildeo dentro da esfera teratildeo a mesma classificaccedilatildeo de x

Desta forma o nuacutemero de vezes que a classificaccedilatildeo eacute feita (pesquisando-se o

surfel mais proacuteximo ao ponto e usando a Regra 2) diminui em ateacute 90 Assim

em geral a classificaccedilatildeo de um surfel eacute obtida a partir do seu surfel vizinho

Dados

S1 a superfiacutecie MLS de contorno que define o modelo A

S2 a superfiacutecie MLS de contorno que define o modelo B

P1 o conjunto de surfels que representa a superfiacutecie S1

P2 o conjunto de surfels que representa a superfiacutecie S2

Ωp1 (x) a classificaccedilatildeo do ponto p em relaccedilatildeo a uma amostragem P1

Q1 o subconjunto de P1 que vai compor o resultado

Ωp2 (x) a classificaccedilatildeo do ponto p em relaccedilatildeo a uma amostragem P2

Q2 o subconjunto de P2 que vai compor o resultado

Os conjuntos Q1 e Q2 satildeo obtidos por meio da Tabela 1 mostrada abaixo

Operaccedilotildees Booleanas com Pontos 42

Tabela 1 Classificaccedilatildeo para operaccedilotildees booleanas

Para o tratamento de interseccedilatildeo neste meacutetodo satildeo computados pontos

que caem exatamente na curva de interseccedilatildeo e estes satildeo acrescentados ao

modelo resultado Estes pontos satildeo determinados de forma que a densidade da

amostragem vai crescendo agrave medida que os surfels se aproximam da curva de

interseccedilatildeo e convergem para este ponto de interseccedilatildeo como mostra a Figura

13

(a) (b) (c)

Figura 13 - Os novos surfels satildeo colocados exatamente na curva de interseccedilatildeo

e convergem para o ponto de interseccedilatildeo

A Figura 14 mostra o processo de encontrar os surfels que caem nesta

curva de interseccedilatildeo Inicialmente satildeo encontrados todos os pontos de Q1 e Q2

que estatildeo proacuteximos agrave curva de interseccedilatildeo por meio da funccedilatildeo de distacircncia do

operador de projeccedilatildeo MLS Em seguida procura-se todos os pares mais

proacuteximos (q1 є Q1 q2 є Q2 ) e computa-se o ponto q na curva de interseccedilatildeo da

seguinte forma (veja a Figura 14)Seja r o ponto na linha de interseccedilatildeo dos dois

planos tangentes em q1 e q2 e que estaacute mais proacuteximo a estes dois pontos isto eacute

que minimiza a distacircncia ||r-q1|| + ||r-q2|| r eacute a primeira aproximaccedilatildeo de q e agora

pode ser projetado sobre S1 e S2 para obter dois novos pontos de partida q1rsquo e q2

rsquo

para a iteraccedilatildeo Este procedimento pode ser repetido iterativamente ateacute que os

pontos q1 e q2 convirjam ao ponto q na curva de interseccedilatildeo Normalmente este

processo requer menos de trecircs iteraccedilotildees

Operaccedilotildees Booleanas com Pontos 43

(a) (b)

(c)

Figura 14 (a) Suponhamos a reta que eacute a interseccedilatildeo do plano tangente a S1 em q1 e o

plano tangente a S2 em q2 O ponto r eacute o ponto desta reta que estaacute mais proacuteximo a q1 e

q2 (b) r eacute projetado sobre S1 e S2 obtendo-se q1acute e q2acute dois novos pontos de partida

para nova iteraccedilatildeo (c) A nova iteraccedilatildeo gera r que eacute uma aproximaccedilatildeo melhor de q

Pauly faz o tratamento de arestas vivas em tempo de renderizaccedilatildeo Ele

faz uma alteraccedilatildeo no renderizador Marca os surfels de interseccedilatildeo e ao

renderizaacute-los satildeo cortados para gerar uma aresta viva

44 Validade da Regra 2

Os dois meacutetodos analisados nesta dissertaccedilatildeo utilizam a seguinte regra

para a classificaccedilatildeo de um surfel

Regra 2 dado um volume V determinado por uma superfiacutecie de contorno

S uma amostragem P da superfiacutecie S um ponto x qualquer um ponto p є P que

eacute a amostra mais proacutexima a x um vetor ny normal a S em p e orientado para

fora de S temos que (x ndash p) np gt 0 x notinV

Em [16] eacute colocado que esta regra eacute tirada da seguinte propriedade da

geometria diferencial (aqui chamada Propriedade 1)

Propriedade 1 Dado um volume V determinado por uma superfiacutecie de

contorno S contiacutenua e duplamente diferenciaacutevel um ponto x qualquer um ponto

Operaccedilotildees Booleanas com Pontos 44

y є S que eacute o ponto de S mais proacuteximo a x um vetor ny normal a S em y e

orientado para fora de S temos que (x ndash y) ny gt 0 x notinV

A Figura 15 ilustra esta propriedade

Figura 15 Para verificar se o ponto x estaacute fora de um contorno C encontra-se o ponto y

de C Se o produto interno entre a normal em y e o vetor que liga y a x for maior que

zero entatildeo x estaacute fora de C senatildeo estaacute dentro de C

Pauly assume que tendo uma amostragem P da superfiacutecie S podemos

usar a Propriedade 1 substituindo y por p o surfel mais proacuteximo ao ponto x (x ndash

p) np gt 0 x notinV (Regra 2) Esta amostragem P em seu trabalho eacute

(aproximadamente) uma ldquoamostragem adequadardquo Tambeacutem seu tratamento de

interseccedilatildeo cria uma aproximaccedilatildeo dela (seccedilatildeo 43) Empiricamente a

ldquodiscretizaccedilatildeo da propriedaderdquo eacute vaacutelida a partir desta suposiccedilatildeo Mas isso natildeo foi

demonstrado teoricamente em seu trabalho

Pauly coloca em [16] que natildeo existe ainda uma teoria matemaacutetica rigorosa

de amostragem anaacuteloga a teoria de Fourier para superfiacutecies discretas

A melhor aproximaccedilatildeo teoacuterica para esta aacuterea eacute o uso do Eixo Medial que

foi colocado em [10] Vamos descrever este trabalho brevemente nesta seccedilatildeo

Este trabalho apresenta um algoritmo de reconstruccedilatildeo de superfiacutecie que parte de

uma amostragem adequada (abaixo definida) de pontos e obteacutem uma malha

que eacute topologicamente equivalente agrave superfiacutecie do objeto e agrave medida que a

densidade da amostragem cresce a saiacuteda converge para esta superfiacutecie

Para definir amostragem adequada o trabalho parte do conceito de Eixo

Medial

Operaccedilotildees Booleanas com Pontos 45

ldquoEixo Medialrdquo de uma superfiacutecie 2D posicionada no R3 eacute o conjunto

(fechado) de pontos pi para os quais buscando-se o ponto da superfiacutecie que

estaacute mais proacuteximo a pi mais de um ponto pertencentes a esta superfiacutecie satildeo

encontrados A Figura 16 abaixo ilustra o Eixo Medial em 2D

Figura 16 [10] As curvas de cor mais clara satildeo o Eixo Medial da curva em preto

Em duas dimensotildees os veacutertices de Voronoi de uma amostragem densa

aproximam o ldquoEixo Medialrdquo da amostragem (mas esta propriedade natildeo se

estende a 3D) A Figura 17 mostra o Eixo Medial em 3D

Figura 17 [10] Em 3D geralmente o Eixo Medial eacute uma superfiacutecie 2D (em cor mais

clara) Aqui o quadrado eacute o Eixo Medial da superfiacutecie transparente que o contorna

Podemos definir agora a amostragem adequada da seguinte forma

Supondo uma superfiacutecie suave que quer dizer uma 2-manifold duplamente

diferenciaacutevel posicionada no R3 uma ldquoamostragem adequadardquo desta superfiacutecie eacute

aquela na qual a densidade da amostragem eacute (pelo menos) inversamente

proporcional agrave distacircncia ao ldquoEixo Medialrdquo A Figura 18 mostra uma amostragem

adequada

Operaccedilotildees Booleanas com Pontos 46

Figura 18 [10] A figura mostra o diagrama de Voronoi de uma amostragem de pontos S

Da mesma forma que o a amostragem aproxima a curva os veacutertices de Voronoi

aproximam o Eixo Medial

Na praacutetica na reconstruccedilatildeo da superfiacutecie uma aproximaccedilatildeo deste ldquoEixo

Medialrdquo eacute computada (devido agrave dificuldade de computaacute-lo exatamente e em

alguns casos ateacute impossibilidade)

Melhorias Propostas 47

5 Melhorias Propostas

No capiacutetulo 4 apresentamos dois meacutetodos que realizam operaccedilotildees

booleanas em modelos por pontos o meacutetodo de Adams e Dutreacute [2] e o meacutetodo

de Pauly[3] Para esta dissertaccedilatildeo usamos o meacutetodo de Adams e Dutreacute [2] e

propomos as seguintes melhorias

- Alteramos o momento em que eacute feita a classificaccedilatildeo da octree Fazemos

esta classificaccedilatildeo durante a sua criaccedilatildeo Os noacutes filhos de um noacute pai P qualquer

satildeo classificados logo apoacutes a criaccedilatildeo de todos estes filhos de P

independentemente do restante da octree ter sido criada Isso pode ser feito

porque a octree eacute construiacuteda na ordem raiz-esquerda-direita (preorder

traversal) e portanto apoacutes todos os filhos de um noacute pai serem criados a parte

necessaacuteria da octree para a classificaccedilatildeo destes filhos jaacute estaacute criada

- A classificaccedilatildeo da octree eacute otimizada classificando-se os cantos dos seus

noacutes como dentro ou fora do modelo Na classificaccedilatildeo de um noacute n1 a partir de seu

vizinho n2 se os cantos que satildeo comuns a n1 e n2 tiverem a mesma

classificaccedilatildeo esta seraacute dada ao noacute Assim diminuiacutemos o nuacutemero de pesquisas

pelo surfel mais proacuteximo que eacute a parte criacutetica da classificaccedilatildeo dos noacutes da octree

em termos de tempo de processamento

- Acrescentamos um valor miacutenimo (maior que zero) para o nuacutemero de

surfels contidos em um noacute que eacute uma das condiccedilotildees de parada na criaccedilatildeo da

octree Verificamos que desta forma diminui-se a chance de erro na classificaccedilatildeo

de partes criacuteticas como ldquoarestas vivasrdquo

Uma comparaccedilatildeo entre a nossa implementaccedilatildeo e a de Pauly tambeacutem seraacute

feita no capiacutetulo 6

51 Descriccedilatildeo do algoritmo

O algoritmo implementado para esta dissertaccedilatildeo baseado no meacutetodo de

Adams e Dutreacute [2] pode ser dividido nas seguintes partes Criaccedilatildeo e

classificaccedilatildeo de uma octree para cada modelo Teste DentroFora Criaccedilatildeo do

modelo resultado Natildeo foi implementado tratamento especial algum de

interseccedilatildeo para o nosso plugin As proacuteximas seccedilotildees apresentam estas partes

Melhorias Propostas 48

511 Criaccedilatildeo e classificaccedilatildeo de uma octree para cada modelo

As ideacuteias do algoritmo satildeo aqui ilustradas em 2D mas a extensatildeo delas

para 3D eacute feita facilmente

Para cada modelo a octree eacute criada e classificada da seguinte forma

Figura 19-Quadtree classificada Os noacutes mais escuros estatildeo fora do modelo os mais claros dentro e os em tom intermediaacuterio satildeo noacutes de contorno

Gera-se uma ldquocaixa envolventerdquo do modelo contendo todos os surfels e

cria-se o noacute raiz da octree que corresponde a esta ldquocaixa envolventerdquo Este noacute

raiz eacute subdividido em oito filhos e seus surfels satildeo distribuiacutedos entre eles Ao

inveacutes de testarmos os valores de xy e z para cada surfel a fim de determinar

para qual filho ele iraacute utilizamos listas auxiliares Primeiro os surfels satildeo

subdivididos em dois grupos pelos valores de x e armazenados em uma lista

auxiliar Em seguida cada uma das listas eacute subdividida pelo valor de y e as

quatro listas obtidas seratildeo subdivididas pelo valor de z Ao final teremos 8 listas

de surfels cada uma delas pertencente a um filho

Cada noacute seraacute entatildeo novamente subdividido enquanto contiver um nuacutemero

de surfels gt nmin (valor preacute-definido) ou enquanto a profundidade da aacutervore lt pmax

(valor preacute-definido) Na figura 19 pmax = 3 e nmin = 3

Melhorias Propostas 49

Figura 20-O noacute cheio eacute dividido em trecircs partes agrave esquerda a regiatildeo estaacute dentro do modelo agrave direita estaacute fora e entre as duas linhas que dividem o noacute estaacute a regiatildeo que conteacutem os surfels

Os noacutes cheios recebem um tratamento especial Eles satildeo subdivididos em

trecircs partes da seguinte forma uma que estaacute fora do modelo outra que estaacute

dentro e uma que conteacutem os surfels Esta subdivisatildeo eacute feita por meio da criaccedilatildeo

de dois planos paralelos que dividem o noacute Para determinar estes planos

calcula-se o vetor nm igual agrave meacutedia das normais dos surfels do noacute nm = sum ns

sum ns onde ns eacute a normal de cada surfel do noacute Em seguida encontra-se o

surfel com maior produto interno entre a sua normal e a normal meacutedia

d1=Max(nm ٠ ns) Este surfel juntamente com a normal meacutedia define um dos

planos Encontra-se tambeacutem o surfel com menor produto interno entre a sua

normal e a normal meacutedia d2=Min (nm ٠ ns) Este surfel juntamente com a normal

meacutedia define o outro plano (Figura 20) Se o noacute conteacutem surfels de superfiacutecies de

orientaccedilotildees diferentes ele natildeo seraacute subdividido ou seja os planos coincidiratildeo

com os planos que delimitam o proacuteprio noacute Este teste foi implementado da

seguinte forma escolhe-se um surfel qualquer do noacute Calcula-se o produto

interno entre a normal deste surfel e as outras normais dos outros surfels deste

noacute Se algum produto interno for menor que zero este noacute natildeo seraacute subdividido

Apoacutes a etapa de subdivisatildeo classificam-se os oito cantos deste noacute como

dentro ou fora do modelo por meio da classificaccedilatildeo de um ponto que

descreveremos na sub-seccedilatildeo 5111

Melhorias Propostas 50

a b

c d

Figura 21-O noacute a eacute classificado pelo noacute c o noacute d tambeacutem eacute classificado pelo noacute c a classificaccedilatildeo do noacute a eacute propagada para o noacute b

Jaacute os noacutes vazios da octree seratildeo classificados como ldquodentrordquo ou ldquoforardquo do

modelo da seguinte forma cada noacute folha vazio eacute classificado a partir de um de

seus irmatildeos vizinhos adjacentes Se ele possuir um vizinho adjacente cheio ele

seraacute classificado por este vizinho se natildeo possuir os vizinhos adjacentes seratildeo

classificados primeiro e ele teraacute esta mesma classificaccedilatildeo (Figura 21) Como tem

que existir sempre pelo menos um noacute cheio entre os filhos de um noacute pai entatildeo

sempre esta classificaccedilatildeo poderaacute ser feita Com a classificaccedilatildeo de todos os

filhos tem-se tambeacutem a classificaccedilatildeo dos cantos do noacute pai

Mf03c003fmx a b

Figura 22-Os cantos a e b do noacute cheio possuem a mesma classificaccedilatildeo fora do modelo Esta classificaccedilatildeo foi dada ao noacute vazio adjacente

Melhorias Propostas 51

Para classificar um noacute vazio por meio de um noacute cheio verificam-se os

cantos comuns destes dois noacutes se todos os cantos tiverem a mesma

classificaccedilatildeo esta seraacute dada ao noacute vazio (Figura 22) Se houver classificaccedilotildees

diferentes escolhe-se o surfel do noacute cheio mais proacuteximo ao noacute vazio faz-se o

produto interno entre a normal deste surfel e o vetor que liga o centro do noacute

cheio ao centro do noacute vazio (ou o vetor que liga o surfel ao centro do noacute vazio)

Se o produto interno for maior que zero o noacute eacute classificado como ldquoforardquo senatildeo eacute

classificado como ldquodentrordquo Para encontrar o surfel (pertencente a um noacute cheio)

mais proacuteximo ao noacute vazio existem dois casos

- O noacute cheio eacute folha percorre-se toda a lista de surfels e escolhe o surfel

mais proacuteximo da fronteira entre o noacute cheio e o vazio

- O noacute cheio natildeo eacute um noacute folha percorrem-se os filhos do noacute cheio ou seja

esta pesquisa eacute feita descendo na octree a partir do noacute cheio procurando o

surfel mais proacuteximo agrave fronteira do pai com o noacute vazio a ser classificado

Classificando o centro do noacute vazio todo o noacute deve ter a mesma

classificaccedilatildeo pois este noacute natildeo conteacutem surfels Para encontrar o surfel do noacute

vazio mais proacuteximo da fronteira entre o noacute cheio e o vazio basta testar o valor da

coordenada se a fronteira eacute o lado direito do noacute cheio escolhe-se o surfel com

maior coordenada lsquoxrsquo se eacute o lado esquerdo escolhe-se o surfel com menor lsquoxrsquo

se lado superior surfel com maior lsquoyrsquo etc A seguir apresentamos a classificaccedilatildeo

de um ponto qualquer pertencente a um noacute cheio

Figura 23- Quadtree classificada

Melhorias Propostas 52

5111 Classificaccedilatildeo de um ponto de um noacute cheio

Figura 24 [2] A normal n eacute a normal meacutedia e os surfels s1 e s2 juntamente com a normal

n definem as retas que dividem o noacute O ponto a estaacute fora do modelo e o ponto b estaacute

dentro do modelo

Para um ponto localizado dentro do noacute faz-se o seguinte teste se o noacute foi

dividido testa-se de acordo com a divisatildeo do noacute se o ponto estaacute na parte do noacute

que estaacute dentro do modelo ele eacute classificado como ldquodentrordquo se o ponto estaacute na

parte que estaacute fora do modelo ele eacute classificado como ldquoforardquo (Figura 24) se o

ponto estaacute na parte que conteacutem os surfels encontra-se o surfel s pertencente ao

noacute mais proacuteximo do ponto e o classifica de acordo com s seja ns a normal em s

cs a coordenada de s cp a coordenada do ponto Se (cp - cs )٠ ns gt 0 o ponto

seraacute classificado como ldquoforardquo Senatildeo seraacute classificado como ldquodentrordquo

Se o noacute natildeo foi dividido em planos esta classificaccedilatildeo a partir do surfel

mais proacuteximo seraacute sempre feita

512 Teste DentroFora

Melhorias Propostas 53

Figura 25-Duas circunferecircncias e suas quadtrees correspondentes

O Teste DentroFora classifica os surfels de um modelo como dentro ou

fora de outro modelo ou na sua interseccedilatildeo Este teste foi aqui implementado

exatamente como foi proposto em Adams e Dutreacute [2] exceto que natildeo foi

implementado o meacutetodo TINN - Triangle Inequality Nearest Neighbour [19]

Cada octree eacute percorrida verificando-se se os seus noacutes ou surfels estatildeo dentro

fora ou no contorno do outro modelo (Figura 25) Sejam A e B duas octrees e

queremos classificar a octree A As duas octrees (AB) satildeo percorridas partindo

da raiz

Para cada noacute de A existem quatro casos (Figura 26) Para testar estas

situaccedilotildees os boxes dos noacutes satildeo aumentados de rmax o raio do maior surfel do

modelo Isto eacute feito para compensar o fato de que o surfel natildeo eacute apenas um

ponto mas sim considerado como um disco

Os quatro casos satildeo

Se o noacute de A natildeo intersecta B entatildeo todos os surfels deste noacute satildeo

classificados como fora

Se o noacute de A intersecta apenas noacutes de B que estatildeo fora do modelo

todos os surfels deste noacute satildeo fora

Se o noacute de A intersecta apenas noacutes de B que estatildeo dentro do modelo

todos os surfels deste noacute satildeo dentro

Melhorias Propostas 54

Se o noacute de A intersecta noacutes de B que estatildeo dentro e tambeacutem noacutes de B

que estatildeo fora testa-se se este noacute de A eacute ou natildeo folha Se natildeo for folha

percorre-se os filhos deste noacute de A ateacute encontrar um noacute folha cheio que

intersecta B Para cada surfel sa deste noacute folha de A encontra-se o surfel de B

mais proacuteximo e classifica-se a coordenada de sa da forma apresentada na seccedilatildeo

5111 Seja sb o surfel usado na classificaccedilatildeo de sa Se os discos de sb e sa

se intersectam sa eacute classificado como ldquointerseccedilatildeordquo

(a) (b)

(c) (d)

Figura 26- a modelos natildeo se intersectam b modelo intersecta noacutes fora c modelo intersecta apenas noacutes dentro d modelo intersecta noacutes dentro e noacutes fora

513 Criaccedilatildeo do modelo resultado

Um novo modelo eacute criado com os seguintes surfels (de acordo com a

operaccedilatildeo booleana escolhida pelo usuaacuterio - veja Regra 1 da seccedilatildeo 41)

Uniatildeo - surfels de A que estatildeo fora de B + surfels de B que estatildeo fora de A

Melhorias Propostas 55

Interseccedilatildeo - surfels de A que estatildeo dentro de B + surfels de B que estatildeo

dentro de A

Diferenccedila A-B - surfels de A que estatildeo fora de B + surfels de B que estatildeo

dentro de A (com orientaccedilatildeo invertida)

Como natildeo foi implementado tratamento especial algum de interseccedilatildeo para

o nosso plugin os surfels que se intersectam satildeo mantidos no modelo resultado

final sem modificaccedilotildees

Descrito o algoritmo vejamos a seguir a sua implementaccedilatildeo

52 Implementaccedilatildeo

Este algoritmo foi implementado na forma de um plugin para o software

PointShop 3D [11] Este plugin foi desenvolvido na linguagem C e no sistema

operacional Windows

A escolha deste tipo de implementaccedilatildeo permitiu-nos usar o software

PointShop para os testes do algoritmo Estes testes foram feitos com os modelos

disponibilizados para o PointShop [11] Nesta seccedilatildeo apresentaremos o software

PointShop e as principais estruturas de dados usadas em nosso plugin

O Pointshop eacute um software aberto com seu coacutedigo disponiacutevel e preparado

para trabalhar com plugins Eacute um software de ediccedilatildeo de modelos 3D por pontos

Ele permite aleacutem de visualizar o modelo alterar as suas caracteriacutesticas como

cor brilho e fazer mapeamento de textura iluminaccedilatildeo filtragem (Figura 27)

Melhorias Propostas 56

Figura 27-Software PointShop 3D com dois modelos carregados na sua cena

Aleacutem disso pode-se criar uma cena com vaacuterios modelos e visualizaacute-los de

qualquer ponto de vista Implementa o virtual trackball para rotacionaacute-los e

transladaacute-los Usa uma iluminaccedilatildeo simples direcional A sua arquitetura eacute

extensiacutevel permite que o usuaacuterio adicione seus proacuteprios componentes ao

sistema Possui trecircs tipos de componentes

ldquoToolsrdquo fornece funcionalidades para ediccedilatildeo interativa de superfiacutecie Satildeo

disponibilizados na ldquotoolbarrdquo

Plugins fornece funcionalidades para processar em um soacute passo

modelos ou partes deles selecionadas Satildeo disponibilizados no menu ldquoPluginsrdquo

Renderes fornece funcionalidades de display para os modelos

Para esta dissertaccedilatildeo foi escolhida a construccedilatildeo do componente Plugin

por adequar-se agrave nossa proposta e ser a mais simples de ser construiacuteda O

PointShop [11] jaacute conteacutem uma tool que executa operaccedilotildees booleanas e

deformaccedilatildeo free-form sobre os modelos carregados na cena usando o meacutetodo

de Pauly [3] apresentado no capiacutetulo 4 O nosso plugin Operaccedilotildees Booleanas

implementa o algoritmo descrito na seccedilatildeo anterior baseado na proposta de

Melhorias Propostas 57

Adams e Dutreacute [2] Uma comparaccedilatildeo entre o nosso plugin e a tool de Pauly [3] eacute

feita no capiacutetulo 6

Figura 28-Menu do PointShop com o plugin e as opccedilotildees para operaccedilotildees booleanas

Para se executar o plugin o usuaacuterio precisa carregar dois modelos na

cena do PointShop acionar o plugin informando a operaccedilatildeo que seraacute executada

O plugin executaraacute o algoritmo acima proposto e carregaraacute o resultado na cena

do Pointshop retirando os modelos anteriores

521 Estruturas de Dados

Como vimos o software PointShop [11] trabalha com modelos por pontos

Um modelo deste software descrito na seccedilatildeo 42 conteacutem todas as informaccedilotildees

que o algoritmo proposto em Bart [2] necessita Abaixo relacionamos as

Melhorias Propostas 58

principais estruturas de dados do PointShop usadas no plugin e as principais

estruturas de dados do nosso plugin

As principais classes do PointShop usadas no plugin satildeo

Classe Scene

Classe Objects

Classe SurfelColections

Classe Surfel

Classe StatusBar

Classe Transformer

A hierarquia de dados eacute a seguinte a Scene conteacutem vaacuterios Objects os

quais conteacutem SurfelColections Cada SurfelColections conteacutem Surfels que

suportam uma ou mais propriedades tais como cor difusa cor especular

Classe Scene Classe que representa uma cena que conteacutem modelos

Classe Object Um modelo eacute representado pela classe Object que

conteacutem uma SurfelCollection e as matrizes de transformaccedilatildeo para rotaccedilatildeo

escala e translaccedilatildeo Cada Object eacute identificado pelo seu nome que eacute uacutenico na

Scene O meacutetodo getUniqueName retorna um nome uacutenico Cada Object tem sua

proacutepria matriz de transformaccedilatildeo que pode ser modificada com setRotation

rotate setPosition translate setScale e scale Objects podem ser copiados com

copy Objects consiste em um conjunto de surfels os quais podem ser

recuperados pela getSurfelCollection O Object pode ser ativado com

setActiveObject e recuperado com getActiveObject

Objects podem ser adicionados ou removidos com addObject e

removeObject Os Objects podem ser obtidos pela getFirstObject e

getNextObject

Classe SurfelCollection representa o conjunto de surfels de um modelo

Cada surfelcollection consiste em um conjunto de surfels (SurfelInterface) de

tamanho obtido por getNofSurfels Os surfels podem ser recuperados com

getFirstSurfel getCurrentSurfel e getNextSurfel

A SurfelCollection conteacutem um PropertyDescriptor e uma SurfelList

A SurfelList eacute uma lista duplamente encadeada de surfels Possui os

atributos firstSurfel lastSurfel currentSurfel que satildeo ponteiros para uma

SurfelInterface nSurfels que eacute o nuacutemero de Surfels

A SurfelInterface define a API para os surfels que satildeo os menores

elementos que compotildeem um Object Podem ser considerados como pontos com

uma normal que define a orientaccedilatildeo do ciacuterculo (ou elipse) que seraacute desenhado

Melhorias Propostas 59

tatildeo logo o surfel seja renderizado Tem como atributos dois ponteiros (next e

prev) para SurfelInterface

PropertyDescriptor consiste em ateacute 32 valores descrevendo quais as

propriedades a SurfelInterface suporta

Classe Surfel classe que representa o surfel

Classe StatusBar classe que imprime mensagens na tela Os plugins

podem mandar mensagens para o usuaacuterio pela StatusBar

Mensagens texto podem ser impressas com showMessage O progresso

de uma operaccedilatildeo pode ser indicado com setProgress ou resetProgress

Classe Transformer representa a transformaccedilatildeo entre sistemas de

coordenadas Esta classe fornece meacutetodos para transformar pontos e vetores

entre os diferentes sistemas de coordenadas do Pointshop

A seguir apresentamos as principais estruturas de dados do plugin

Operaccedilotildees Booleanas

As principais estruturas de dados do plugin satildeo boundingbox tree no

lista_surfel surfel

Boundingbox conteacutem dois pontos 3D que definem uma caixa que conteacutem

o modelo um ponto com menores coordenadas xy e z e outro ponto com

maiores xyz

Tree representa a octree do modelo Cada registro conteacutem um ponteiro

para um noacute e oito ponteiros para as 8 octrees filhas

No representa um noacute da octree Conteacutem os seguintes dados

- localizaccedilatildeo do noacute que eacute o canto inferior esquerdo do noacute

- lista_surfel (preenchida apenas para noacutes folha cheios)

- quantidade de surfels do noacute

- classificaccedilatildeo do noacute como dentro fora ou contorno

- classificaccedilatildeo do noacute em relaccedilatildeo a outro modelo

- indica se o noacute eacute folha ou natildeo

- vetor que eacute a meacutedia das normais dos surfels do noacute

- ponto que eacute a meacutedia das localizaccedilotildees dos surfels do noacute

- surfel que tem (entre todos os surfels do noacute) o maior produto interno

entre a sua normal e a normal meacutedia

- surfel que tem (entre todos os surfels do noacute) o menor produto interno

entre a sua normal e a normal meacutedia

- produto interno maacuteximo e miacutenimo entre as normais dos surfels do noacute e a

normal meacutedia deste noacute

Melhorias Propostas 60

- indica se o noacute conteacutem surfels com normais em sentido oposto (produto

interno entre elas eacute menor que zero)

- classificaccedilatildeo dos oito cantos do noacute

lista_surfels lista em que cada registro conteacutem um apontador para um

surfel e um apontador para o proacuteximo registro

surfel representa o surfel da octree Conteacutem a classificaccedilatildeo em relaccedilatildeo a

outro modelo e um ponteiro para o surfel do Poinshop

Resultados 61

6 Resultados

Neste capiacutetulo apresentamos os testes realizados com o plugin para o

PointShop implementado para esta dissertaccedilatildeo a comparaccedilatildeo deste plugin com

o plugin de Pauly [3] e a comparaccedilatildeo entre o meacutetodo de Adams e Dutreacute [2] e o

meacutetodo de Pauly [3]

61 Testes

Os testes foram feitos em um PC x86 Family 6 261600 KB de RAM sem

placa graacutefica sistema operacional Windows 2000 O plugin foi implementado na

linguagem C

Os modelos usados para os testes satildeo modelos disponibilizados no

PointShop [11] Vale lembrar que o meacutetodo implementado em nosso plugin eacute

restrito a modelos soacutelidos e portanto foram usados apenas estes modelos

soacutelidos para os testes

O modelo na Figura 29 que eacute um dos modelos disponibilizados no

PointShop [11] foi usado para mostrar o resultado das operaccedilotildees realizadas

pelo plugin implementado nesta dissertaccedilatildeo O modelo Igea eacute um modelo soacutelido

que conteacutem 134345 surfels

Resultados 62

Figura 29-Modelo do PointShop Igea

Para realizar as operaccedilotildees este modelo foi carregado na cena do

PointShop duas vezes e um deles colorido de vermelho As Figuras 30 31 32

mostram o resultado da operaccedilatildeo de uniatildeo interseccedilatildeo e diferenccedila

respectivamente Os nuacutemeros de surfels dos modelos resultantes satildeo mostrados

na Tabela 2

Resultados 63

Figura 30-Resultado da uniatildeo de duas Igeas

Figura 31-Resultado da interseccedilatildeo de duas Igeas

Resultados 64

Figura 32-Resultado da diferenccedila entre duas Igeas

Tabela 2-Nuacutemero de surfels dos modelos resultantes

Observamos que o nuacutemero de surfels dos modelos resultantes estaacute

coerente com as figuras dos seus modelos

Para avaliar o tempo de processamento das operaccedilotildees foram realizados

vaacuterios testes com o objetivo de obter uma meacutedia dos tempos de realizaccedilatildeo de

cada operaccedilatildeo Tambeacutem foram armazenados os tempos da criaccedilatildeo das duas

octrees e da classificaccedilatildeo de todos os surfels dos dois objetos (como dentro ou

fora do outro modelo) Estes testes foram feitos usando o modelo Igea A meacutedia

dos tempos de processamento foi calculada e os resultados satildeo mostrados na

Tabela 3 Verificamos que o maior tempo gasto eacute para criaccedilatildeo das octrees

Verificamos tambeacutem que este resultado apresentado eacute similar ao resultado

verificado empiricamente com o plugin de Pauly [3] Os tempos gastos para

realizar as operaccedilotildees satildeo similares e o maior tempo gasto no plugin de Pauly

tambeacutem eacute para inicializaccedilatildeo de suas estruturas de dados que incluem a kd-tree

Operaccedilatildeo Nuacutemero de surfels do modelo resultado

Uniatildeo 189715

Interseccedilatildeo 72225

Diferenccedila 134552

Resultados 65

Operaccedilatildeo Criaccedilatildeo das

Octrees (seg)

Classificaccedilatildeo

(seg)

Criaccedilatildeo do

resultado (seg)

Total (seg)

Uniatildeo 39375 1324 18925 7154

Interseccedilatildeo 38585 1585 09547 63982

Diferenccedila 399875 1504 1729 729475

Tabela 3- Meacutedia dos tempos de processamento para as operaccedilotildees com duas Igeas

Com o objetivo de expor melhor os resultados deste trabalho

apresentamos abaixo mais um teste das operaccedilotildees booleanas usando o nosso

plugin Os modelos usados para este segundo teste satildeo o Max Planck e o Male

ambos modelos soacutelidos disponibilizados no PointShop Estes modelos satildeo

mostrados nas figura 33 e 34

O primeiro Max Planck conteacutem 52809 surfels

Figura 33-Modelo do PointShop MaxPlanck

O segundo modelo abaixo Male conteacutem 148138 surfels

Resultados 66

Figura 34-Modelo do PointShop Male

As Figuras 353637 mostram o resultado da operaccedilatildeo de uniatildeo interseccedilatildeo

e diferenccedila respectivamente usando os dois modelos acima Podemos observar

pela figura 35 que o resultado da operaccedilatildeo de diferenccedila neste caso gerou um

modelo resultado com trecircs partes desconexas Os nuacutemeros de surfels de cada

modelo resultado satildeo mostrados na Tabela 5

Figura 35- Resultado da Uniatildeo do modelo Male com MaxPlanck

Resultados 67

Figura 36-Resultado da interseccedilatildeo do modelo Male com o MaxPlanck

Figura 37-Resultado da diferenccedila do modelo Male do modelo MaxPlanck

As meacutedias de tempos de processamento foram calculadas da mesma

forma que o primeiro teste com o modelo Igea acima apresentado Os

resultados satildeo mostrados na Tabela 4 Podemos observar que este teste

Resultados 68

apresenta tempos um pouco menores que o teste com o modelo Igea Isto se

deve ao fato de que o modelo MaxPlanck ser significativamente menor que o

modelo Igea MaxPlanck possui 52809 surfels e Igea conteacutem 134345 surfels

Operaccedilatildeo Criaccedilatildeo das

Octrees (seg)

Classificaccedilatildeo

(seg)

Criaccedilatildeo do

resultado (seg)

Total

(seg)

Uniatildeo 3012 1254 102 5285

Interseccedilatildeo 2985 0901 0861 4747

Diferenccedila 2965 0911 0791 4667

Tabela 4-Tempo de processamento das operaccedilotildees com os modelos MaxPlanck e Male

Operaccedilatildeo Nuacutemero de surfels do resultado

Uniatildeo 126532

Interseccedilatildeo 88414

Diferenccedila 77635

Tabela 5-Nuacutemero de surfels dos modelos resultados das operaccedilotildees com os modelos MaxPlanck e Male

Em seguida apresentaremos uma comparaccedilatildeo entre o nosso plugin e o

plugin de Pauly[3] e tambeacutem uma comparaccedilatildeo entre o meacutetodo de Adams e Dutreacute

[2] e o meacutetodo de Pauly [3]

62 Comparaccedilatildeo entre os dois meacutetodos que realizam operaccedilotildees booleanas

A comparaccedilatildeo entre os meacutetodos de Pauly[3] e de Adams e Dutreacute foi feita

em termos de tempo de processamento e em termos conceituais Em termos de

tempo de processamento comparamos o plugin de Pauly[3] com o nosso plugin

Em termos de tempo de processamento verifica-se empiricamente que os

dois meacutetodos apresentam tempos bastante similares Entretanto o tempo de

processamento do algoritmo aqui implementado ainda pode ser melhorado com

Resultados 69

o uso do meacutetodo TINN [19] que foi proposto em Adams[2] - para otimizar a

pesquisa do surfel mais proacuteximo a um ponto que estaacute localizado na regiatildeo de um

noacute que conteacutem surfels - veja seccedilatildeo 42 O uso deste meacutetodo natildeo foi

implementado para este trabalho e a sua implementaccedilatildeo melhoraria o tempo de

resposta do algoritmo Aleacutem disso o trabalho de Sara F Frisken [12] citado no

capiacutetulo 2 apresenta uma otimizaccedilatildeo no uso de octrees que pode ser

incorporada no algoritmo implementado neste trabalho

Em termos conceituais vamos fazer a comparaccedilatildeo do uso do que

chamamos aqui de Regra 2 do tratamento de interseccedilatildeo e do tratamento de

ldquoarestas vivasrdquo

Como vimos na seccedilatildeo 41 tanto o algoritmo implementado nesta

dissertaccedilatildeo baseado no trabalho de Adams e Dutreacute como o meacutetodo de Pauly

[3] parte do que chamamos aqui de Regra 2 para realizar operaccedilotildees booleanas

com pontos Mas cada um destes meacutetodos daacute um tratamento diferente para o

uso desta regra

O meacutetodo de Pauly usa a Regra 2 para classificaccedilatildeo de cada ponto ou de

cada surfel Para classificar um surfel de B sb como dentro ou fora de A eacute

encontrado o surfel de A sa mais proacuteximo a sb e sb eacute classificado a partir de sa

Para encontrar sa Pauly utiliza uma kd-tree Como esta pesquisa para encontrar

sa eacute cara (mesmo usando uma kd-tree) Pauly utiliza uma esfera que conteacutem

pontos com a mesma classificaccedilatildeo (seccedilatildeo 432) e diminui em 90 este nuacutemero

de pesquisas Pauly utiliza tambeacutem a representaccedilatildeo impliacutecita MLS (Moving Least

Squares) para casos em que a Regra 2 poderia falhar e para tratamento de

interseccedilotildees Entretanto o nuacutemero destes casos em que a Regra 2 poderia falhar

eacute muito pequeno E a representaccedilatildeo MLS natildeo eacute uma estrutura simples de ser

implementada Portanto natildeo encontramos vantagens em usar MLS para estes

casos O meacutetodo de Adams e Dutreacute natildeo trata estes casos e na praacutetica

apresenta resultados bastante satisfatoacuterios como foi mostrado Portanto

consideramos que valeria a pena fazer algum tratamento especial para estes

casos se fosse um procedimento simples Para a execuccedilatildeo do algoritmo de

Pauly o uso de MLS natildeo interfere significativamente porque a construccedilatildeo desta

representaccedilatildeo natildeo eacute feita somente para realizar operaccedilotildees booleanas Os testes

empiacutericos que fizemos com o algoritmo de Pauly natildeo incluem a construccedilatildeo desta

representaccedilatildeo

Aparentemente os dois algoritmos satildeo bastante parecidos um usa octrees

e o outro usa kd-tree As duas estruturas de dados satildeo simples e otimizam a

classificaccedilatildeo dos surfels de um modelo como dentro ou fora do outro modelo

Resultados 70

Mas existe uma diferenccedila conceitual entre dois que merece ser destacada O

algoritmo aqui implementado usa a Regra 2 para classificaccedilatildeo dos noacutes de uma

octree e armazena esta octree classificada (ver capiacutetulo 5) Assim na maioria dos

casos natildeo seraacute necessaacuterio encontrar o surfel mais proacuteximo para classificar um

ponto (ou um surfel) como fora ou dentro de um modelo Caso o ponto esteja em

uma aacuterea da octree classificada ele teraacute a classificaccedilatildeo dada agravequela aacuterea A

pesquisa ao surfel mais proacuteximo seraacute feita apenas nos casos em que o ponto a

ser classificado estaacute localizado entre os planos que subdividem um noacute cheio

O uso desta octree classificada levanta uma questatildeo que natildeo foi citada no

trabalho de Adams e Dutreacute que eacute a proximidade desta estrutura (armazenada)

de octree classificada com uma representaccedilatildeo volumeacutetrica do objeto Sendo

assim esta estrutura pode ser aproveitada para outras funccedilotildees aleacutem da

classificaccedilatildeo dos surfels Por exemplo podemos ter uma aproximaccedilatildeo do

volume de uma cena somando os volumes aproximados dos modelos que a

compotildeem Como o enfoque deste trabalho eacute operaccedilatildeo booleana natildeo vamos nos

aprofundar nesta questatildeo

Outra importante diferenccedila entre os dois trabalhos que jaacute foi explicada na

seccedilatildeo 432 eacute que o meacutetodo de Pauly aplica-se a modelos soacutelidos ou natildeo

soacutelidos enquanto que o meacutetodo de Adams e Dutreacute aplica-se somente a modelos

soacutelidos

Quanto ao tratamento de interseccedilatildeo em termos de visualizaccedilatildeo todos os

dois resolvem bem o problema O tratamento de interseccedilatildeo nos dois trabalhos

tambeacutem resolve o problema da validade da Regra 2 (ver seccedilatildeo 44) Entretanto

o tratamento de Adams e Dutreacute natildeo depende da renderizaccedilatildeo sendo portanto

mais portaacutevel Aleacutem disso uma desvantagem do meacutetodo de Pauly eacute o uso da

representaccedilatildeo impliacutecita MLS (ldquoMoving Least Squaresrdquo) do objeto para obter os

pontos exatamente na curva de interseccedilatildeo Esta representaccedilatildeo torna o

tratamento de interseccedilatildeo mais complexo e a vantagem apresentada natildeo eacute tatildeo

significativa para este tratamento de interseccedilatildeo

Conclusatildeo 71

7 Conclusatildeo

Concluiacutemos entatildeo que as escolhas de Adams e Dutreacute por usar uma

octree classificada e pelo tratamento dado agrave interseccedilatildeo satildeo mais abrangentes

que a escolha de Pauly E consideramos que quanto mais abrangente for uma

escolha conceitual mais resultados poderemos tirar dela No caso de Adams e

Dutreacute eles estendem o problema de classificar um ponto para classificar todo o

modelo Como foi citado ele quase fornece uma representaccedilatildeo volumeacutetrica do

modelo Esta aproximada representaccedilatildeo volumeacutetrica pode nos fornecer outras

informaccedilotildees como por exemplo o volume aproximado do modelo

Aleacutem disso o uso da representaccedilatildeo impliacutecita MLS no meacutetodo de Pauly cria

uma complexidade a mais para o meacutetodo sem apresentar vantagens para a

realizaccedilatildeo de operaccedilotildees booleanas que eacute o nosso enfoque

Logo podemos dizer que o meacutetodo de Adams e Dutreacute apresenta as

seguintes vantagens em relaccedilatildeo ao de Pauly

- a estrutura de octree classificada aleacutem de ser usada para classificaccedilatildeo

fornece informaccedilotildees adicionais como volume aproximado do objeto

- o tempo de processamento no meacutetodo de Adams e Dutreacute tende a ser

melhor que no meacutetodo de Pauly se implementadas as melhorias acima citadas e

se colocaacutessemos em consideraccedilatildeo o uso da representaccedilatildeo impliacutecita MLS

(Moving Least Squares)

- o tratamento de interseccedilatildeo de Adams e Dutreacute apresenta a vantagem da

portabilidade ou seja iraacute funcionar independente do algoritmo de renderizaccedilatildeo

utilizado

E as vantagens do meacutetodo de Pauly em relaccedilatildeo ao de Adams e Dutreacute

- a colocaccedilatildeo de surfels exatamente na curva de interseccedilatildeo

- a possibilidade de trabalhar com modelos soacutelidos ou natildeo soacutelidos

E finalizando concluiacutemos que o estudo relatado nesta dissertaccedilatildeo foi

importante por

- fornecer um breve estudo sobre modelagem por pontos uma nova e

promissora aacuterea dentro da computaccedilatildeo graacutefica

Conclusatildeo 72

- por apresentar uma avaliaccedilatildeo dos dois trabalhos existentes sobre

operaccedilotildees booleanas com pontos encontrando as vantagens de cada um

e levantando questotildees que natildeo tinham sido citadas nos trabalhos originais

- por propor e implementar melhorias ao trabalho de Adams e Dutreacute

71 Trabalhos Futuros

Nossa implementaccedilatildeo pode ser ainda evoluiacuteda com as propostas

apresentadas na seccedilatildeo 62 Como observamos o tempo de processamento do

algoritmo aqui implementado ainda pode ser melhorado com o uso do meacutetodo

TINN [19] - que foi proposto em Adams[2] - para otimizar a pesquisa do surfel

mais proacuteximo a um ponto que estaacute localizado na regiatildeo de um noacute que conteacutem

surfels Aleacutem disso o trabalho Simple and Efficient Trasversal Methods for

Quadtrees and Octrees de Sara F Frisken [12] citado no capiacutetulo 2 apresenta

uma otimizaccedilatildeo no uso de octrees Outra proposta para melhorar o tempo de

processamento do algoritmo aqui implementado eacute usar a forma de trabalhar com

octrees apresentada neste trabalho

O trabalho de Adams e Dutreacute [2] eacute aplicado apenas a objetos soacutelidos O

nosso plugin portanto aplica-se somente a este tipo de objeto Jaacute o trabalho de

Pauly[3] eacute aplicado tambeacutem a modelos natildeo soacutelidos Apresentamos como

proposta a um trabalho futuro a extensatildeo do algoritmo aqui implementado para

modelos natildeo soacutelidos O surfel pode conter uma informaccedilatildeo adicional que indica

se ele estaacute delimitando um volume ou natildeo Assim pode-se ter um modelo com

ldquopartes soacutelidasrdquo e ldquopartes natildeo soacutelidasrdquo Por exemplo a uniatildeo de um plano com

uma esfera poderia resultar numa esfera com ldquoabasrdquo (seriam as partes do plano

que estariam fora da esfera) O modelo resultado teria uma parte correspondente

a um espaccedilo 3D (esfera) e outra parte que seria uma superfiacutecie 2D posicionada

no espaccedilo 3D sem delimitar algum volume (abas)

Muitos trabalhos podem ser desenvolvidos aplicando-se o modelo por

pontos em animaccedilatildeo jogos visualizaccedilatildeo de terrenos criaccedilatildeo de protoacutetipos etc

considerando-se a eficiecircncia e simplicidade do modelo E mais especificamente

as operaccedilotildees booleanas com pontos podem ser aplicadas para criaccedilatildeo de

cenaacuterios testes de colisotildees e nestes casos a representaccedilatildeo usando octrees

pode ser mais explorada considerando-se o seu potencial de representaccedilatildeo

volumeacutetrica de um objeto

Referecircncias Bibliograacuteficas 73

8 Referecircncias Bibliograacuteficas

[1] MAumlNTYLAuml M An Introduction to Solid Modeling Computer Science Press 1988

[2] ADAMS B DUTREacute P Interactive Boolean Operations on Surfel-

Bounded Solids Proceedings of SIGGRAPH 2003 San Diego USA 2003

[3] PAULY M KEISER R KOBBELT L GROSS M Shape Modeling

with Point-Sampled Geometry SIGGRAPH 2003 Computer Graphics

Proceedings Annual Conference Series ACM Press ACM SIGGRAPH 2003

[4] LEVOY M WHITTED T The Use of Points as Display Primitives

Technical Report TR 85-022 The University of North Carolina at Chapel Hill

Department of Computer Science 1985

[5] PFISTER H ZWICKER M VAN BAAR J GROSS M 2000 Surfels

Surface Elements as Rendering Primitives SIGGRAPH 2000 pp 335ndash342 New

Orleans LA July 23-28 2000

[6] ZWICKER M PFISTER H VAN BAAR J GROSS M Surface

Splatting SIGGRAPH 2001

[7] PAULY M KOBBELT L GROSS M Multiresolution Modeling of

Point-Sampled Geometry CS Techinical Report 378 September 16 2002

[8] CURLESS B New Methods for Surface Reconstruction from Range Images PhD thesis Stanford University 1997

[9] RUSINKIEWICZ S Real-time Acquisition and Rendering of Large 3D Models PhD thesis Stanford University 2001

Referecircncias Bibliograacuteficas 74

[10] AMENTA N BERN M KAMVYSSELIS M A new Voronoi-Based

Surface Reconstruction Algorithm SIGGRAPH 98 Conference proceedings pp

415-421 New York 1998

[11] ZWICKER M PAULY M KNOLL O GROSS M Pointshop 3D an

Interactive System for Point-Based Surface Editing Proceedings of SIGGRAPH 2002 San Antonio TX July 2002

[12] FRISKEN S PERRY R Simple and Efficient Traversal Methods for

Quadtrees and Octrees Journal of Graphics Tools Vol 7 Issue 3 May 2003

[13] CORREcircA W T OLIVEIRA M M Silva C T Wang J

Modeling and Rendering of Real Environments

Revista de Informaacutetica Teoacuterica e Aplicada (Brazilian Journal of Theoretic and Applied Computing) 9(2)127-156 2002

[14] DAVIS J MARSCHNER S GARR M LEVOY M Filling Holes in

Complex Surfaces Using Volumetric Diffusion First International Symposium on 3D Data Processing Visualization Transmission June 2002

[15] RAumlSAumlNEN J Surface Splatting Theory Extensions and Implementation Masterrsquos Thesis Dept of Computer Science Helsinki

University of Technology May 28 2002

[16] PAULY M Point Primitives for Interactive Modeling and Processing of 3D Geometry PhD thesis Federal Institute of Technology (ETH)

of Zurich 2003

[17] HOPPE H DEROSE T DUCHAMP T MCDONALD J

STUELZLE W Surface Reconstruction from Unorganized Points Computer Graphics 26(2)71ndash78 July 1992

[18] ALEXA M BEHR J COHEN-OR D FLEISHMAN S LEVIN D

SILVA C T Point Set Surfaces IEEE Visualization 2001 pp 21ndash28 October

2001

Referecircncias Bibliograacuteficas 75

[19] GREENSPAN M GODIN G TALBOT J Acceleration of Binning

Nearest Neighbor Methods Proceedings of Vision Interface 2000 pp 337-

344

[20] MENCL R Reconstruction of Surfaces from Unorganized Three-Dimensional Point Clouds Dissertation Dortmund Univ 2001

[21] KRIVANEK J Representing and Rendering Surfaces With Points

httpciteseernjneccomkrivanek03representinghtml Acesso em 30 jul

2003

[22] KRISTJANSSON ET AL Approximate Boolean Operations on Free-

form Solids Proceedings of SIGGRAPH 01 2001

512 Teste DentroFora 52 513 Criaccedilatildeo do modelo resultado 54 52 Implementaccedilatildeo 55 521 Estruturas de Dados 57

6 Resultados 61 61 Testes 61 62 Comparaccedilatildeo entre os dois meacutetodos que realizam operaccedilotildees booleanas 68

7 Conclusatildeo 71 71 Trabalhos Futuros 72

8 Referecircncias Bibliograacuteficas 73

11

Lista de figuras

Figura 1 Um modelo por pontos e sua visualizaccedilatildeo 21 Figura 2 A superfiacutecie modelada por surfels O surfel em destaque tem raio de

alcance rt e normal n 22 Figura 3 Modelo por pontos e sua renderizaccedilatildeo usando Surface Splatting 26 Figura 4 Trecircs modelos novos foram criados a partir dos quatro iniciais (esfera

cilindro dois cubos) O primeiro eacute a esfera menos um cubo em seguida

retirou-se outro cubo e por uacuteltimo retirou-se o cilindro 29 Figura 5 A partir de dois modelos por pontos uma heacutelice e uma cabeccedila as trecircs

operaccedilotildees booleanas satildeo mostradas da esquerda para a direita uniatildeo

diferenccedila e interseccedilatildeo 30 Figura 6 (a) Dois modelos A e B (b) Posicionados de forma que A tem uma parte

dentro de B eacute mostrado o resultado A U B Af + Bf (c) Resultado de A ndash B Af

+ Bd (d) Resultado de A cap B Ad + Bd 31 Figura 7 Para classificar o ponto x encontra-se o surfel p (com normal np) mais

proacuteximo a x Se o produto interno entre np e (x ndash p) for maior que zero entatildeo

x eacute classificado como fora senatildeo seraacute classificado como dentro 32 Figura 8 Interseccedilatildeo de duas esferas agrave esquerda sem nenhum tratamento de

interseccedilatildeo agrave direita apoacutes o tratamento de interseccedilatildeo 33 Figura 9 Um objeto representado por pontos com suas normais e sua quadtree

correspondente classificada os noacutes cinza claro estatildeo dentro do modelo noacutes

cinza mais escuro estatildeo fora do modelo e noacutes com cinza intermediaacuterio satildeo

noacutes cheios noacutes que conteacutem pontos 35 Figura 10 Divisatildeo de noacute de contorno a parte agrave esquerda estaacute fora do modelo a

parte agrave direita estaacute dentro do modelo e a faixa intermediaacuteria conteacutem os

surfels 36 Figura 11 Interseccedilatildeo do surfel s e do plano que passa pelo surfel t o surfel mais

proacuteximo a s O surfel s eacute substituiacutedo por trecircs surfels menores 38 Figura 12 Agrave direita eacute mostrado o resultado do tratamento de interseccedilatildeo para o

caso de Arestas Vivas do objeto agrave esquerda 39 Figura 13 Os novos surfels satildeo colocados exatamente na curva de interseccedilatildeo e

convergem para o ponto de interseccedilatildeo 42 Figura 14 (a) Suponhamos a reta que eacute a interseccedilatildeo do plano tangente a S1 em

q1 e o plano tangente a S2 em q2 O ponto r eacute o ponto desta reta que estaacute

12

mais proacuteximo a q1 e q2 (b) r eacute projetado sobre S1 e S2 obtendo-se q1acute e q2acute

dois novos pontos de partida para nova iteraccedilatildeo (c) A nova iteraccedilatildeo gera r

que eacute uma aproximaccedilatildeo melhor de q 43 Figura 15 Para verificar se o ponto x estaacute fora de um contorno C encontra-se o

ponto y de C Se o produto interno entre a normal em y e o vetor que liga y a

x for maior que zero entatildeo x estaacute fora de C senatildeo estaacute dentro de C 44 Figura 16 As curvas vermelhas satildeo o Eixo Medial da curva em preto 45 Figura 17 Em 3D geralmente o Eixo Medial eacute uma superfiacutecie 2D (em vermelho)

Aqui o quadrado eacute o Eixo Medial da superfiacutecie transparente que o contorna

45 Figura 18 A figura mostra o diagrama de Voronoi de uma amostragem de pontos

S Da mesma forma que a amostragem aproxima a curva os veacutertices de

Voronoi aproximam o Eixo Medial 46 Figura 19 Quadtree classificada Os noacutes mais escuros estatildeo fora do modelo os

mais claros dentro e os em tom intermediaacuterio satildeo noacutes de contorno 48 Figura 20 O noacute cheio eacute dividido em trecircs partes agrave esquerda a regiatildeo estaacute dentro

do modelo agrave direita estaacute fora e entre as duas linhas que dividem o noacute estaacute a

regiatildeo que conteacutem os surfels 49 Figura 21 O noacute a eacute classificado pelo noacute c o noacute d tambeacutem eacute classificado pelo noacute c

a classificaccedilatildeo do noacute a eacute propagada para o noacute b 50 Figura 22 Os cantos a e b do noacute cheio possuem a mesma classificaccedilatildeo fora do

modelo Esta classificaccedilatildeo foi dada ao noacute vazio adjacente 50 Figura 23 Quadtree classificada 51 Figura 24 A normal n eacute a normal meacutedia e os surfels s1 e s2 juntamente com a

normal n definem as retas que dividem o noacute 52 Figura 25 Duas circunferecircncias e suas quadtrees correspondentes 53 Figura 26 a modelos natildeo se intersectam b modelo intersecta noacutes fora c

modelo intersecta apenas noacutes dentro d modelo intersecta noacutes dentro e noacutes

fora 54 Figura 27 Software PointShop 3D com dois modelos carregados na sua cena 56 Figura 28 Menu do PointShop com o plugin e as opccedilotildees para operaccedilotildees

booleanas 57 Figura 29 Modelo do PointShop Igea 62 Figura 30 Resultado da uniatildeo de duas Igeas 63 Figura 31 Resultado da interseccedilatildeo de duas Igeas 63 Figura 32 Resultado da diferenccedila entre duas Igeas 64

13

Figura 33 Modelo do PointShop MaxPlanck 65 Figura 34 Modelo do PointShop Male 66 Figura 35 Resultado da Uniatildeo do modelo Male com MaxPlanck 66 Figura 36 Resultado da interseccedilatildeo do modelo Male com o MaxPlanck 67 Figura 37 Resultado da diferenccedila do modelo Male do modelo MaxPlanck 67

14

Lista de tabelas

Tabela 1 Classificaccedilatildeo para operaccedilotildees booleanas 42

Tabela 2- Nuacutemero de surfels dos modelos resultantes 64 Tabela 3- Meacutedia dos tempos de processamento para as operaccedilotildees com duas

Igeas 65

Tabela 4-Tempo de processamento das operaccedilotildees com os modelos MaxPlanck

e Male 68 Tabela 5- Nuacutemero de surfels dos modelos resultados das operaccedilotildees com os

modelos MaxPlanck e Male 68

15

1 Introduccedilatildeo

O mundo digital estaacute conquistando cada vez mais espaccedilo nos meios de

comunicaccedilatildeo Sons imagens viacutedeos digitais satildeo miacutedias muito usadas em

diversas aacutereas como entretenimento medicina desenho industrial engenharia

arquitetura educaccedilatildeo arte ciecircncia entre outras Podemos citar alguns

exemplos dentro destas aacutereas como jogos efeitos especiais filmes digitais

visualizaccedilatildeo cientiacutefica viacutedeo-conferecircncia comeacutercio na internet Nos uacuteltimos anos

verificamos que o modelo 3D vem se tornando um novo meio de comunicaccedilatildeo

digital Com o desenvolvimento da tecnologia de aquisiccedilatildeo e do processamento

de modelos 3D ele vem sendo cada vez mais utilizado Jogos 3D animaccedilotildees

aplicaccedilotildees em realidade virtual visualizaccedilatildeo cientiacutefica aplicaccedilotildees para aacuterea

meacutedica e odontoloacutegica criaccedilatildeo de reacuteplicas para estudo e preservaccedilatildeo do

patrimocircnio histoacuterico sistemas CADCAM cataacutelogos de modelos 3D na Web para

comercializaccedilatildeo criaccedilatildeo de protoacutetipos para arquitetura engenharia satildeo alguns

exemplos de aplicaccedilotildees que usam modelos 3D

A aacuterea que estuda a representaccedilatildeo de um modelo 3D no computador eacute

chamada de modelagem em computaccedilatildeo graacutefica Existem diversos tipos de

modelagem para as diversas aplicaccedilotildees que usam um modelo 3D como por

exemplo representaccedilotildees poligonais como malhas triangulares que satildeo

geralmente usadas na aacuterea de entretenimento Este trabalho explora um novo

tipo de modelagem a modelagem por pontos

A modelagem por pontos comeccedilou a ser largamente explorada nesta

deacutecada e trata-se de uma aacuterea muito promissora em computaccedilatildeo graacutefica dadas

agraves vaacuterias e grandes vantagens em relaccedilatildeo aos outros tipos de representaccedilatildeo

como esquema de representaccedilatildeo CSG (Constructive Solid Geometry) [1] ou

malhas poligonais Dentre as principais vantagens podemos citar grande

simplicidade e flexibilidade boa performance robustez Mas a principal

vantagem desta modelagem que foi o fator que impulsionou o seu grande

desenvolvimento nesta deacutecada eacute que esta modelagem por pontos eacute a melhor

opccedilatildeo para tratar os dados de saiacuteda de equipamentos de aquisiccedilatildeo de modelos

3D O uso destes equipamentos tem aumentado muito nesta deacutecada A

16

tecnologia destes equipamentos tem progredido muito e eles tecircm se tornado

mais baratos A tendecircncia eacute que o uso destes equipamentos se torne o mais

utilizado meio de obtenccedilatildeo de modelos 3D Isto porque construir modelos 3D

bastante detalhados por meio de um software de modelagem eacute muito trabalhoso

O processo de aquisiccedilatildeo de modelos por meio destes equipamentos automatiza

este processo de construccedilatildeo

No trabalho com modelos 3D frequumlentemente satildeo usadas as operaccedilotildees

booleanas que satildeo operaccedilotildees de uniatildeo interseccedilatildeo ou diferenccedila No esquema

de representaccedilatildeo CSG estas operaccedilotildees fazem parte da representaccedilatildeo do

objeto Estas operaccedilotildees tambeacutem podem ser usadas para criar novos modelos ou

para alteraacute-los Na maioria dos tipos de representaccedilatildeo de objetos 3D estas

operaccedilotildees satildeo bastante complexas

A simplicidade da representaccedilatildeo por pontos permite que as operaccedilotildees

booleanas sejam realizadas com facilidade se compararmos com a realizaccedilatildeo

destas operaccedilotildees em outros tipos de representaccedilatildeo como malhas poligonais

Motivada pelas vantagens desta modelagem e pela utilidade destas operaccedilotildees

esta dissertaccedilatildeo apresenta uma introduccedilatildeo geral de modelagem por pontos e

trabalha mais especificamente com operaccedilotildees booleanas em objetos

modelados por pontos Dois trabalhos que exploram as operaccedilotildees booleanas na

modelagem por pontos seratildeo abordados o trabalho de Adams e Dutreacute [2] e o

trabalho de Pauly et al [3] O presente trabalho implementa o meacutetodo de Adams

e Dutreacute com algumas melhorias e faz uma comparaccedilatildeo entre o meacutetodo de Pauly

[3] e o meacutetodo de Adams e Dutreacute [2] com nossas melhorias

Como contribuiccedilotildees dadas por este trabalho apresentamos

- um estudo sobre modelagem por pontos

- um estudo sobre operaccedilotildees booleanas com pontos

- proposta de melhorias ao algoritmo proposto por Adams e Dutreacute [2]

- comparaccedilatildeo dos dois meacutetodos propostos para realizar estas operaccedilotildees

meacutetodo de Pauly et al [3] e de Adams e Dutreacute [2]

Este trabalho vem apresentado nesta dissertaccedilatildeo organizada em sete

capiacutetulos conforme descrito resumidamente a seguir

O capiacutetulo 2 cita alguns trabalhos sobre modelagem por pontos que estatildeo

relacionados a este trabalho

O capiacutetulo 3 apresenta uma visatildeo geral do modelo por pontos e explica

melhor alguns trabalhos citados no capiacutetulo 2

17

O capiacutetulo 4 apresenta operaccedilotildees booleanas com pontos e os dois

meacutetodos para realizaacute-las na modelagem por pontos meacutetodo de Pauly et al [3] e

de Adams e Dutreacute [2]

O capiacutetulo 5 apresenta algumas melhorias ao algoritmo de Adams e Dutreacute

[2] e a nossa implementaccedilatildeo deste algoritmo

O capiacutetulo 6 traz os resultados obtidos

E finalmente o capiacutetulo 7 encerra o trabalho com uma conclusatildeo e com

possiacuteveis trabalhos futuros

Trabalhos relacionados 18

2 Trabalhos relacionados

O primeiro pesquisador a propor o uso de pontos como primitiva graacutefica foi

Levoy em [4] Ele propotildee o uso de pontos como primitiva de renderizaccedilatildeo e

discute a conversatildeo dos outros modelos para o modelo por pontos

Nos uacuteltimos anos vaacuterios trabalhos importantes tecircm sido realizados na aacuterea

em diversos segmentos em visualizaccedilatildeo podemos destacar os trabalhos de

Pfister [5] e de Zwicker [6] que usam pontos como primitiva de renderizaccedilatildeo e

com resultados praacuteticos interativos muito bons

Em [7] Pauly et al propotildeem algoritmos para modelagem multi-resoluccedilatildeo

em modelos por pontos

Os trabalhos de Curless [8] e Rusinkiewicz [9] discutem os meacutetodos de

aquisiccedilatildeo que consistem em obter uma amostragem de pontos da superfiacutecie do

objeto real por meio de equipamentos como por exemplo o scanner 3D

Nas operaccedilotildees booleanas a interseccedilatildeo das superfiacutecies dos modelos

iniciais seraacute parte do modelo resultado e para ser representada corretamente

precisa ser reconstruiacuteda A reconstruccedilatildeo da superfiacutecie tambeacutem eacute usada na

visualizaccedilatildeo de um modelo Um trabalho significativo na aacuterea de reconstruccedilatildeo de

superfiacutecies estaacute em [10] de N Amenta etal Este trabalho apresenta uma

soluccedilatildeo praacutetica com garantias teoacutericas para este problema e uma heuriacutestica para

o tratamento de arestas vivas a questatildeo mais difiacutecil desta aacuterea Um exemplo

de uma aresta viva eacute o encontro de dois planos natildeo coincidentes

Frequumlentemente a interseccedilatildeo citada acima (interseccedilatildeo entre os modelos iniciais)

gera uma aresta viva (seccedilatildeo 4223)

O algoritmo aqui implementado eacute um plugin para o software PointShop 3D

[11] de Zwicker et al software de ediccedilatildeo de modelos com pontos O PointShop

tem seu coacutedigo aberto documentaccedilatildeo e trabalha com plugins Ele permite a

visualizaccedilatildeo e ediccedilatildeo interativa do modelo por pontos Eacute o uacutenico software livre

disponiacutevel com estas caracteriacutesticas Esta implementaccedilatildeo na forma de um plugin

facilitou muito o trabalho pois natildeo foi necessaacuterio implementar a visualizaccedilatildeo do

modelo 3D Aleacutem disso o Pointshop conteacutem tambeacutem um plugin com a

implementaccedilatildeo do meacutetodo de Pauly et al [3] discutido nesta dissertaccedilatildeo A

Trabalhos relacionados 19

execuccedilatildeo dos dois plugins que realizam operaccedilotildees booleanas pocircde ser

comparada

Os trabalhos aqui discutidos satildeo o de Bart Adams e Philip Dutreacute [2] e de

Pauly et al[3] que apresentam meacutetodos diferentes para realizaccedilatildeo de

operaccedilotildees booleanas com pontos Adams e Dutreacute utilizam octrees [1] e Pauly

Kd-Tree [16] e MLS (Moving Least Squares) [18] Estes algoritmos satildeo

discutidos no capiacutetulo 4

O trabalho de Sara F Frisken [12] apresenta um algoritmo para realizar

operaccedilotildees em octree de forma mais eficiente Como estas operaccedilotildees estatildeo

presentes em todo o nosso algoritmo este trabalho certamente oferece uma

forma de otimizaccedilatildeo mas que natildeo foi implementada

Modelagem por Pontos 20

3 Modelagem por Pontos

A computaccedilatildeo graacutefica natildeo lida diretamente com o objeto ou com o

fenocircmeno fiacutesico lida com modelos graacuteficos ou geomeacutetricos Modelos graacuteficos

satildeo estruturas computacionais (abstratas) que capturam aspectos de objetos de

interesse para uma aplicaccedilatildeo como forma cor textura etc Se apenas a forma

ou a geometria do objeto eacute relevante temos modelos geomeacutetricos

Estes modelos satildeo usados em vaacuterias aplicaccedilotildees em computaccedilatildeo graacutefica

como roboacutetica visatildeo computacional simulaccedilotildees realistas anaacutelises estruturais

prototipagem projeto e manufatura de produtos eletromecacircnicos arquitetura

Existem vaacuterios tipos de modelos graacuteficos Esta dissertaccedilatildeo trata de um tipo

muito em voga atualmente que eacute o modelo por pontos

Neste capiacutetulo daremos uma visatildeo geral do modelo por pontos

Introduziremos este modelo e seu processo de criaccedilatildeo Seraacute apresentado o que

eacute um modelo por pontos e o conceito de surfel [5] introduziremos os tipos de

distribuiccedilatildeo dos surfels uma estruturaccedilatildeo aplicada a estes surfels e dados que

eles podem conter As quatro proacuteximas subseccedilotildees (Ideacuteia da representaccedilatildeo

Tipos de distribuiccedilatildeo dos surfels Estrutura de multi-resoluccedilatildeo e Dados que um

surfel pode conter) tratam destes toacutepicos Um modelo por pontos pode ser criado

a partir da conversatildeo de outros tipos de modelagem NURBS por exemplo para

o modelo por pontos ou a partir de um processo de aquisiccedilatildeo Esta uacuteltima forma

de criaccedilatildeo pode ser dividida em duas etapas aquisiccedilatildeo do modelo reconstruccedilatildeo

da superfiacutecie As subseccedilotildees 35 e 36 tratam destas duas etapas

respectivamente A ediccedilatildeo do modelo 3D eacute tratada brevemente na subseccedilatildeo 38

e a sua visualizaccedilatildeo na subseccedilatildeo 37 A apresentaccedilatildeo do processo de aquisiccedilatildeo

(seccedilatildeo 35) eacute baseada no tutorial de W T Correcirca [13] A etapa de ediccedilatildeo 3D

consiste em operaccedilotildees para mudanccedila da cor textura ou forma do modelo Para

esta etapa enfocaremos as operaccedilotildees booleanas que modificam a forma do

modelo ou criam novos modelos

31 Ideacuteia da Representaccedilatildeo

Modelagem por Pontos 21

Figura 1 [20] -Um modelo por pontos e sua visualizaccedilatildeo

Um modelo por pontos representa um objeto atraveacutes de seu contorno Eacute

um tipo de representaccedilatildeo B-Rep (Boundary Representation) [1] Este contorno

consiste em uma superfiacutecie 2D posicionada no espaccedilo 3D Na modelagem por

pontos ela eacute representada por um conjunto de pontos 3D que satildeo uma

amostragem dos (infinitos) pontos que formam a superfiacutecie contiacutenua (Figura 1) A

amostragem pode ser obtida de diversas maneiras Uma delas o processo de

aquisiccedilatildeo progrediu muito nos uacuteltimos anos e este foi um dos fatores que tornou

muito importante o desenvolvimento deste modelo por pontos Outra forma de

gerar amostragem eacute fazer uma conversatildeo de um outro modelo NURBS por

exemplo para o modelo por pontos

Estes pontos satildeo denominados surfels e podem conter aleacutem da posiccedilatildeo

3D outras informaccedilotildees como normal agrave superfiacutecie cor textura raio de alcance A

Figura 2 mostra um conjunto de surfels representando uma superfiacutecie No surfel

em destaque podemos ver o raio de alcance rt e a normal n agrave superfiacutecie

Modelagem por Pontos 22

Figura 2 [5] A superfiacutecie modelada por surfels O surfel em destaque tem raio de alcance

rt e normal n

Como o modelo natildeo armazena qualquer informaccedilatildeo sobre a conexatildeo entre

os surfels a reconstruccedilatildeo da superfiacutecie contiacutenua a partir dele pode exigir

algumas restriccedilotildees na amostragem (seccedilatildeo 36)

32 Tipos de distribuiccedilatildeo dos surfels

Existem dois tipos de distribuiccedilatildeo dos surfels na modelagem por pontos

uniforme e natildeo uniforme Na distribuiccedilatildeo uniforme cada um deles descreve

partes de mesmo tamanho da superfiacutecie Na natildeo uniforme cada surfel armazena

a informaccedilatildeo de seu raio de alcance que eacute o raio do disco que este surfel

representa

A distribuiccedilatildeo uniforme tem a vantagem de ser mais simples e natildeo ser

necessaacuterio armazenar o raio de alcance do disco mas ela apresenta a seguinte

desvantagem se o modelo possui regiotildees com muito detalhe e regiotildees com

pouco detalhe ele teraacute que manter uma alta densidade mesmo nas regiotildees de

poucos detalhes

33 Estrutura de multi-resoluccedilatildeo

Um objeto pode ser representado em vaacuterios niacuteveis de detalhes Por

exemplo podemos representar um mesmo objeto com vaacuterias resoluccedilotildees

diferentes Este conceito pode ser aplicado ao modelo por pontos Desta forma

um modelo eacute representado por uma estrutura hieraacuterquica (uma aacutervore por

exemplo) onde em cada niacutevel temos uma representaccedilatildeo do objeto em uma

Modelagem por Pontos 23

determinada resoluccedilatildeo Em [7] Pauly et al propotildeem algoritmos para modelagem

multi-resoluccedilatildeo em modelos por pontos

34 Dados que um surfel pode conter

Cada surfel armazena sua localizaccedilatildeo e pode tambeacutem conter informaccedilotildees

como a cor ou coordenadas de textura Se a amostragem natildeo for uniforme o

surfel conteacutem a informaccedilatildeo do raio de alcance que eacute o raio de um disco cujo

centro eacute a posiccedilatildeo do surfel O surfel pode tambeacutem conter o vetor normal agrave

superfiacutecie e assim o surfel pode ser visto como um disco orientado A superfiacutecie

tambeacutem pode ser vista como uma superfiacutecie orientada

35 Aquisiccedilatildeo do modelo

Esta introduccedilatildeo sobre aquisiccedilatildeo do modelo aqui apresentada baseia-se no

tutorial de W T Correcirca [13]

O processo de aquisiccedilatildeo consiste em obter uma amostragem de pontos da

superfiacutecie do objeto real por meio de equipamentos como por exemplo o

scanner 3D Eacute uma aacuterea que tem progredido muito nos uacuteltimos anos A

resoluccedilatildeo e a precisatildeo dos equipamentos de aquisiccedilatildeo tecircm melhorado bastante

e o custo deles reduzido de forma significativa Isso possibilita que a aquisiccedilatildeo

de modelos 3D seja usada em aplicaccedilotildees de desenho industrial arte ou em

produtos para a aacuterea de entretenimento O consequumlente maior uso destes

equipamentos criou a necessidade de avanccedilos no tratamento dos seus dados de

saiacuteda que satildeo um conjunto de pontos

Este processo pode ser dividido em trecircs partes [13] aquisiccedilatildeo da

geometria aquisiccedilatildeo da textura e correccedilatildeo de falhas da aquisiccedilatildeo

351 Aquisiccedilatildeo da geometria

Existem vaacuterios meacutetodos de aquisiccedilatildeo da geometria Curless [8] e

Rusinkiewicz [9] classificaram estes meacutetodos em trecircs categorias meacutetodos por

contato transmissatildeo e reflexatildeo

O meacutetodo por contato toca a superfiacutecie do objeto com uma sonda e grava

a posiccedilatildeo Este meacutetodo do qual o Coordinate Measuring Machines (CMMs) eacute

Modelagem por Pontos 24

um exemplo eacute bastante preciso mas eacute muito lento e natildeo adequado a objetos

fraacutegeis

Meacutetodos por transmissatildeo projetam ondas de energia sobre o objeto e

gravam a energia transmitida Por exemplo tomografia computadorizada que

projeta ondas de raio-x sobre o objeto e mede a quantidade de radiaccedilatildeo que

passa atraveacutes dele O resultado eacute um modelo geomeacutetrico de alta resoluccedilatildeo Este

meacutetodo pode captar detalhes do objeto que natildeo satildeo visiacuteveis de fora do objeto

Por outro lado ele eacute caro e arriscado

Meacutetodos por reflexatildeo podem ser oacuteticos ou natildeo-oacuteticos Natildeo-oacuteticos incluem

radares que medem a distacircncia a um objeto enviando microondas ou ondas

sonoras para o objeto e gravando o tempo que a onda gasta para retornar Estes

meacutetodos natildeo satildeo muito precisos nem raacutepidos

Meacutetodos por reflexatildeo oacuteticos podem ser passivos ou ativos Meacutetodos oacuteticos

passivos natildeo interagem com o objeto e incluem teacutecnicas de visatildeo computacional

como shape-from-shading stereo triangulation optical flow e meacutetodos de

decomposiccedilatildeo para video streams Estes meacutetodos raramente constroem

modelos precisos e sua maior aplicaccedilatildeo eacute em reconhecimento de objetos

Meacutetodos oacuteticos ativos projetam luz sobre um objeto de maneira estruturada

e atraveacutes da reflexatildeo da luz determinam a forma do objeto Exemplos satildeo depth

from defocus photometric stereo projected-light triangulation time of flight

Meacutetodos por reflexatildeo oacuteticos ativos tecircm muitas vantagens sobre os passivos tecircm

um melhor desempenho quando natildeo existe textura satildeo mais baratos e mais

robustos e produzem uma amostragem precisa

352 Aquisiccedilatildeo da textura

Idealmente noacutes gostariacuteamos de ter uma completa descriccedilatildeo de como um

ponto da superfiacutecie reflete a luz dependendo do vetor normal a esta superfiacutecie

da direccedilatildeo do raio de luz incidente e do comprimento de onda Tal descriccedilatildeo eacute

conhecida como Bidirectional Reflectance Distribution Function (BRDF) Medir

BRDFs com precisatildeo eacute um problema difiacutecil

Pode-se ter uma aproximaccedilatildeo da aquisiccedilatildeo de cores do objeto tirando

fotos dele O objeto eacute fotografado e a cor de cada ponto da superfiacutecie eacute obtida a

partir de um mapeamento das fotos 2D para o modelo 3D Para mapear a

fotografia agrave geometria precisamos conhecer os paracircmetros de projeccedilatildeo da

cacircmera e a sua posiccedilatildeo no momento em que a foto foi batida Para cada ponto

Modelagem por Pontos 25

3D do modelo encontramos sua projeccedilatildeo 2D no plano da cacircmera e associamos

a cor do pixel nesta projeccedilatildeo agrave cor do ponto 3D

353 Correccedilatildeo das falhas da aquisiccedilatildeo

O processo de aquisiccedilatildeo deixa frequumlentemente buracos no modelo devido

a ruiacutedos no processo ou agrave impossibilidade de aquisiccedilatildeo de determinadas partes

de uma superfiacutecie Estes buracos devem ser corrigidos Pode-se usar por

exemplo um filtro de passa-baixa para remoccedilatildeo de ruiacutedos [14] Meacutetodos de

difusatildeo geomeacutetrica tecircm sido aplicados para preenchimento dos buracos [15] A

correccedilatildeo das falhas eacute tida como um preacute-processamento para o processo de

reconstruccedilatildeo da superfiacutecie contiacutenua (seccedilatildeo 36)

36 Reconstruccedilatildeo da superfiacutecie (contiacutenua) a partir do modelo (discreto)

A reconstruccedilatildeo da superfiacutecie contiacutenua consiste em a partir de um conjunto

natildeo estruturado de pontos obter um modelo contiacutenuo desta superfiacutecie Esta

reconstruccedilatildeo eacute frequumlentemente exigida para um modelo por pontos Na sua

visualizaccedilatildeo podemos desejar focar qualquer parte do modelo Para fazermos

operaccedilotildees booleanas com os modelos podemos querer determinar exatamente

onde eles se intersectam

No entanto natildeo precisamos ter necessariamente a representaccedilatildeo contiacutenua

de todo o objeto ao mesmo tempo A reconstruccedilatildeo desta superfiacutecie a partir dos

pontos amostrados pode ser feita no momento que for mais adequado agrave

aplicaccedilatildeo Na visualizaccedilatildeo a reconstruccedilatildeo pode ser feita na projeccedilatildeo 2D da

parte do modelo em foco (seccedilatildeo 37) Para operaccedilotildees booleanas pode-se

reconstruir apenas a aacuterea da interseccedilatildeo dos modelos

Este processo de reconstruccedilatildeo de superfiacutecie tem sido muito estudado em

modelagem geomeacutetrica e geometria computacional nos uacuteltimos anos O trabalho

mais importante desta aacuterea eacute o trabalho de Amenta et al [10] que foi a primeira

soluccedilatildeo com garantias demonstraacuteveis para este problema de reconstruccedilatildeo de

superfiacutecie A seccedilatildeo 44 explica estes conceitos e o trabalho [10] Este trabalho

demonstra que teoricamente para que a reconstruccedilatildeo da superfiacutecie (contiacutenua) a

partir das amostras seja correta a amostragem deve ser adequada Ele usa o

conceito de ldquoEixo Medialrdquo para definir o que eacute uma amostragem adequada

Modelagem por Pontos 26

(seccedilatildeo 44) Em duas dimensotildees os veacutertices de Voronoi de uma amostragem

densa aproximam o ldquoEixo Medialrdquo da amostragem

Por meio deste conceito de Eixo Medial [1016] obtecircm-se paracircmetros

teoacutericos para a definiccedilatildeo de amostragem adequada e baseado neste conceito

o algoritmo apresentado em [10] traz uma soluccedilatildeo praacutetica para o problema

obtendo uma malha poligonal a partir do modelo por pontos

O PointShop 3D [11] software de ediccedilatildeo de modelos por pontos utilizado

nesta pesquisa faz quando necessaacuterio a reconstruccedilatildeo da superfiacutecie Para isso

o PointShop 3D explora a vizinhanccedila local (surfels vizinhos de acordo com suas

posiccedilotildees) Ele usa o conceito de Eixo Medial para justificar seu meacutetodo de

reconstruccedilatildeo da superfiacutecie que na praacutetica apresenta resultados bastante

satisfatoacuterios apesar de teoricamente natildeo ter garantias [16]

37 Visualizaccedilatildeo do modelo

A primeira abordagem para visualizaccedilatildeo de um modelo por pontos foi

construir uma malha de poliacutegonos a partir dos surfels e renderizaacute-la Mas a

construccedilatildeo de malhas a partir dos surfels eacute um processo muito caro e lento

principalmente para modelos complexos Na tentativa de obter uma visualizaccedilatildeo

interativa do modelo por pontos estatildeo sendo estudadas teacutecnicas que utilizam

surfels como primitiva de visualizaccedilatildeo A ideacuteia foi apresentada inicialmente por

Levoy [4]

Figura 3 [21] -Modelo por pontos e sua renderizaccedilatildeo usando Surface Splatting

Modelagem por Pontos 27

O objetivo da renderizaccedilatildeo a partir dos surfels eacute projetaacute-los na tela e

reconstruir as superfiacutecies de forma contiacutenua sem buracos Para que esta

renderizaccedilatildeo seja amplamente utilizada deve-se ter cuidado com o uso de

memoacuteria e com a qualidade da imagem gerada Teacutecnicas recentes como Surface

Splatting [6] faz a renderizaccedilatildeo interativamente com qualidade (Figura 3)

comparada a outros meacutetodos de renderizaccedilatildeo como Image Based Rendering

Em geral a visualizaccedilatildeo do modelo por pontos pode ser dividida nas seguintes

etapas

- warping - projeccedilatildeo em perspectiva de cada ponto do modelo na tela

processo anaacutelogo agrave projeccedilatildeo de veacutertices dos triacircngulos na malha triangular Se

um pixel da tela estiver contido em mais de uma projeccedilatildeo de surfels (vizinhos)

ou seja mais de um ponto cobre este pixel os atributos destes pontos seratildeo

combinados

- shading por ponto - o processo de shading eacute realizado para cada ponto

visiacutevel (os pontos que natildeo satildeo vistos do ponto de vista em questatildeo devem ser

retirados) Qualquer modelo local de shading pode ser aplicado Uma nova

teacutecnica foi proposta em Surface Splatting [6]

- reconstruccedilatildeo da imagem ndash pixels que natildeo ldquoreceberamrdquo projeccedilatildeo de

nenhum ponto formam buracos na imagem Esta imagem deve ser reconstruiacuteda

sem buracos sem aliasing e as superfiacutecies devem ser reconstruiacutedas de forma

contiacutenua e devem ser ldquosuavizadasrdquo (smooth surface)

Os algoritmos de renderizaccedilatildeo por pontos podem tratar a questatildeo de

buracos na visualizaccedilatildeo de trecircs formas [17]

Detecccedilatildeo e preenchimento de buracos no espaccedilo da tela pontos satildeo

projetados na tela e pixels que natildeo receberam pontos satildeo detectados (buracos)

Para preencher estes buracos que natildeo receberam pontos eacute feita uma

interpolaccedilatildeo entre os vizinhos

Geraccedilatildeo de mais pontos a superfiacutecie eacute interpolada no espaccedilo do modelo

para garantir que todos os pixels recebam pelo menos a projeccedilatildeo de um ponto

Splatting um surfel eacute projetado na tela e sua contribuiccedilatildeo eacute espalhada de

forma diferenciada para os pixels vizinhos Agrave medida em que o vizinho se torna

mais distante a contribuiccedilatildeo do surfel diminui

Raumlsaumlnen faz uma analogia do processo de renderizaccedilatildeo proposto em [6]

com o mapeamento de textura [15] No mapeamento de textura para um

determinado pixel da tela satildeo encontrados os pontos da textura que afetam este

Modelagem por Pontos 28

pixel Num sentido inverso em splatting para um determinado surfel (que

representa a textura) satildeo encontrados os pixels da tela que este surfel afeta

38 Ediccedilatildeo do modelo

Ediccedilatildeo de um modelo 3D consiste em operaccedilotildees que modificam

caracteriacutesticas deste modelo como cor textura forma ou criam novos modelos

O software PointShop 3D [11] software de ediccedilatildeo de modelos por pontos 3D

implementa vaacuterias destas operaccedilotildees (ver seccedilatildeo 52)

Para modificar a forma de um modelo ou criar um novo satildeo muito usadas

as operaccedilotildees booleanas que eacute o nosso enfoque nesta dissertaccedilatildeo Na

modelagem CSG (Constructive Solid Geometry) as operaccedilotildees booleanas satildeo

usadas juntamente com primitivas soacutelidas para definir um modelo No entanto

em alguns tipos de modelos estas operaccedilotildees satildeo difiacuteceis como por exemplo

em malhas poligonais Com pontos elas podem ser feitas interativamente [32]

Operaccedilotildees Booleanas com Pontos 29

4 Operaccedilotildees Booleanas com Pontos

Operaccedilotildees booleanas satildeo as operaccedilotildees de uniatildeo interseccedilatildeo e diferenccedila

definidas na teoria matemaacutetica de conjuntos Estas operaccedilotildees satildeo aplicadas em

modelos soacutelidos para alteraacute-los ou para criar novos modelos A Figura 4 abaixo

mostra a criaccedilatildeo de trecircs novos modelos a partir de quatro modelos iniciais

Figura 4 [22] Trecircs modelos novos foram criados a partir dos quatro iniciais (esfera

cilindro dois cubos) O primeiro eacute a esfera menos um cubo em seguida retirou-se outro

cubo e por uacuteltimo retirou-se o cilindro

Estas operaccedilotildees satildeo aplicadas em objetos modelados por pontos em dois

trabalhos no trabalho de Bart Adams e Philip Dutreacute [2] e no trabalho de Pauly

et Al [3] Neste capiacutetulo a seccedilatildeo 41 apresenta a parte comum aos dois

trabalhos e as seccedilotildees 42 e 43 apresentam as particularidades de cada um A

seccedilatildeo 44 discute uma questatildeo natildeo explicitada em nenhum dos dois trabalhos

41 Meacutetodos para realizar operaccedilotildees booleanas em objetos modelados por pontos

A Figura 5 mostra o resultado do meacutetodo de Adams[2] operaccedilotildees de

uniatildeo diferenccedila e interseccedilatildeo de objetos soacutelidos 3D modelados por pontos

Operaccedilotildees Booleanas com Pontos 30

Figura 5 [2]-A partir de dois modelos por pontos uma heacutelice e uma cabeccedila as trecircs operaccedilotildees booleanas satildeo mostradas da esquerda para a direita uniatildeo diferenccedila e interseccedilatildeo

Sejam A e B objetos 3D soacutelidos modelados por pontos Definem-se os

seguintes elementos

Af ndash superfiacutecie (contorno) de A que estaacute fora de B

Ad ndash superfiacutecie (contorno) de A que estaacute dentro de B

Bf ndash superfiacutecie (contorno) de B que estaacute fora de A

Bd ndash superfiacutecie (contorno) de B que estaacute dentro de A

O resultado da operaccedilatildeo booleana entre A e B seraacute um modelo C cuja

superfiacutecie de contorno pode ser determinada pela seguinte regra [2] que aqui

chamamos de Regra 1

Regra 1 A U B Af + Bf

A cap B Ad + Bd

A ndash B Af + Bd (com a orientaccedilatildeo invertida)

B ndash A Ad (com a orientaccedilatildeo invertida) + Bf

A Figura 6 mostra as operaccedilotildees com dois modelos A e B

(a) (b)

Operaccedilotildees Booleanas com Pontos 31

(c) (d)

Figura 6 [22] (a) Dois modelos A e B (b) Posicionados de forma que A tem

uma parte dentro de B eacute mostrado o resultado A U B Af + Bf (c) Resultado de A ndash B Af

+ Bd (d) Resultado de A cap B Ad + Bd

Bart [2] e Pauly [3] apresentam dois meacutetodos para determinar os

elementos acima Estes dois meacutetodos satildeo construiacutedos a partir dos seguintes

conceitos os elementos Af Ad Bf Bd satildeo uma parte da superfiacutecie modelada por

pontos e portanto satildeo conjuntos de surfels Para determinaacute-los eacute necessaacuteria

entatildeo a classificaccedilatildeo de um surfel (que pode se resumir agrave classificaccedilatildeo de um

ponto que eacute o seu centro) de uma superfiacutecie como dentro ou fora de um outro

modelo Os dois meacutetodos utilizam a seguinte regra para esta classificaccedilatildeo aqui

denominada Regra 2

Regra 2 Dado um ponto x qualquer um volume V determinado por uma superfiacutecie

de contorno S uma amostragem P da superfiacutecie S um ponto p є P que eacute a

amostra mais proacutexima a x um vetor np normal agrave S em p e orientado para fora de

S temos que

(x ndash p) np gt 0 x notinV

Ou seja para classificar um ponto em relaccedilatildeo a um modelo verificamos o

produto interno entre a normal em p (surfel mais proacuteximo a x) e o vetor (x - p)

se este produto interno for maior que zero x natildeo pertence ao volume V e seraacute

classificado como fora senatildeo seraacute classificado como dentro De maneira

ainda mais informal se a normal em p apontar para a direccedilatildeo oposta a x x seraacute

classificado como dentro se apontar para x x seraacute classificado como fora

A Figura 7 mostra a Regra 2

Operaccedilotildees Booleanas com Pontos 32

Figura 7 Para classificar o ponto x encontra-se o surfel p (com normal np) mais proacuteximo

a x Se o produto interno entre np e (x ndash p) for maior que zero entatildeo x eacute classificado como

fora senatildeo seraacute classificado como dentro

A validade da Regra 2 eacute discutida na Seccedilatildeo 44 Uma das restriccedilotildees

teoacutericas para garantir-lhe a validade eacute que a superfiacutecie seja suave

Cada um dos dois meacutetodos daacute um tratamento diferente para o uso desta

regra Pauly usa a regra diretamente encontrando o surfel mais proacuteximo a um

ponto e classificando este ponto a partir deste surfel Ele utiliza tambeacutem a

representaccedilatildeo impliacutecita MLS (Moving Least Squares [18]) para casos em que a

Regra 2 poderia falhar e para tratamento de interseccedilotildees [3] Seu meacutetodo vale

para modelos soacutelidos ou natildeo soacutelidos O meacutetodo de Adams e Dutreacute [2] utiliza

octrees [1] criando uma classificaccedilatildeo dos noacutes da octree a partir desta Regra 2

Os pontos satildeo entatildeo classificados de acordo com o noacute da octree que o conteacutem

Este segundo meacutetodo aplica-se somente a modelos soacutelidos Os dois meacutetodos

seratildeo descritos em detalhes nas seccedilotildees abaixo

Como um surfel eacute considerado um disco podemos dizer que surfels de

dois modelos diferentes podem se intersectar A interseccedilatildeo destes dois surfels

corresponde agrave interseccedilatildeo destes dois discos Estes surfels geram problemas

para visualizaccedilatildeo se forem acrescentados ao resultado sem um tratamento

especiacutefico apresentaratildeo artefatos natildeo desejaacuteveis na renderizaccedilatildeo do modelo

resultado (Figura 8) se natildeo forem acrescentados ao resultado deixaratildeo buracos

no modelo

Operaccedilotildees Booleanas com Pontos 33

Figura 8 [2] -Interseccedilatildeo de duas esferas agrave esquerda sem nenhum tratamento de interseccedilatildeo agrave direita apoacutes o tratamento de interseccedilatildeo

Aleacutem disso nem sempre esta interseccedilatildeo forma uma superfiacutecie suave

Esta interseccedilatildeo pode formar uma aresta viva (seccedilatildeo 4223) gerando

problemas tambeacutem para o uso da Regra 2 que eacute vaacutelida apenas para superfiacutecies

suaves Eacute necessaacuterio entatildeo fazer um tratamento desta superfiacutecie de interseccedilatildeo

(formada por surfels originados de diferentes modelos) O tratamento de cada

um dos meacutetodos para este caso seraacute tambeacutem abaixo apresentado

42 Meacutetodo de Adams e Dutreacute

O meacutetodo aplica-se somente a modelos soacutelidos Para determinaccedilatildeo dos

elementos da aqui chamada Regra 1 (seccedilatildeo 41) este meacutetodo utiliza uma octree

[1] que subdivide o espaccedilo do modelo em trecircs fora dentro ou no contorno do

modelo Estes espaccedilos satildeo determinados pela classificaccedilatildeo dos noacutes da octree a

partir da Regra 2 Tambeacutem eacute usado o meacutetodo TINN - Triangle Inequality Nearest

Neighbour [19] - para otimizar a pesquisa dentro do noacute A seguir descrevemos o

modelo usado neste meacutetodo apresentando os dados associados aos pontos o

tipo de distribuiccedilatildeo e o algoritmo que realiza as operaccedilotildees

421 Modelo por Pontos em Adams e Dutreacute

Os surfels neste meacutetodo contecircm as seguintes informaccedilotildees posiccedilatildeo do

surfel xs orientaccedilatildeo do surfel ns e raio de alcance do surfel rs O surfel pode ser

pensado como um disco ortogonal a ns com centro xs e raio rs O raio eacute

escolhido de tal forma que a projeccedilatildeo dos discos no plano da imagem se

sobreponham

Operaccedilotildees Booleanas com Pontos 34

Os objetos representados satildeo soacutelidos A distribuiccedilatildeo dos surfels eacute

uniforme embora o algoritmo natildeo exija esta condiccedilatildeo Para cada soacutelido eacute

definido um rmax = Max rs o raio de alcance do maior surfel pertencente agrave

superfiacutecie do soacutelido Como o raio eacute escolhido de tal forma que a projeccedilatildeo dos

discos no plano da imagem se sobreponham o controle da amostragem eacute

entatildeo ligado agrave renderizaccedilatildeo

422 Algoritmo de Operaccedilotildees Booleanas

Utilizando objetos modelados da forma descrita acima o meacutetodo realiza

operaccedilotildees de uniatildeo interseccedilatildeo e diferenccedila com modelos soacutelidos Supondo dois

modelos soacutelidos S1 e S2 O algoritmo pode ser dividido nas seguintes etapas

Criaccedilatildeo de uma octree para cada modelo Teste Dentro-Fora Tratamento da

interseccedilatildeo Estas etapas satildeo apresentadas nas proacuteximas seccedilotildees

4221 Criaccedilatildeo de uma octree para cada modelo

Eacute criada uma octree [1] para cada modelo A criaccedilatildeo de uma octree eacute feita

da seguinte forma

Gera-se a ldquoCaixa envolventerdquo caixa alinhada com os eixos que conteacutem

todo o modelo A ldquoCaixa envolventerdquo corresponde ao noacute raiz da octree Este noacute

conteacutem inicialmente todos os surfels do modelo Em seguida o noacute raiz eacute

dividido em oito noacutes filhos Os surfels satildeo distribuiacutedos entre estes oito noacutes Cada

um deles caso contenha surfels eacute dividido novamente em 8 filhos e seus surfels

satildeo redistribuiacutedos entre eles Este processo eacute repetido recursivamente enquanto

o nuacutemero de surfels do noacute for maior que zero ou ateacute uma profundidade maacutexima

preacute-definida da octree ser alcanccedilada

Cada noacute da octree deve ser classificado O objetivo desta classificaccedilatildeo eacute

determinar que parte da octree estaacute dentro do modelo e que parte estaacute fora Os

noacutes da octree satildeo entatildeo classificados como ldquodentrordquo ldquoforardquo e ldquocontornordquo

Podemos ilustrar esta classificaccedilatildeo em 2D a Figura 9 mostra uma quadtree

classificada

Operaccedilotildees Booleanas com Pontos 35

Figura 9-Um objeto representado por pontos com suas normais e sua quadtree correspondente classificada os noacutes cinza claro estatildeo dentro do modelo noacutes cinza mais escuro estatildeo fora do modelo e noacutes com cinza intermediaacuterio satildeo noacutes cheios noacutes que conteacutem pontos

O noacutes que conteacutem surfels satildeo classificados como ldquocontornordquo Para

classificar um noacute vazio existem trecircs casos

o noacute vazio tem apenas um vizinho-irmatildeo natildeo vazio

o noacute vazio tem mais de um vizinho-irmatildeo natildeo vazio

o noacute vazio natildeo tem vizinhos-irmatildeos natildeo vazios

No primeiro caso o noacute vazio eacute classificado pelo seu vizinho natildeo vazio No

segundo caso considera-se qualquer um dos vizinhos natildeo vazios No terceiro

caso classifica-se primeiro os noacutes vizinhos e eacute dada a mesma classificaccedilatildeo para

o noacute vazio Como cada noacute natildeo folha de uma octree tem pelo menos um noacute filho

natildeo vazio sempre pode ser feita a classificaccedilatildeo dos noacutes vazios A classificaccedilatildeo

eacute feita da seguinte forma dentre os surfels do vizinho-irmatildeo escolhido encontra-

se o surfel mais proacuteximo ao noacute a ser classificado Se a normal deste surfel

aponta para o noacute vazio a ser classificado entatildeo ele eacute classificado como ldquoforardquo

Se a normal aponta no sentido contraacuterio entatildeo ele eacute classificado como ldquodentrordquo

De maneira mais formal sejam cv e cc coordenadas dos centros do noacute vazio e

do noacute contorno respectivamente Seja s o surfel mais proacuteximo ao noacute vazio e ns

a normal em s Se ( cv - cc )٠ ns gt 0 ( produto interno entre a normal em s e o

vetor cv - cc for maior que zero ) o noacute vazio seraacute classificado como ldquoforardquo

Senatildeo seraacute classificado como ldquodentrordquo

Em geral os noacutes ldquocontornordquo satildeo subdivididos em trecircs partes uma que estaacute

fora do modelo uma que estaacute dentro do modelo e uma terceira que conteacutem os

surfels Esta subdivisatildeo eacute feita por meio da criaccedilatildeo de dois planos paralelos que

Operaccedilotildees Booleanas com Pontos 36

dividem o noacute Para determinar estes planos calcula-se o vetor nm igual agrave

meacutedia das normais dos surfels do noacute nm = sum ns sum ns onde ns eacute a normal de

cada surfel do noacute

Em seguida encontra-se o surfel com maior produto interno entre a sua

normal e a normal meacutedia d1=Max(nm ٠ ns) Este surfel juntamente com a normal

meacutedia define um dos planos Encontra-se tambeacutem o surfel com menor produto

interno entre a sua normal e a normal meacutedia d2=Min(nm ٠ ns) Este surfel

juntamente com a normal meacutedia define o outro plano A Figura 10 mostra a

divisatildeo de um noacute de uma quadtree nas trecircs partes dentro do modelo fora do

modelo e no ldquocontornordquo

Esta subdivisatildeo aplica-se apenas a noacutes que conteacutem surfels cujas direccedilotildees

natildeo variem em mais de 90 graus Caso isso ocorra ele natildeo seraacute subdividido Ou

seja se um noacute possuir dois vetores normais (de dois surfels diferentes) que

formem um acircngulo maior que 90 graus ele natildeo seraacute subdividido

Figura 10 [2] -Divisatildeo de noacute de contorno a parte agrave esquerda estaacute fora do modelo a parte agrave direita estaacute dentro do modelo e a faixa intermediaacuteria conteacutem os surfels

4222 Teste Dentro-Fora

O Teste Dentro-Fora faz a classificaccedilatildeo dos surfels de um modelo como

ldquodentrordquo ou ldquoforardquo de outro modelo Portanto aplicaremos este mesmo teste duas

vezes uma para o modelo S1 em relaccedilatildeo ao modelo S2 e outra para S2 em

relaccedilatildeo a S1 Vamos mostrar o teste Dentro-Fora para o caso da classificaccedilatildeo

dos surfels do modelo S1 em relaccedilatildeo a S2

Operaccedilotildees Booleanas com Pontos 37

No item anterior foram criadas duas octrees uma para o modelo S1 e

outra para o modelo S2 Chamemos de A e B as octrees de S1 e S2

respectivamente Para classificar S1 em relaccedilatildeo a S2 inicialmente eacute feita uma

avaliaccedilatildeo da posiccedilatildeo de A em relaccedilatildeo a B A e B podem estar nas seguintes

situaccedilotildees

- A natildeo intersecta B

- A intersecta apenas noacutes ldquoforardquo de B

- A intersecta apenas noacutes ldquodentrordquo de B

- A intersecta noacutes ldquoforardquo e noacutes ldquodentrordquo de B

Para testar estas situaccedilotildees os noacutes satildeo aumentados de rmax o raio do

maior surfel do modelo soacutelido Isto eacute feito para compensar o fato de que o surfel

natildeo eacute apenas um ponto mas sim considerado como um disco

No primeiro e no segundo caso todos os surfels de A satildeo classificados

como ldquoforardquo No terceiro caso todos os surfels de A satildeo classificados como

ldquodentrordquo

No quarto caso temos que percorrer a octree A Comeccedilando pelo noacute raiz

percorre-se os filhos deste noacute Para cada filho os quatro testes acima satildeo feitos

Se o noacute filho encontra-se em um dos trecircs primeiros casos a classificaccedilatildeo eacute dada

como foi citada acima Se um filho estaacute no quarto caso e natildeo eacute um noacute folha

repete-se recursivamente o mesmo procedimento para seus filhos ateacute encontrar-

se um noacute folha Para um noacute que estaacute no quarto caso e eacute folha percorre-se a lista

de surfels que este noacute conteacutem classificando cada um destes surfels Seja sa um

surfel desta lista Para este caso percorre-se a octree B para classificar sa

Primeiramente encontramos o noacute de B que conteacutem sa Se este noacute de B foi

dividido testa-se de acordo com esta divisatildeo do noacute se o surfel sa estaacute na parte

do noacute que estaacute dentro do modelo ele eacute classificado como ldquodentrordquo se sa estaacute na

parte que estaacute fora do modelo ele eacute classificado como ldquoforardquo se sa estaacute na parte

intermediaacuteria ou se o noacute de B natildeo foi subdividido em planos encontra-se sb que

eacute o surfel pertencente a este noacute de B que estaacute mais proacuteximo de sa sa seraacute

entatildeo classificado de acordo com sb Se ( sa - sb )٠ nb gt 0 sa eacute classificado

como ldquoforardquo senatildeo eacute classificado como ldquodentrordquo Se os discos de sb e sa se

intersectam sa eacute marcado como interseccedilatildeo Para encontrar sb o algoritmo

implementa o meacutetodo TINN ndash Triangle Inequality Nearest Neighbour [19]

Operaccedilotildees Booleanas com Pontos 38

4223 Tratamento da interseccedilatildeo

Os surfels de A que intersectam surfels de B satildeo classificados como

ldquointerseccedilatildeordquo Se eles natildeo forem incluiacutedos no modelo resultado o soacutelido resultado

teraacute buracos Se eles forem incluiacutedos sem algum tratamento eles natildeo

representaratildeo adequadamente a regiatildeo Em geral o surfel sa (um surfel

ldquointerseccedilatildeordquo de A) eacute dividido em dois pelo plano que conteacutem o surfel sb (surfel de

B que sa intersecta) uma parte que estaacute fora de B e outra que estaacute dentro de B

Dependendo da operaccedilatildeo que estaacute sendo realizada vamos querer manter uma

destas partes do surfel sa no modelo resultado Seja xa a posiccedilatildeo do surfel sa e o

surfel sa uma circunferecircncia de centro xa e raio ra igual ao raio de alcance de sa

O plano que conteacutem o surfel sb define uma corda desta circunferecircncia como

mostra a Figura 11 O surfel sa seraacute substituiacutedo por um surfel menor que

ultrapassa esta corda de uma distacircncia e definida pelo usuaacuterio Para cobrir

completamente a interseccedilatildeo seratildeo adicionados surfels menores que cruzam a

corda de interseccedilatildeo

Figura 11 -Interseccedilatildeo do surfel s e do plano que passa pelo surfel t o surfel mais proacuteximo a s O surfel s eacute substituiacutedo por trecircs surfels menores

Operaccedilotildees Booleanas com Pontos 39

O tratamento de interseccedilatildeo proposto por Adams e Dutreacute [2] natildeo soacute evita

os buracos mas tambeacutem cria uma forma de renderizaccedilatildeo de arestas vivas A

colocaccedilatildeo de vaacuterios pequenos surfels na regiatildeo da interseccedilatildeo permite esta

correta renderizaccedilatildeo das ldquoarestas vivasrdquo Desta forma o problema das arestas

vivas eacute resolvido na modelagem (Figura 12) A vantagem de se resolver o caso

na modelagem eacute que natildeo eacute necessaacuterio fazer um tratamento especial na

renderizaccedilatildeo para que mostre esta aresta viva Diferente do tratamento feito

em Pauly (seccedilatildeo 431) que resolve esta questatildeo em tempo de renderizaccedilatildeo

Aleacutem disso o tratamento resolve alguns casos onde a Regra 2 poderia falhar

(veja em Validade da Regra 2-seccedilatildeo 44)

Figura 12 [2] -Agrave direita eacute mostrado o resultado do tratamento de interseccedilatildeo para o caso de Arestas Vivas do objeto agrave esquerda

43 Meacutetodo de Pauly

O meacutetodo aplica-se a objetos soacutelidos e natildeo soacutelidos Os modelos podem ser

obtidos a partir de diferentes entradas como nuvem de pontos irregulares ou por

meio de scanners 3D Cria um modelo hiacutebrido destes objetos usa o modelo por

pontos juntamente com a representaccedilatildeo impliacutecita Moving Least Squares - MLS

[18] Realiza operaccedilotildees booleanas com pontos e utiliza adicionalmente MLS

para alguns casos de classificaccedilatildeo de surfels e no tratamento de interseccedilatildeo A

seguir apresentamos as caracteriacutesticas do modelo por pontos deste meacutetodo e o

algoritmo que realiza as operaccedilotildees

Operaccedilotildees Booleanas com Pontos 40

431 Modelo em Pauly

O modelo eacute uma estrutura hiacutebrida de pontos com a representaccedilatildeo impliacutecita

Moving Least Squares - MLS [18] Esta estrutura eacute usada para fazer operaccedilotildees

booleanas e tambeacutem operaccedilotildees de free-form (natildeo abordadas nesta

dissertaccedilatildeo) Para operaccedilotildees booleanas a representaccedilatildeo MLS permite que a

curva de interseccedilatildeo entre os modelos seja reconstruiacuteda e surfels sejam

colocados nesta curva e em alguns casos de classificaccedilatildeo de surfels mostrados

na seccedilatildeo 432 Para este modelo natildeo existem restriccedilotildees quanto agrave forma do

objeto

Os surfels contecircm informaccedilotildees sobre sua posiccedilatildeo e sua normal Aleacutem

disso surfels podem conter informaccedilotildees adicionais como textura cor

propriedades de materiais

A distribuiccedilatildeo dos surfels eacute natildeo-uniforme e a amostragem eacute

aproximadamente adequada (Veja seccedilatildeo 44)

432 Algoritmo de Operaccedilotildees Booleanas

O algoritmo classifica surfels de um modelo como ldquodentrordquo ou ldquoforardquo de

outro modelo Antes de colocarmos como eacute feita esta classificaccedilatildeo devemos

acrescentar que Pauly estende esta classificaccedilatildeo para modelos que natildeo satildeo

soacutelidos Ou seja mesmo um modelo natildeo soacutelido divide o espaccedilo da cena (espaccedilo

em que se encontra o modelo) em dois sub-espaccedilos dentro ou fora do modelo

Pauly faz esta subdivisatildeo da seguinte forma

Como a superfiacutecie que determina o modelo eacute orientada (conteacutem vetores

normais agrave superfiacutecie que apontam para ldquoforardquo do modelo) Pauly considera que

um modelo natildeo soacutelido divide o espaccedilo em dois sub-espaccedilos um ldquoforardquo do

modelo (os vetores normais apontam para este sub-espaccedilo) e um que estaacute

ldquodentrordquo do modelo (os vetores normais apontam para direccedilatildeo oposta a este sub-

espaccedilo) Por exemplo um plano eacute representado como um conjunto de surfels

contidos num determinado espaccedilo geomeacutetrico plano π Cada surfel conteacutem um

vetor normal direcionado Este modelo divide entatildeo o espaccedilo em dois sub-

espaccedilos o sub-espaccedilo que eacute apontado por estes surfels (considerado ldquoforardquo do

modelo) e o sub-espaccedilo que estaacute na direccedilatildeo oposta (considerado ldquodentrordquo do

modelo) Desta forma ele aplica as classificaccedilotildees de ldquodentrordquo e ldquoforardquo de um

modelo tambeacutem a modelos natildeo soacutelidos A partir desta consideraccedilatildeo as

Operaccedilotildees Booleanas com Pontos 41

operaccedilotildees booleanas satildeo realizadas com os modelos natildeo soacutelidos da mesma

forma que com os modelos soacutelidos

Para determinar esta classificaccedilatildeo (dentro ou fora do modelo) Pauly utiliza

a Regra 2 Para pesquisa do surfel mais proacuteximo o meacutetodo usa a estrutura Kd-

tree [16] e tambeacutem o algoritmo ANN [16] No entanto o meacutetodo apresenta uma

restriccedilatildeo da Regra 2 ela soacute deve ser usada para classificaccedilotildees de pontos x se

a distacircncia x-p for maior que o espaccedilamento da amostragem local ηp em p

Este espaccedilamento da amostragem local ηp em p eacute um caacutelculo aproximado da

distacircncia meacutedia entre os surfels vizinhos a p Se x estaacute muito proacuteximo agrave

superfiacutecie a classificaccedilatildeo pode falhar Neste caso ele calcula o ponto exato de

S mais proacuteximo a x usando a projeccedilatildeo MLS (ldquoMoving Least Squaresrdquo)

Por questotildees de melhoria de desempenho utiliza-se o fato de que sendo

Ωp (x) a classificaccedilatildeo do ponto x em relaccedilatildeo agrave amostragem P tem-se que Ωp (x)

= Ωp (xrsquo) para todos os pontos de xrsquo que estatildeo dentro da esfera de centro x e

raio igual a x-p - ηp (onde p eacute o surfel mais proacuteximo e ηp eacute o espaccedilamento

local da amostragem em p acima citado) Ou seja sendo x um ponto qualquer p

o surfel mais proacuteximo a x ηp eacute o espaccedilamento local da amostragem em p se

desenharmos uma esfera com centro x e raio igual a x-p - ηp temos que

todos os pontos xrsquo que estatildeo dentro da esfera teratildeo a mesma classificaccedilatildeo de x

Desta forma o nuacutemero de vezes que a classificaccedilatildeo eacute feita (pesquisando-se o

surfel mais proacuteximo ao ponto e usando a Regra 2) diminui em ateacute 90 Assim

em geral a classificaccedilatildeo de um surfel eacute obtida a partir do seu surfel vizinho

Dados

S1 a superfiacutecie MLS de contorno que define o modelo A

S2 a superfiacutecie MLS de contorno que define o modelo B

P1 o conjunto de surfels que representa a superfiacutecie S1

P2 o conjunto de surfels que representa a superfiacutecie S2

Ωp1 (x) a classificaccedilatildeo do ponto p em relaccedilatildeo a uma amostragem P1

Q1 o subconjunto de P1 que vai compor o resultado

Ωp2 (x) a classificaccedilatildeo do ponto p em relaccedilatildeo a uma amostragem P2

Q2 o subconjunto de P2 que vai compor o resultado

Os conjuntos Q1 e Q2 satildeo obtidos por meio da Tabela 1 mostrada abaixo

Operaccedilotildees Booleanas com Pontos 42

Tabela 1 Classificaccedilatildeo para operaccedilotildees booleanas

Para o tratamento de interseccedilatildeo neste meacutetodo satildeo computados pontos

que caem exatamente na curva de interseccedilatildeo e estes satildeo acrescentados ao

modelo resultado Estes pontos satildeo determinados de forma que a densidade da

amostragem vai crescendo agrave medida que os surfels se aproximam da curva de

interseccedilatildeo e convergem para este ponto de interseccedilatildeo como mostra a Figura

13

(a) (b) (c)

Figura 13 - Os novos surfels satildeo colocados exatamente na curva de interseccedilatildeo

e convergem para o ponto de interseccedilatildeo

A Figura 14 mostra o processo de encontrar os surfels que caem nesta

curva de interseccedilatildeo Inicialmente satildeo encontrados todos os pontos de Q1 e Q2

que estatildeo proacuteximos agrave curva de interseccedilatildeo por meio da funccedilatildeo de distacircncia do

operador de projeccedilatildeo MLS Em seguida procura-se todos os pares mais

proacuteximos (q1 є Q1 q2 є Q2 ) e computa-se o ponto q na curva de interseccedilatildeo da

seguinte forma (veja a Figura 14)Seja r o ponto na linha de interseccedilatildeo dos dois

planos tangentes em q1 e q2 e que estaacute mais proacuteximo a estes dois pontos isto eacute

que minimiza a distacircncia ||r-q1|| + ||r-q2|| r eacute a primeira aproximaccedilatildeo de q e agora

pode ser projetado sobre S1 e S2 para obter dois novos pontos de partida q1rsquo e q2

rsquo

para a iteraccedilatildeo Este procedimento pode ser repetido iterativamente ateacute que os

pontos q1 e q2 convirjam ao ponto q na curva de interseccedilatildeo Normalmente este

processo requer menos de trecircs iteraccedilotildees

Operaccedilotildees Booleanas com Pontos 43

(a) (b)

(c)

Figura 14 (a) Suponhamos a reta que eacute a interseccedilatildeo do plano tangente a S1 em q1 e o

plano tangente a S2 em q2 O ponto r eacute o ponto desta reta que estaacute mais proacuteximo a q1 e

q2 (b) r eacute projetado sobre S1 e S2 obtendo-se q1acute e q2acute dois novos pontos de partida

para nova iteraccedilatildeo (c) A nova iteraccedilatildeo gera r que eacute uma aproximaccedilatildeo melhor de q

Pauly faz o tratamento de arestas vivas em tempo de renderizaccedilatildeo Ele

faz uma alteraccedilatildeo no renderizador Marca os surfels de interseccedilatildeo e ao

renderizaacute-los satildeo cortados para gerar uma aresta viva

44 Validade da Regra 2

Os dois meacutetodos analisados nesta dissertaccedilatildeo utilizam a seguinte regra

para a classificaccedilatildeo de um surfel

Regra 2 dado um volume V determinado por uma superfiacutecie de contorno

S uma amostragem P da superfiacutecie S um ponto x qualquer um ponto p є P que

eacute a amostra mais proacutexima a x um vetor ny normal a S em p e orientado para

fora de S temos que (x ndash p) np gt 0 x notinV

Em [16] eacute colocado que esta regra eacute tirada da seguinte propriedade da

geometria diferencial (aqui chamada Propriedade 1)

Propriedade 1 Dado um volume V determinado por uma superfiacutecie de

contorno S contiacutenua e duplamente diferenciaacutevel um ponto x qualquer um ponto

Operaccedilotildees Booleanas com Pontos 44

y є S que eacute o ponto de S mais proacuteximo a x um vetor ny normal a S em y e

orientado para fora de S temos que (x ndash y) ny gt 0 x notinV

A Figura 15 ilustra esta propriedade

Figura 15 Para verificar se o ponto x estaacute fora de um contorno C encontra-se o ponto y

de C Se o produto interno entre a normal em y e o vetor que liga y a x for maior que

zero entatildeo x estaacute fora de C senatildeo estaacute dentro de C

Pauly assume que tendo uma amostragem P da superfiacutecie S podemos

usar a Propriedade 1 substituindo y por p o surfel mais proacuteximo ao ponto x (x ndash

p) np gt 0 x notinV (Regra 2) Esta amostragem P em seu trabalho eacute

(aproximadamente) uma ldquoamostragem adequadardquo Tambeacutem seu tratamento de

interseccedilatildeo cria uma aproximaccedilatildeo dela (seccedilatildeo 43) Empiricamente a

ldquodiscretizaccedilatildeo da propriedaderdquo eacute vaacutelida a partir desta suposiccedilatildeo Mas isso natildeo foi

demonstrado teoricamente em seu trabalho

Pauly coloca em [16] que natildeo existe ainda uma teoria matemaacutetica rigorosa

de amostragem anaacuteloga a teoria de Fourier para superfiacutecies discretas

A melhor aproximaccedilatildeo teoacuterica para esta aacuterea eacute o uso do Eixo Medial que

foi colocado em [10] Vamos descrever este trabalho brevemente nesta seccedilatildeo

Este trabalho apresenta um algoritmo de reconstruccedilatildeo de superfiacutecie que parte de

uma amostragem adequada (abaixo definida) de pontos e obteacutem uma malha

que eacute topologicamente equivalente agrave superfiacutecie do objeto e agrave medida que a

densidade da amostragem cresce a saiacuteda converge para esta superfiacutecie

Para definir amostragem adequada o trabalho parte do conceito de Eixo

Medial

Operaccedilotildees Booleanas com Pontos 45

ldquoEixo Medialrdquo de uma superfiacutecie 2D posicionada no R3 eacute o conjunto

(fechado) de pontos pi para os quais buscando-se o ponto da superfiacutecie que

estaacute mais proacuteximo a pi mais de um ponto pertencentes a esta superfiacutecie satildeo

encontrados A Figura 16 abaixo ilustra o Eixo Medial em 2D

Figura 16 [10] As curvas de cor mais clara satildeo o Eixo Medial da curva em preto

Em duas dimensotildees os veacutertices de Voronoi de uma amostragem densa

aproximam o ldquoEixo Medialrdquo da amostragem (mas esta propriedade natildeo se

estende a 3D) A Figura 17 mostra o Eixo Medial em 3D

Figura 17 [10] Em 3D geralmente o Eixo Medial eacute uma superfiacutecie 2D (em cor mais

clara) Aqui o quadrado eacute o Eixo Medial da superfiacutecie transparente que o contorna

Podemos definir agora a amostragem adequada da seguinte forma

Supondo uma superfiacutecie suave que quer dizer uma 2-manifold duplamente

diferenciaacutevel posicionada no R3 uma ldquoamostragem adequadardquo desta superfiacutecie eacute

aquela na qual a densidade da amostragem eacute (pelo menos) inversamente

proporcional agrave distacircncia ao ldquoEixo Medialrdquo A Figura 18 mostra uma amostragem

adequada

Operaccedilotildees Booleanas com Pontos 46

Figura 18 [10] A figura mostra o diagrama de Voronoi de uma amostragem de pontos S

Da mesma forma que o a amostragem aproxima a curva os veacutertices de Voronoi

aproximam o Eixo Medial

Na praacutetica na reconstruccedilatildeo da superfiacutecie uma aproximaccedilatildeo deste ldquoEixo

Medialrdquo eacute computada (devido agrave dificuldade de computaacute-lo exatamente e em

alguns casos ateacute impossibilidade)

Melhorias Propostas 47

5 Melhorias Propostas

No capiacutetulo 4 apresentamos dois meacutetodos que realizam operaccedilotildees

booleanas em modelos por pontos o meacutetodo de Adams e Dutreacute [2] e o meacutetodo

de Pauly[3] Para esta dissertaccedilatildeo usamos o meacutetodo de Adams e Dutreacute [2] e

propomos as seguintes melhorias

- Alteramos o momento em que eacute feita a classificaccedilatildeo da octree Fazemos

esta classificaccedilatildeo durante a sua criaccedilatildeo Os noacutes filhos de um noacute pai P qualquer

satildeo classificados logo apoacutes a criaccedilatildeo de todos estes filhos de P

independentemente do restante da octree ter sido criada Isso pode ser feito

porque a octree eacute construiacuteda na ordem raiz-esquerda-direita (preorder

traversal) e portanto apoacutes todos os filhos de um noacute pai serem criados a parte

necessaacuteria da octree para a classificaccedilatildeo destes filhos jaacute estaacute criada

- A classificaccedilatildeo da octree eacute otimizada classificando-se os cantos dos seus

noacutes como dentro ou fora do modelo Na classificaccedilatildeo de um noacute n1 a partir de seu

vizinho n2 se os cantos que satildeo comuns a n1 e n2 tiverem a mesma

classificaccedilatildeo esta seraacute dada ao noacute Assim diminuiacutemos o nuacutemero de pesquisas

pelo surfel mais proacuteximo que eacute a parte criacutetica da classificaccedilatildeo dos noacutes da octree

em termos de tempo de processamento

- Acrescentamos um valor miacutenimo (maior que zero) para o nuacutemero de

surfels contidos em um noacute que eacute uma das condiccedilotildees de parada na criaccedilatildeo da

octree Verificamos que desta forma diminui-se a chance de erro na classificaccedilatildeo

de partes criacuteticas como ldquoarestas vivasrdquo

Uma comparaccedilatildeo entre a nossa implementaccedilatildeo e a de Pauly tambeacutem seraacute

feita no capiacutetulo 6

51 Descriccedilatildeo do algoritmo

O algoritmo implementado para esta dissertaccedilatildeo baseado no meacutetodo de

Adams e Dutreacute [2] pode ser dividido nas seguintes partes Criaccedilatildeo e

classificaccedilatildeo de uma octree para cada modelo Teste DentroFora Criaccedilatildeo do

modelo resultado Natildeo foi implementado tratamento especial algum de

interseccedilatildeo para o nosso plugin As proacuteximas seccedilotildees apresentam estas partes

Melhorias Propostas 48

511 Criaccedilatildeo e classificaccedilatildeo de uma octree para cada modelo

As ideacuteias do algoritmo satildeo aqui ilustradas em 2D mas a extensatildeo delas

para 3D eacute feita facilmente

Para cada modelo a octree eacute criada e classificada da seguinte forma

Figura 19-Quadtree classificada Os noacutes mais escuros estatildeo fora do modelo os mais claros dentro e os em tom intermediaacuterio satildeo noacutes de contorno

Gera-se uma ldquocaixa envolventerdquo do modelo contendo todos os surfels e

cria-se o noacute raiz da octree que corresponde a esta ldquocaixa envolventerdquo Este noacute

raiz eacute subdividido em oito filhos e seus surfels satildeo distribuiacutedos entre eles Ao

inveacutes de testarmos os valores de xy e z para cada surfel a fim de determinar

para qual filho ele iraacute utilizamos listas auxiliares Primeiro os surfels satildeo

subdivididos em dois grupos pelos valores de x e armazenados em uma lista

auxiliar Em seguida cada uma das listas eacute subdividida pelo valor de y e as

quatro listas obtidas seratildeo subdivididas pelo valor de z Ao final teremos 8 listas

de surfels cada uma delas pertencente a um filho

Cada noacute seraacute entatildeo novamente subdividido enquanto contiver um nuacutemero

de surfels gt nmin (valor preacute-definido) ou enquanto a profundidade da aacutervore lt pmax

(valor preacute-definido) Na figura 19 pmax = 3 e nmin = 3

Melhorias Propostas 49

Figura 20-O noacute cheio eacute dividido em trecircs partes agrave esquerda a regiatildeo estaacute dentro do modelo agrave direita estaacute fora e entre as duas linhas que dividem o noacute estaacute a regiatildeo que conteacutem os surfels

Os noacutes cheios recebem um tratamento especial Eles satildeo subdivididos em

trecircs partes da seguinte forma uma que estaacute fora do modelo outra que estaacute

dentro e uma que conteacutem os surfels Esta subdivisatildeo eacute feita por meio da criaccedilatildeo

de dois planos paralelos que dividem o noacute Para determinar estes planos

calcula-se o vetor nm igual agrave meacutedia das normais dos surfels do noacute nm = sum ns

sum ns onde ns eacute a normal de cada surfel do noacute Em seguida encontra-se o

surfel com maior produto interno entre a sua normal e a normal meacutedia

d1=Max(nm ٠ ns) Este surfel juntamente com a normal meacutedia define um dos

planos Encontra-se tambeacutem o surfel com menor produto interno entre a sua

normal e a normal meacutedia d2=Min (nm ٠ ns) Este surfel juntamente com a normal

meacutedia define o outro plano (Figura 20) Se o noacute conteacutem surfels de superfiacutecies de

orientaccedilotildees diferentes ele natildeo seraacute subdividido ou seja os planos coincidiratildeo

com os planos que delimitam o proacuteprio noacute Este teste foi implementado da

seguinte forma escolhe-se um surfel qualquer do noacute Calcula-se o produto

interno entre a normal deste surfel e as outras normais dos outros surfels deste

noacute Se algum produto interno for menor que zero este noacute natildeo seraacute subdividido

Apoacutes a etapa de subdivisatildeo classificam-se os oito cantos deste noacute como

dentro ou fora do modelo por meio da classificaccedilatildeo de um ponto que

descreveremos na sub-seccedilatildeo 5111

Melhorias Propostas 50

a b

c d

Figura 21-O noacute a eacute classificado pelo noacute c o noacute d tambeacutem eacute classificado pelo noacute c a classificaccedilatildeo do noacute a eacute propagada para o noacute b

Jaacute os noacutes vazios da octree seratildeo classificados como ldquodentrordquo ou ldquoforardquo do

modelo da seguinte forma cada noacute folha vazio eacute classificado a partir de um de

seus irmatildeos vizinhos adjacentes Se ele possuir um vizinho adjacente cheio ele

seraacute classificado por este vizinho se natildeo possuir os vizinhos adjacentes seratildeo

classificados primeiro e ele teraacute esta mesma classificaccedilatildeo (Figura 21) Como tem

que existir sempre pelo menos um noacute cheio entre os filhos de um noacute pai entatildeo

sempre esta classificaccedilatildeo poderaacute ser feita Com a classificaccedilatildeo de todos os

filhos tem-se tambeacutem a classificaccedilatildeo dos cantos do noacute pai

Mf03c003fmx a b

Figura 22-Os cantos a e b do noacute cheio possuem a mesma classificaccedilatildeo fora do modelo Esta classificaccedilatildeo foi dada ao noacute vazio adjacente

Melhorias Propostas 51

Para classificar um noacute vazio por meio de um noacute cheio verificam-se os

cantos comuns destes dois noacutes se todos os cantos tiverem a mesma

classificaccedilatildeo esta seraacute dada ao noacute vazio (Figura 22) Se houver classificaccedilotildees

diferentes escolhe-se o surfel do noacute cheio mais proacuteximo ao noacute vazio faz-se o

produto interno entre a normal deste surfel e o vetor que liga o centro do noacute

cheio ao centro do noacute vazio (ou o vetor que liga o surfel ao centro do noacute vazio)

Se o produto interno for maior que zero o noacute eacute classificado como ldquoforardquo senatildeo eacute

classificado como ldquodentrordquo Para encontrar o surfel (pertencente a um noacute cheio)

mais proacuteximo ao noacute vazio existem dois casos

- O noacute cheio eacute folha percorre-se toda a lista de surfels e escolhe o surfel

mais proacuteximo da fronteira entre o noacute cheio e o vazio

- O noacute cheio natildeo eacute um noacute folha percorrem-se os filhos do noacute cheio ou seja

esta pesquisa eacute feita descendo na octree a partir do noacute cheio procurando o

surfel mais proacuteximo agrave fronteira do pai com o noacute vazio a ser classificado

Classificando o centro do noacute vazio todo o noacute deve ter a mesma

classificaccedilatildeo pois este noacute natildeo conteacutem surfels Para encontrar o surfel do noacute

vazio mais proacuteximo da fronteira entre o noacute cheio e o vazio basta testar o valor da

coordenada se a fronteira eacute o lado direito do noacute cheio escolhe-se o surfel com

maior coordenada lsquoxrsquo se eacute o lado esquerdo escolhe-se o surfel com menor lsquoxrsquo

se lado superior surfel com maior lsquoyrsquo etc A seguir apresentamos a classificaccedilatildeo

de um ponto qualquer pertencente a um noacute cheio

Figura 23- Quadtree classificada

Melhorias Propostas 52

5111 Classificaccedilatildeo de um ponto de um noacute cheio

Figura 24 [2] A normal n eacute a normal meacutedia e os surfels s1 e s2 juntamente com a normal

n definem as retas que dividem o noacute O ponto a estaacute fora do modelo e o ponto b estaacute

dentro do modelo

Para um ponto localizado dentro do noacute faz-se o seguinte teste se o noacute foi

dividido testa-se de acordo com a divisatildeo do noacute se o ponto estaacute na parte do noacute

que estaacute dentro do modelo ele eacute classificado como ldquodentrordquo se o ponto estaacute na

parte que estaacute fora do modelo ele eacute classificado como ldquoforardquo (Figura 24) se o

ponto estaacute na parte que conteacutem os surfels encontra-se o surfel s pertencente ao

noacute mais proacuteximo do ponto e o classifica de acordo com s seja ns a normal em s

cs a coordenada de s cp a coordenada do ponto Se (cp - cs )٠ ns gt 0 o ponto

seraacute classificado como ldquoforardquo Senatildeo seraacute classificado como ldquodentrordquo

Se o noacute natildeo foi dividido em planos esta classificaccedilatildeo a partir do surfel

mais proacuteximo seraacute sempre feita

512 Teste DentroFora

Melhorias Propostas 53

Figura 25-Duas circunferecircncias e suas quadtrees correspondentes

O Teste DentroFora classifica os surfels de um modelo como dentro ou

fora de outro modelo ou na sua interseccedilatildeo Este teste foi aqui implementado

exatamente como foi proposto em Adams e Dutreacute [2] exceto que natildeo foi

implementado o meacutetodo TINN - Triangle Inequality Nearest Neighbour [19]

Cada octree eacute percorrida verificando-se se os seus noacutes ou surfels estatildeo dentro

fora ou no contorno do outro modelo (Figura 25) Sejam A e B duas octrees e

queremos classificar a octree A As duas octrees (AB) satildeo percorridas partindo

da raiz

Para cada noacute de A existem quatro casos (Figura 26) Para testar estas

situaccedilotildees os boxes dos noacutes satildeo aumentados de rmax o raio do maior surfel do

modelo Isto eacute feito para compensar o fato de que o surfel natildeo eacute apenas um

ponto mas sim considerado como um disco

Os quatro casos satildeo

Se o noacute de A natildeo intersecta B entatildeo todos os surfels deste noacute satildeo

classificados como fora

Se o noacute de A intersecta apenas noacutes de B que estatildeo fora do modelo

todos os surfels deste noacute satildeo fora

Se o noacute de A intersecta apenas noacutes de B que estatildeo dentro do modelo

todos os surfels deste noacute satildeo dentro

Melhorias Propostas 54

Se o noacute de A intersecta noacutes de B que estatildeo dentro e tambeacutem noacutes de B

que estatildeo fora testa-se se este noacute de A eacute ou natildeo folha Se natildeo for folha

percorre-se os filhos deste noacute de A ateacute encontrar um noacute folha cheio que

intersecta B Para cada surfel sa deste noacute folha de A encontra-se o surfel de B

mais proacuteximo e classifica-se a coordenada de sa da forma apresentada na seccedilatildeo

5111 Seja sb o surfel usado na classificaccedilatildeo de sa Se os discos de sb e sa

se intersectam sa eacute classificado como ldquointerseccedilatildeordquo

(a) (b)

(c) (d)

Figura 26- a modelos natildeo se intersectam b modelo intersecta noacutes fora c modelo intersecta apenas noacutes dentro d modelo intersecta noacutes dentro e noacutes fora

513 Criaccedilatildeo do modelo resultado

Um novo modelo eacute criado com os seguintes surfels (de acordo com a

operaccedilatildeo booleana escolhida pelo usuaacuterio - veja Regra 1 da seccedilatildeo 41)

Uniatildeo - surfels de A que estatildeo fora de B + surfels de B que estatildeo fora de A

Melhorias Propostas 55

Interseccedilatildeo - surfels de A que estatildeo dentro de B + surfels de B que estatildeo

dentro de A

Diferenccedila A-B - surfels de A que estatildeo fora de B + surfels de B que estatildeo

dentro de A (com orientaccedilatildeo invertida)

Como natildeo foi implementado tratamento especial algum de interseccedilatildeo para

o nosso plugin os surfels que se intersectam satildeo mantidos no modelo resultado

final sem modificaccedilotildees

Descrito o algoritmo vejamos a seguir a sua implementaccedilatildeo

52 Implementaccedilatildeo

Este algoritmo foi implementado na forma de um plugin para o software

PointShop 3D [11] Este plugin foi desenvolvido na linguagem C e no sistema

operacional Windows

A escolha deste tipo de implementaccedilatildeo permitiu-nos usar o software

PointShop para os testes do algoritmo Estes testes foram feitos com os modelos

disponibilizados para o PointShop [11] Nesta seccedilatildeo apresentaremos o software

PointShop e as principais estruturas de dados usadas em nosso plugin

O Pointshop eacute um software aberto com seu coacutedigo disponiacutevel e preparado

para trabalhar com plugins Eacute um software de ediccedilatildeo de modelos 3D por pontos

Ele permite aleacutem de visualizar o modelo alterar as suas caracteriacutesticas como

cor brilho e fazer mapeamento de textura iluminaccedilatildeo filtragem (Figura 27)

Melhorias Propostas 56

Figura 27-Software PointShop 3D com dois modelos carregados na sua cena

Aleacutem disso pode-se criar uma cena com vaacuterios modelos e visualizaacute-los de

qualquer ponto de vista Implementa o virtual trackball para rotacionaacute-los e

transladaacute-los Usa uma iluminaccedilatildeo simples direcional A sua arquitetura eacute

extensiacutevel permite que o usuaacuterio adicione seus proacuteprios componentes ao

sistema Possui trecircs tipos de componentes

ldquoToolsrdquo fornece funcionalidades para ediccedilatildeo interativa de superfiacutecie Satildeo

disponibilizados na ldquotoolbarrdquo

Plugins fornece funcionalidades para processar em um soacute passo

modelos ou partes deles selecionadas Satildeo disponibilizados no menu ldquoPluginsrdquo

Renderes fornece funcionalidades de display para os modelos

Para esta dissertaccedilatildeo foi escolhida a construccedilatildeo do componente Plugin

por adequar-se agrave nossa proposta e ser a mais simples de ser construiacuteda O

PointShop [11] jaacute conteacutem uma tool que executa operaccedilotildees booleanas e

deformaccedilatildeo free-form sobre os modelos carregados na cena usando o meacutetodo

de Pauly [3] apresentado no capiacutetulo 4 O nosso plugin Operaccedilotildees Booleanas

implementa o algoritmo descrito na seccedilatildeo anterior baseado na proposta de

Melhorias Propostas 57

Adams e Dutreacute [2] Uma comparaccedilatildeo entre o nosso plugin e a tool de Pauly [3] eacute

feita no capiacutetulo 6

Figura 28-Menu do PointShop com o plugin e as opccedilotildees para operaccedilotildees booleanas

Para se executar o plugin o usuaacuterio precisa carregar dois modelos na

cena do PointShop acionar o plugin informando a operaccedilatildeo que seraacute executada

O plugin executaraacute o algoritmo acima proposto e carregaraacute o resultado na cena

do Pointshop retirando os modelos anteriores

521 Estruturas de Dados

Como vimos o software PointShop [11] trabalha com modelos por pontos

Um modelo deste software descrito na seccedilatildeo 42 conteacutem todas as informaccedilotildees

que o algoritmo proposto em Bart [2] necessita Abaixo relacionamos as

Melhorias Propostas 58

principais estruturas de dados do PointShop usadas no plugin e as principais

estruturas de dados do nosso plugin

As principais classes do PointShop usadas no plugin satildeo

Classe Scene

Classe Objects

Classe SurfelColections

Classe Surfel

Classe StatusBar

Classe Transformer

A hierarquia de dados eacute a seguinte a Scene conteacutem vaacuterios Objects os

quais conteacutem SurfelColections Cada SurfelColections conteacutem Surfels que

suportam uma ou mais propriedades tais como cor difusa cor especular

Classe Scene Classe que representa uma cena que conteacutem modelos

Classe Object Um modelo eacute representado pela classe Object que

conteacutem uma SurfelCollection e as matrizes de transformaccedilatildeo para rotaccedilatildeo

escala e translaccedilatildeo Cada Object eacute identificado pelo seu nome que eacute uacutenico na

Scene O meacutetodo getUniqueName retorna um nome uacutenico Cada Object tem sua

proacutepria matriz de transformaccedilatildeo que pode ser modificada com setRotation

rotate setPosition translate setScale e scale Objects podem ser copiados com

copy Objects consiste em um conjunto de surfels os quais podem ser

recuperados pela getSurfelCollection O Object pode ser ativado com

setActiveObject e recuperado com getActiveObject

Objects podem ser adicionados ou removidos com addObject e

removeObject Os Objects podem ser obtidos pela getFirstObject e

getNextObject

Classe SurfelCollection representa o conjunto de surfels de um modelo

Cada surfelcollection consiste em um conjunto de surfels (SurfelInterface) de

tamanho obtido por getNofSurfels Os surfels podem ser recuperados com

getFirstSurfel getCurrentSurfel e getNextSurfel

A SurfelCollection conteacutem um PropertyDescriptor e uma SurfelList

A SurfelList eacute uma lista duplamente encadeada de surfels Possui os

atributos firstSurfel lastSurfel currentSurfel que satildeo ponteiros para uma

SurfelInterface nSurfels que eacute o nuacutemero de Surfels

A SurfelInterface define a API para os surfels que satildeo os menores

elementos que compotildeem um Object Podem ser considerados como pontos com

uma normal que define a orientaccedilatildeo do ciacuterculo (ou elipse) que seraacute desenhado

Melhorias Propostas 59

tatildeo logo o surfel seja renderizado Tem como atributos dois ponteiros (next e

prev) para SurfelInterface

PropertyDescriptor consiste em ateacute 32 valores descrevendo quais as

propriedades a SurfelInterface suporta

Classe Surfel classe que representa o surfel

Classe StatusBar classe que imprime mensagens na tela Os plugins

podem mandar mensagens para o usuaacuterio pela StatusBar

Mensagens texto podem ser impressas com showMessage O progresso

de uma operaccedilatildeo pode ser indicado com setProgress ou resetProgress

Classe Transformer representa a transformaccedilatildeo entre sistemas de

coordenadas Esta classe fornece meacutetodos para transformar pontos e vetores

entre os diferentes sistemas de coordenadas do Pointshop

A seguir apresentamos as principais estruturas de dados do plugin

Operaccedilotildees Booleanas

As principais estruturas de dados do plugin satildeo boundingbox tree no

lista_surfel surfel

Boundingbox conteacutem dois pontos 3D que definem uma caixa que conteacutem

o modelo um ponto com menores coordenadas xy e z e outro ponto com

maiores xyz

Tree representa a octree do modelo Cada registro conteacutem um ponteiro

para um noacute e oito ponteiros para as 8 octrees filhas

No representa um noacute da octree Conteacutem os seguintes dados

- localizaccedilatildeo do noacute que eacute o canto inferior esquerdo do noacute

- lista_surfel (preenchida apenas para noacutes folha cheios)

- quantidade de surfels do noacute

- classificaccedilatildeo do noacute como dentro fora ou contorno

- classificaccedilatildeo do noacute em relaccedilatildeo a outro modelo

- indica se o noacute eacute folha ou natildeo

- vetor que eacute a meacutedia das normais dos surfels do noacute

- ponto que eacute a meacutedia das localizaccedilotildees dos surfels do noacute

- surfel que tem (entre todos os surfels do noacute) o maior produto interno

entre a sua normal e a normal meacutedia

- surfel que tem (entre todos os surfels do noacute) o menor produto interno

entre a sua normal e a normal meacutedia

- produto interno maacuteximo e miacutenimo entre as normais dos surfels do noacute e a

normal meacutedia deste noacute

Melhorias Propostas 60

- indica se o noacute conteacutem surfels com normais em sentido oposto (produto

interno entre elas eacute menor que zero)

- classificaccedilatildeo dos oito cantos do noacute

lista_surfels lista em que cada registro conteacutem um apontador para um

surfel e um apontador para o proacuteximo registro

surfel representa o surfel da octree Conteacutem a classificaccedilatildeo em relaccedilatildeo a

outro modelo e um ponteiro para o surfel do Poinshop

Resultados 61

6 Resultados

Neste capiacutetulo apresentamos os testes realizados com o plugin para o

PointShop implementado para esta dissertaccedilatildeo a comparaccedilatildeo deste plugin com

o plugin de Pauly [3] e a comparaccedilatildeo entre o meacutetodo de Adams e Dutreacute [2] e o

meacutetodo de Pauly [3]

61 Testes

Os testes foram feitos em um PC x86 Family 6 261600 KB de RAM sem

placa graacutefica sistema operacional Windows 2000 O plugin foi implementado na

linguagem C

Os modelos usados para os testes satildeo modelos disponibilizados no

PointShop [11] Vale lembrar que o meacutetodo implementado em nosso plugin eacute

restrito a modelos soacutelidos e portanto foram usados apenas estes modelos

soacutelidos para os testes

O modelo na Figura 29 que eacute um dos modelos disponibilizados no

PointShop [11] foi usado para mostrar o resultado das operaccedilotildees realizadas

pelo plugin implementado nesta dissertaccedilatildeo O modelo Igea eacute um modelo soacutelido

que conteacutem 134345 surfels

Resultados 62

Figura 29-Modelo do PointShop Igea

Para realizar as operaccedilotildees este modelo foi carregado na cena do

PointShop duas vezes e um deles colorido de vermelho As Figuras 30 31 32

mostram o resultado da operaccedilatildeo de uniatildeo interseccedilatildeo e diferenccedila

respectivamente Os nuacutemeros de surfels dos modelos resultantes satildeo mostrados

na Tabela 2

Resultados 63

Figura 30-Resultado da uniatildeo de duas Igeas

Figura 31-Resultado da interseccedilatildeo de duas Igeas

Resultados 64

Figura 32-Resultado da diferenccedila entre duas Igeas

Tabela 2-Nuacutemero de surfels dos modelos resultantes

Observamos que o nuacutemero de surfels dos modelos resultantes estaacute

coerente com as figuras dos seus modelos

Para avaliar o tempo de processamento das operaccedilotildees foram realizados

vaacuterios testes com o objetivo de obter uma meacutedia dos tempos de realizaccedilatildeo de

cada operaccedilatildeo Tambeacutem foram armazenados os tempos da criaccedilatildeo das duas

octrees e da classificaccedilatildeo de todos os surfels dos dois objetos (como dentro ou

fora do outro modelo) Estes testes foram feitos usando o modelo Igea A meacutedia

dos tempos de processamento foi calculada e os resultados satildeo mostrados na

Tabela 3 Verificamos que o maior tempo gasto eacute para criaccedilatildeo das octrees

Verificamos tambeacutem que este resultado apresentado eacute similar ao resultado

verificado empiricamente com o plugin de Pauly [3] Os tempos gastos para

realizar as operaccedilotildees satildeo similares e o maior tempo gasto no plugin de Pauly

tambeacutem eacute para inicializaccedilatildeo de suas estruturas de dados que incluem a kd-tree

Operaccedilatildeo Nuacutemero de surfels do modelo resultado

Uniatildeo 189715

Interseccedilatildeo 72225

Diferenccedila 134552

Resultados 65

Operaccedilatildeo Criaccedilatildeo das

Octrees (seg)

Classificaccedilatildeo

(seg)

Criaccedilatildeo do

resultado (seg)

Total (seg)

Uniatildeo 39375 1324 18925 7154

Interseccedilatildeo 38585 1585 09547 63982

Diferenccedila 399875 1504 1729 729475

Tabela 3- Meacutedia dos tempos de processamento para as operaccedilotildees com duas Igeas

Com o objetivo de expor melhor os resultados deste trabalho

apresentamos abaixo mais um teste das operaccedilotildees booleanas usando o nosso

plugin Os modelos usados para este segundo teste satildeo o Max Planck e o Male

ambos modelos soacutelidos disponibilizados no PointShop Estes modelos satildeo

mostrados nas figura 33 e 34

O primeiro Max Planck conteacutem 52809 surfels

Figura 33-Modelo do PointShop MaxPlanck

O segundo modelo abaixo Male conteacutem 148138 surfels

Resultados 66

Figura 34-Modelo do PointShop Male

As Figuras 353637 mostram o resultado da operaccedilatildeo de uniatildeo interseccedilatildeo

e diferenccedila respectivamente usando os dois modelos acima Podemos observar

pela figura 35 que o resultado da operaccedilatildeo de diferenccedila neste caso gerou um

modelo resultado com trecircs partes desconexas Os nuacutemeros de surfels de cada

modelo resultado satildeo mostrados na Tabela 5

Figura 35- Resultado da Uniatildeo do modelo Male com MaxPlanck

Resultados 67

Figura 36-Resultado da interseccedilatildeo do modelo Male com o MaxPlanck

Figura 37-Resultado da diferenccedila do modelo Male do modelo MaxPlanck

As meacutedias de tempos de processamento foram calculadas da mesma

forma que o primeiro teste com o modelo Igea acima apresentado Os

resultados satildeo mostrados na Tabela 4 Podemos observar que este teste

Resultados 68

apresenta tempos um pouco menores que o teste com o modelo Igea Isto se

deve ao fato de que o modelo MaxPlanck ser significativamente menor que o

modelo Igea MaxPlanck possui 52809 surfels e Igea conteacutem 134345 surfels

Operaccedilatildeo Criaccedilatildeo das

Octrees (seg)

Classificaccedilatildeo

(seg)

Criaccedilatildeo do

resultado (seg)

Total

(seg)

Uniatildeo 3012 1254 102 5285

Interseccedilatildeo 2985 0901 0861 4747

Diferenccedila 2965 0911 0791 4667

Tabela 4-Tempo de processamento das operaccedilotildees com os modelos MaxPlanck e Male

Operaccedilatildeo Nuacutemero de surfels do resultado

Uniatildeo 126532

Interseccedilatildeo 88414

Diferenccedila 77635

Tabela 5-Nuacutemero de surfels dos modelos resultados das operaccedilotildees com os modelos MaxPlanck e Male

Em seguida apresentaremos uma comparaccedilatildeo entre o nosso plugin e o

plugin de Pauly[3] e tambeacutem uma comparaccedilatildeo entre o meacutetodo de Adams e Dutreacute

[2] e o meacutetodo de Pauly [3]

62 Comparaccedilatildeo entre os dois meacutetodos que realizam operaccedilotildees booleanas

A comparaccedilatildeo entre os meacutetodos de Pauly[3] e de Adams e Dutreacute foi feita

em termos de tempo de processamento e em termos conceituais Em termos de

tempo de processamento comparamos o plugin de Pauly[3] com o nosso plugin

Em termos de tempo de processamento verifica-se empiricamente que os

dois meacutetodos apresentam tempos bastante similares Entretanto o tempo de

processamento do algoritmo aqui implementado ainda pode ser melhorado com

Resultados 69

o uso do meacutetodo TINN [19] que foi proposto em Adams[2] - para otimizar a

pesquisa do surfel mais proacuteximo a um ponto que estaacute localizado na regiatildeo de um

noacute que conteacutem surfels - veja seccedilatildeo 42 O uso deste meacutetodo natildeo foi

implementado para este trabalho e a sua implementaccedilatildeo melhoraria o tempo de

resposta do algoritmo Aleacutem disso o trabalho de Sara F Frisken [12] citado no

capiacutetulo 2 apresenta uma otimizaccedilatildeo no uso de octrees que pode ser

incorporada no algoritmo implementado neste trabalho

Em termos conceituais vamos fazer a comparaccedilatildeo do uso do que

chamamos aqui de Regra 2 do tratamento de interseccedilatildeo e do tratamento de

ldquoarestas vivasrdquo

Como vimos na seccedilatildeo 41 tanto o algoritmo implementado nesta

dissertaccedilatildeo baseado no trabalho de Adams e Dutreacute como o meacutetodo de Pauly

[3] parte do que chamamos aqui de Regra 2 para realizar operaccedilotildees booleanas

com pontos Mas cada um destes meacutetodos daacute um tratamento diferente para o

uso desta regra

O meacutetodo de Pauly usa a Regra 2 para classificaccedilatildeo de cada ponto ou de

cada surfel Para classificar um surfel de B sb como dentro ou fora de A eacute

encontrado o surfel de A sa mais proacuteximo a sb e sb eacute classificado a partir de sa

Para encontrar sa Pauly utiliza uma kd-tree Como esta pesquisa para encontrar

sa eacute cara (mesmo usando uma kd-tree) Pauly utiliza uma esfera que conteacutem

pontos com a mesma classificaccedilatildeo (seccedilatildeo 432) e diminui em 90 este nuacutemero

de pesquisas Pauly utiliza tambeacutem a representaccedilatildeo impliacutecita MLS (Moving Least

Squares) para casos em que a Regra 2 poderia falhar e para tratamento de

interseccedilotildees Entretanto o nuacutemero destes casos em que a Regra 2 poderia falhar

eacute muito pequeno E a representaccedilatildeo MLS natildeo eacute uma estrutura simples de ser

implementada Portanto natildeo encontramos vantagens em usar MLS para estes

casos O meacutetodo de Adams e Dutreacute natildeo trata estes casos e na praacutetica

apresenta resultados bastante satisfatoacuterios como foi mostrado Portanto

consideramos que valeria a pena fazer algum tratamento especial para estes

casos se fosse um procedimento simples Para a execuccedilatildeo do algoritmo de

Pauly o uso de MLS natildeo interfere significativamente porque a construccedilatildeo desta

representaccedilatildeo natildeo eacute feita somente para realizar operaccedilotildees booleanas Os testes

empiacutericos que fizemos com o algoritmo de Pauly natildeo incluem a construccedilatildeo desta

representaccedilatildeo

Aparentemente os dois algoritmos satildeo bastante parecidos um usa octrees

e o outro usa kd-tree As duas estruturas de dados satildeo simples e otimizam a

classificaccedilatildeo dos surfels de um modelo como dentro ou fora do outro modelo

Resultados 70

Mas existe uma diferenccedila conceitual entre dois que merece ser destacada O

algoritmo aqui implementado usa a Regra 2 para classificaccedilatildeo dos noacutes de uma

octree e armazena esta octree classificada (ver capiacutetulo 5) Assim na maioria dos

casos natildeo seraacute necessaacuterio encontrar o surfel mais proacuteximo para classificar um

ponto (ou um surfel) como fora ou dentro de um modelo Caso o ponto esteja em

uma aacuterea da octree classificada ele teraacute a classificaccedilatildeo dada agravequela aacuterea A

pesquisa ao surfel mais proacuteximo seraacute feita apenas nos casos em que o ponto a

ser classificado estaacute localizado entre os planos que subdividem um noacute cheio

O uso desta octree classificada levanta uma questatildeo que natildeo foi citada no

trabalho de Adams e Dutreacute que eacute a proximidade desta estrutura (armazenada)

de octree classificada com uma representaccedilatildeo volumeacutetrica do objeto Sendo

assim esta estrutura pode ser aproveitada para outras funccedilotildees aleacutem da

classificaccedilatildeo dos surfels Por exemplo podemos ter uma aproximaccedilatildeo do

volume de uma cena somando os volumes aproximados dos modelos que a

compotildeem Como o enfoque deste trabalho eacute operaccedilatildeo booleana natildeo vamos nos

aprofundar nesta questatildeo

Outra importante diferenccedila entre os dois trabalhos que jaacute foi explicada na

seccedilatildeo 432 eacute que o meacutetodo de Pauly aplica-se a modelos soacutelidos ou natildeo

soacutelidos enquanto que o meacutetodo de Adams e Dutreacute aplica-se somente a modelos

soacutelidos

Quanto ao tratamento de interseccedilatildeo em termos de visualizaccedilatildeo todos os

dois resolvem bem o problema O tratamento de interseccedilatildeo nos dois trabalhos

tambeacutem resolve o problema da validade da Regra 2 (ver seccedilatildeo 44) Entretanto

o tratamento de Adams e Dutreacute natildeo depende da renderizaccedilatildeo sendo portanto

mais portaacutevel Aleacutem disso uma desvantagem do meacutetodo de Pauly eacute o uso da

representaccedilatildeo impliacutecita MLS (ldquoMoving Least Squaresrdquo) do objeto para obter os

pontos exatamente na curva de interseccedilatildeo Esta representaccedilatildeo torna o

tratamento de interseccedilatildeo mais complexo e a vantagem apresentada natildeo eacute tatildeo

significativa para este tratamento de interseccedilatildeo

Conclusatildeo 71

7 Conclusatildeo

Concluiacutemos entatildeo que as escolhas de Adams e Dutreacute por usar uma

octree classificada e pelo tratamento dado agrave interseccedilatildeo satildeo mais abrangentes

que a escolha de Pauly E consideramos que quanto mais abrangente for uma

escolha conceitual mais resultados poderemos tirar dela No caso de Adams e

Dutreacute eles estendem o problema de classificar um ponto para classificar todo o

modelo Como foi citado ele quase fornece uma representaccedilatildeo volumeacutetrica do

modelo Esta aproximada representaccedilatildeo volumeacutetrica pode nos fornecer outras

informaccedilotildees como por exemplo o volume aproximado do modelo

Aleacutem disso o uso da representaccedilatildeo impliacutecita MLS no meacutetodo de Pauly cria

uma complexidade a mais para o meacutetodo sem apresentar vantagens para a

realizaccedilatildeo de operaccedilotildees booleanas que eacute o nosso enfoque

Logo podemos dizer que o meacutetodo de Adams e Dutreacute apresenta as

seguintes vantagens em relaccedilatildeo ao de Pauly

- a estrutura de octree classificada aleacutem de ser usada para classificaccedilatildeo

fornece informaccedilotildees adicionais como volume aproximado do objeto

- o tempo de processamento no meacutetodo de Adams e Dutreacute tende a ser

melhor que no meacutetodo de Pauly se implementadas as melhorias acima citadas e

se colocaacutessemos em consideraccedilatildeo o uso da representaccedilatildeo impliacutecita MLS

(Moving Least Squares)

- o tratamento de interseccedilatildeo de Adams e Dutreacute apresenta a vantagem da

portabilidade ou seja iraacute funcionar independente do algoritmo de renderizaccedilatildeo

utilizado

E as vantagens do meacutetodo de Pauly em relaccedilatildeo ao de Adams e Dutreacute

- a colocaccedilatildeo de surfels exatamente na curva de interseccedilatildeo

- a possibilidade de trabalhar com modelos soacutelidos ou natildeo soacutelidos

E finalizando concluiacutemos que o estudo relatado nesta dissertaccedilatildeo foi

importante por

- fornecer um breve estudo sobre modelagem por pontos uma nova e

promissora aacuterea dentro da computaccedilatildeo graacutefica

Conclusatildeo 72

- por apresentar uma avaliaccedilatildeo dos dois trabalhos existentes sobre

operaccedilotildees booleanas com pontos encontrando as vantagens de cada um

e levantando questotildees que natildeo tinham sido citadas nos trabalhos originais

- por propor e implementar melhorias ao trabalho de Adams e Dutreacute

71 Trabalhos Futuros

Nossa implementaccedilatildeo pode ser ainda evoluiacuteda com as propostas

apresentadas na seccedilatildeo 62 Como observamos o tempo de processamento do

algoritmo aqui implementado ainda pode ser melhorado com o uso do meacutetodo

TINN [19] - que foi proposto em Adams[2] - para otimizar a pesquisa do surfel

mais proacuteximo a um ponto que estaacute localizado na regiatildeo de um noacute que conteacutem

surfels Aleacutem disso o trabalho Simple and Efficient Trasversal Methods for

Quadtrees and Octrees de Sara F Frisken [12] citado no capiacutetulo 2 apresenta

uma otimizaccedilatildeo no uso de octrees Outra proposta para melhorar o tempo de

processamento do algoritmo aqui implementado eacute usar a forma de trabalhar com

octrees apresentada neste trabalho

O trabalho de Adams e Dutreacute [2] eacute aplicado apenas a objetos soacutelidos O

nosso plugin portanto aplica-se somente a este tipo de objeto Jaacute o trabalho de

Pauly[3] eacute aplicado tambeacutem a modelos natildeo soacutelidos Apresentamos como

proposta a um trabalho futuro a extensatildeo do algoritmo aqui implementado para

modelos natildeo soacutelidos O surfel pode conter uma informaccedilatildeo adicional que indica

se ele estaacute delimitando um volume ou natildeo Assim pode-se ter um modelo com

ldquopartes soacutelidasrdquo e ldquopartes natildeo soacutelidasrdquo Por exemplo a uniatildeo de um plano com

uma esfera poderia resultar numa esfera com ldquoabasrdquo (seriam as partes do plano

que estariam fora da esfera) O modelo resultado teria uma parte correspondente

a um espaccedilo 3D (esfera) e outra parte que seria uma superfiacutecie 2D posicionada

no espaccedilo 3D sem delimitar algum volume (abas)

Muitos trabalhos podem ser desenvolvidos aplicando-se o modelo por

pontos em animaccedilatildeo jogos visualizaccedilatildeo de terrenos criaccedilatildeo de protoacutetipos etc

considerando-se a eficiecircncia e simplicidade do modelo E mais especificamente

as operaccedilotildees booleanas com pontos podem ser aplicadas para criaccedilatildeo de

cenaacuterios testes de colisotildees e nestes casos a representaccedilatildeo usando octrees

pode ser mais explorada considerando-se o seu potencial de representaccedilatildeo

volumeacutetrica de um objeto

Referecircncias Bibliograacuteficas 73

8 Referecircncias Bibliograacuteficas

[1] MAumlNTYLAuml M An Introduction to Solid Modeling Computer Science Press 1988

[2] ADAMS B DUTREacute P Interactive Boolean Operations on Surfel-

Bounded Solids Proceedings of SIGGRAPH 2003 San Diego USA 2003

[3] PAULY M KEISER R KOBBELT L GROSS M Shape Modeling

with Point-Sampled Geometry SIGGRAPH 2003 Computer Graphics

Proceedings Annual Conference Series ACM Press ACM SIGGRAPH 2003

[4] LEVOY M WHITTED T The Use of Points as Display Primitives

Technical Report TR 85-022 The University of North Carolina at Chapel Hill

Department of Computer Science 1985

[5] PFISTER H ZWICKER M VAN BAAR J GROSS M 2000 Surfels

Surface Elements as Rendering Primitives SIGGRAPH 2000 pp 335ndash342 New

Orleans LA July 23-28 2000

[6] ZWICKER M PFISTER H VAN BAAR J GROSS M Surface

Splatting SIGGRAPH 2001

[7] PAULY M KOBBELT L GROSS M Multiresolution Modeling of

Point-Sampled Geometry CS Techinical Report 378 September 16 2002

[8] CURLESS B New Methods for Surface Reconstruction from Range Images PhD thesis Stanford University 1997

[9] RUSINKIEWICZ S Real-time Acquisition and Rendering of Large 3D Models PhD thesis Stanford University 2001

Referecircncias Bibliograacuteficas 74

[10] AMENTA N BERN M KAMVYSSELIS M A new Voronoi-Based

Surface Reconstruction Algorithm SIGGRAPH 98 Conference proceedings pp

415-421 New York 1998

[11] ZWICKER M PAULY M KNOLL O GROSS M Pointshop 3D an

Interactive System for Point-Based Surface Editing Proceedings of SIGGRAPH 2002 San Antonio TX July 2002

[12] FRISKEN S PERRY R Simple and Efficient Traversal Methods for

Quadtrees and Octrees Journal of Graphics Tools Vol 7 Issue 3 May 2003

[13] CORREcircA W T OLIVEIRA M M Silva C T Wang J

Modeling and Rendering of Real Environments

Revista de Informaacutetica Teoacuterica e Aplicada (Brazilian Journal of Theoretic and Applied Computing) 9(2)127-156 2002

[14] DAVIS J MARSCHNER S GARR M LEVOY M Filling Holes in

Complex Surfaces Using Volumetric Diffusion First International Symposium on 3D Data Processing Visualization Transmission June 2002

[15] RAumlSAumlNEN J Surface Splatting Theory Extensions and Implementation Masterrsquos Thesis Dept of Computer Science Helsinki

University of Technology May 28 2002

[16] PAULY M Point Primitives for Interactive Modeling and Processing of 3D Geometry PhD thesis Federal Institute of Technology (ETH)

of Zurich 2003

[17] HOPPE H DEROSE T DUCHAMP T MCDONALD J

STUELZLE W Surface Reconstruction from Unorganized Points Computer Graphics 26(2)71ndash78 July 1992

[18] ALEXA M BEHR J COHEN-OR D FLEISHMAN S LEVIN D

SILVA C T Point Set Surfaces IEEE Visualization 2001 pp 21ndash28 October

2001

Referecircncias Bibliograacuteficas 75

[19] GREENSPAN M GODIN G TALBOT J Acceleration of Binning

Nearest Neighbor Methods Proceedings of Vision Interface 2000 pp 337-

344

[20] MENCL R Reconstruction of Surfaces from Unorganized Three-Dimensional Point Clouds Dissertation Dortmund Univ 2001

[21] KRIVANEK J Representing and Rendering Surfaces With Points

httpciteseernjneccomkrivanek03representinghtml Acesso em 30 jul

2003

[22] KRISTJANSSON ET AL Approximate Boolean Operations on Free-

form Solids Proceedings of SIGGRAPH 01 2001

11

Lista de figuras

Figura 1 Um modelo por pontos e sua visualizaccedilatildeo 21 Figura 2 A superfiacutecie modelada por surfels O surfel em destaque tem raio de

alcance rt e normal n 22 Figura 3 Modelo por pontos e sua renderizaccedilatildeo usando Surface Splatting 26 Figura 4 Trecircs modelos novos foram criados a partir dos quatro iniciais (esfera

cilindro dois cubos) O primeiro eacute a esfera menos um cubo em seguida

retirou-se outro cubo e por uacuteltimo retirou-se o cilindro 29 Figura 5 A partir de dois modelos por pontos uma heacutelice e uma cabeccedila as trecircs

operaccedilotildees booleanas satildeo mostradas da esquerda para a direita uniatildeo

diferenccedila e interseccedilatildeo 30 Figura 6 (a) Dois modelos A e B (b) Posicionados de forma que A tem uma parte

dentro de B eacute mostrado o resultado A U B Af + Bf (c) Resultado de A ndash B Af

+ Bd (d) Resultado de A cap B Ad + Bd 31 Figura 7 Para classificar o ponto x encontra-se o surfel p (com normal np) mais

proacuteximo a x Se o produto interno entre np e (x ndash p) for maior que zero entatildeo

x eacute classificado como fora senatildeo seraacute classificado como dentro 32 Figura 8 Interseccedilatildeo de duas esferas agrave esquerda sem nenhum tratamento de

interseccedilatildeo agrave direita apoacutes o tratamento de interseccedilatildeo 33 Figura 9 Um objeto representado por pontos com suas normais e sua quadtree

correspondente classificada os noacutes cinza claro estatildeo dentro do modelo noacutes

cinza mais escuro estatildeo fora do modelo e noacutes com cinza intermediaacuterio satildeo

noacutes cheios noacutes que conteacutem pontos 35 Figura 10 Divisatildeo de noacute de contorno a parte agrave esquerda estaacute fora do modelo a

parte agrave direita estaacute dentro do modelo e a faixa intermediaacuteria conteacutem os

surfels 36 Figura 11 Interseccedilatildeo do surfel s e do plano que passa pelo surfel t o surfel mais

proacuteximo a s O surfel s eacute substituiacutedo por trecircs surfels menores 38 Figura 12 Agrave direita eacute mostrado o resultado do tratamento de interseccedilatildeo para o

caso de Arestas Vivas do objeto agrave esquerda 39 Figura 13 Os novos surfels satildeo colocados exatamente na curva de interseccedilatildeo e

convergem para o ponto de interseccedilatildeo 42 Figura 14 (a) Suponhamos a reta que eacute a interseccedilatildeo do plano tangente a S1 em

q1 e o plano tangente a S2 em q2 O ponto r eacute o ponto desta reta que estaacute

12

mais proacuteximo a q1 e q2 (b) r eacute projetado sobre S1 e S2 obtendo-se q1acute e q2acute

dois novos pontos de partida para nova iteraccedilatildeo (c) A nova iteraccedilatildeo gera r

que eacute uma aproximaccedilatildeo melhor de q 43 Figura 15 Para verificar se o ponto x estaacute fora de um contorno C encontra-se o

ponto y de C Se o produto interno entre a normal em y e o vetor que liga y a

x for maior que zero entatildeo x estaacute fora de C senatildeo estaacute dentro de C 44 Figura 16 As curvas vermelhas satildeo o Eixo Medial da curva em preto 45 Figura 17 Em 3D geralmente o Eixo Medial eacute uma superfiacutecie 2D (em vermelho)

Aqui o quadrado eacute o Eixo Medial da superfiacutecie transparente que o contorna

45 Figura 18 A figura mostra o diagrama de Voronoi de uma amostragem de pontos

S Da mesma forma que a amostragem aproxima a curva os veacutertices de

Voronoi aproximam o Eixo Medial 46 Figura 19 Quadtree classificada Os noacutes mais escuros estatildeo fora do modelo os

mais claros dentro e os em tom intermediaacuterio satildeo noacutes de contorno 48 Figura 20 O noacute cheio eacute dividido em trecircs partes agrave esquerda a regiatildeo estaacute dentro

do modelo agrave direita estaacute fora e entre as duas linhas que dividem o noacute estaacute a

regiatildeo que conteacutem os surfels 49 Figura 21 O noacute a eacute classificado pelo noacute c o noacute d tambeacutem eacute classificado pelo noacute c

a classificaccedilatildeo do noacute a eacute propagada para o noacute b 50 Figura 22 Os cantos a e b do noacute cheio possuem a mesma classificaccedilatildeo fora do

modelo Esta classificaccedilatildeo foi dada ao noacute vazio adjacente 50 Figura 23 Quadtree classificada 51 Figura 24 A normal n eacute a normal meacutedia e os surfels s1 e s2 juntamente com a

normal n definem as retas que dividem o noacute 52 Figura 25 Duas circunferecircncias e suas quadtrees correspondentes 53 Figura 26 a modelos natildeo se intersectam b modelo intersecta noacutes fora c

modelo intersecta apenas noacutes dentro d modelo intersecta noacutes dentro e noacutes

fora 54 Figura 27 Software PointShop 3D com dois modelos carregados na sua cena 56 Figura 28 Menu do PointShop com o plugin e as opccedilotildees para operaccedilotildees

booleanas 57 Figura 29 Modelo do PointShop Igea 62 Figura 30 Resultado da uniatildeo de duas Igeas 63 Figura 31 Resultado da interseccedilatildeo de duas Igeas 63 Figura 32 Resultado da diferenccedila entre duas Igeas 64

13

Figura 33 Modelo do PointShop MaxPlanck 65 Figura 34 Modelo do PointShop Male 66 Figura 35 Resultado da Uniatildeo do modelo Male com MaxPlanck 66 Figura 36 Resultado da interseccedilatildeo do modelo Male com o MaxPlanck 67 Figura 37 Resultado da diferenccedila do modelo Male do modelo MaxPlanck 67

14

Lista de tabelas

Tabela 1 Classificaccedilatildeo para operaccedilotildees booleanas 42

Tabela 2- Nuacutemero de surfels dos modelos resultantes 64 Tabela 3- Meacutedia dos tempos de processamento para as operaccedilotildees com duas

Igeas 65

Tabela 4-Tempo de processamento das operaccedilotildees com os modelos MaxPlanck

e Male 68 Tabela 5- Nuacutemero de surfels dos modelos resultados das operaccedilotildees com os

modelos MaxPlanck e Male 68

15

1 Introduccedilatildeo

O mundo digital estaacute conquistando cada vez mais espaccedilo nos meios de

comunicaccedilatildeo Sons imagens viacutedeos digitais satildeo miacutedias muito usadas em

diversas aacutereas como entretenimento medicina desenho industrial engenharia

arquitetura educaccedilatildeo arte ciecircncia entre outras Podemos citar alguns

exemplos dentro destas aacutereas como jogos efeitos especiais filmes digitais

visualizaccedilatildeo cientiacutefica viacutedeo-conferecircncia comeacutercio na internet Nos uacuteltimos anos

verificamos que o modelo 3D vem se tornando um novo meio de comunicaccedilatildeo

digital Com o desenvolvimento da tecnologia de aquisiccedilatildeo e do processamento

de modelos 3D ele vem sendo cada vez mais utilizado Jogos 3D animaccedilotildees

aplicaccedilotildees em realidade virtual visualizaccedilatildeo cientiacutefica aplicaccedilotildees para aacuterea

meacutedica e odontoloacutegica criaccedilatildeo de reacuteplicas para estudo e preservaccedilatildeo do

patrimocircnio histoacuterico sistemas CADCAM cataacutelogos de modelos 3D na Web para

comercializaccedilatildeo criaccedilatildeo de protoacutetipos para arquitetura engenharia satildeo alguns

exemplos de aplicaccedilotildees que usam modelos 3D

A aacuterea que estuda a representaccedilatildeo de um modelo 3D no computador eacute

chamada de modelagem em computaccedilatildeo graacutefica Existem diversos tipos de

modelagem para as diversas aplicaccedilotildees que usam um modelo 3D como por

exemplo representaccedilotildees poligonais como malhas triangulares que satildeo

geralmente usadas na aacuterea de entretenimento Este trabalho explora um novo

tipo de modelagem a modelagem por pontos

A modelagem por pontos comeccedilou a ser largamente explorada nesta

deacutecada e trata-se de uma aacuterea muito promissora em computaccedilatildeo graacutefica dadas

agraves vaacuterias e grandes vantagens em relaccedilatildeo aos outros tipos de representaccedilatildeo

como esquema de representaccedilatildeo CSG (Constructive Solid Geometry) [1] ou

malhas poligonais Dentre as principais vantagens podemos citar grande

simplicidade e flexibilidade boa performance robustez Mas a principal

vantagem desta modelagem que foi o fator que impulsionou o seu grande

desenvolvimento nesta deacutecada eacute que esta modelagem por pontos eacute a melhor

opccedilatildeo para tratar os dados de saiacuteda de equipamentos de aquisiccedilatildeo de modelos

3D O uso destes equipamentos tem aumentado muito nesta deacutecada A

16

tecnologia destes equipamentos tem progredido muito e eles tecircm se tornado

mais baratos A tendecircncia eacute que o uso destes equipamentos se torne o mais

utilizado meio de obtenccedilatildeo de modelos 3D Isto porque construir modelos 3D

bastante detalhados por meio de um software de modelagem eacute muito trabalhoso

O processo de aquisiccedilatildeo de modelos por meio destes equipamentos automatiza

este processo de construccedilatildeo

No trabalho com modelos 3D frequumlentemente satildeo usadas as operaccedilotildees

booleanas que satildeo operaccedilotildees de uniatildeo interseccedilatildeo ou diferenccedila No esquema

de representaccedilatildeo CSG estas operaccedilotildees fazem parte da representaccedilatildeo do

objeto Estas operaccedilotildees tambeacutem podem ser usadas para criar novos modelos ou

para alteraacute-los Na maioria dos tipos de representaccedilatildeo de objetos 3D estas

operaccedilotildees satildeo bastante complexas

A simplicidade da representaccedilatildeo por pontos permite que as operaccedilotildees

booleanas sejam realizadas com facilidade se compararmos com a realizaccedilatildeo

destas operaccedilotildees em outros tipos de representaccedilatildeo como malhas poligonais

Motivada pelas vantagens desta modelagem e pela utilidade destas operaccedilotildees

esta dissertaccedilatildeo apresenta uma introduccedilatildeo geral de modelagem por pontos e

trabalha mais especificamente com operaccedilotildees booleanas em objetos

modelados por pontos Dois trabalhos que exploram as operaccedilotildees booleanas na

modelagem por pontos seratildeo abordados o trabalho de Adams e Dutreacute [2] e o

trabalho de Pauly et al [3] O presente trabalho implementa o meacutetodo de Adams

e Dutreacute com algumas melhorias e faz uma comparaccedilatildeo entre o meacutetodo de Pauly

[3] e o meacutetodo de Adams e Dutreacute [2] com nossas melhorias

Como contribuiccedilotildees dadas por este trabalho apresentamos

- um estudo sobre modelagem por pontos

- um estudo sobre operaccedilotildees booleanas com pontos

- proposta de melhorias ao algoritmo proposto por Adams e Dutreacute [2]

- comparaccedilatildeo dos dois meacutetodos propostos para realizar estas operaccedilotildees

meacutetodo de Pauly et al [3] e de Adams e Dutreacute [2]

Este trabalho vem apresentado nesta dissertaccedilatildeo organizada em sete

capiacutetulos conforme descrito resumidamente a seguir

O capiacutetulo 2 cita alguns trabalhos sobre modelagem por pontos que estatildeo

relacionados a este trabalho

O capiacutetulo 3 apresenta uma visatildeo geral do modelo por pontos e explica

melhor alguns trabalhos citados no capiacutetulo 2

17

O capiacutetulo 4 apresenta operaccedilotildees booleanas com pontos e os dois

meacutetodos para realizaacute-las na modelagem por pontos meacutetodo de Pauly et al [3] e

de Adams e Dutreacute [2]

O capiacutetulo 5 apresenta algumas melhorias ao algoritmo de Adams e Dutreacute

[2] e a nossa implementaccedilatildeo deste algoritmo

O capiacutetulo 6 traz os resultados obtidos

E finalmente o capiacutetulo 7 encerra o trabalho com uma conclusatildeo e com

possiacuteveis trabalhos futuros

Trabalhos relacionados 18

2 Trabalhos relacionados

O primeiro pesquisador a propor o uso de pontos como primitiva graacutefica foi

Levoy em [4] Ele propotildee o uso de pontos como primitiva de renderizaccedilatildeo e

discute a conversatildeo dos outros modelos para o modelo por pontos

Nos uacuteltimos anos vaacuterios trabalhos importantes tecircm sido realizados na aacuterea

em diversos segmentos em visualizaccedilatildeo podemos destacar os trabalhos de

Pfister [5] e de Zwicker [6] que usam pontos como primitiva de renderizaccedilatildeo e

com resultados praacuteticos interativos muito bons

Em [7] Pauly et al propotildeem algoritmos para modelagem multi-resoluccedilatildeo

em modelos por pontos

Os trabalhos de Curless [8] e Rusinkiewicz [9] discutem os meacutetodos de

aquisiccedilatildeo que consistem em obter uma amostragem de pontos da superfiacutecie do

objeto real por meio de equipamentos como por exemplo o scanner 3D

Nas operaccedilotildees booleanas a interseccedilatildeo das superfiacutecies dos modelos

iniciais seraacute parte do modelo resultado e para ser representada corretamente

precisa ser reconstruiacuteda A reconstruccedilatildeo da superfiacutecie tambeacutem eacute usada na

visualizaccedilatildeo de um modelo Um trabalho significativo na aacuterea de reconstruccedilatildeo de

superfiacutecies estaacute em [10] de N Amenta etal Este trabalho apresenta uma

soluccedilatildeo praacutetica com garantias teoacutericas para este problema e uma heuriacutestica para

o tratamento de arestas vivas a questatildeo mais difiacutecil desta aacuterea Um exemplo

de uma aresta viva eacute o encontro de dois planos natildeo coincidentes

Frequumlentemente a interseccedilatildeo citada acima (interseccedilatildeo entre os modelos iniciais)

gera uma aresta viva (seccedilatildeo 4223)

O algoritmo aqui implementado eacute um plugin para o software PointShop 3D

[11] de Zwicker et al software de ediccedilatildeo de modelos com pontos O PointShop

tem seu coacutedigo aberto documentaccedilatildeo e trabalha com plugins Ele permite a

visualizaccedilatildeo e ediccedilatildeo interativa do modelo por pontos Eacute o uacutenico software livre

disponiacutevel com estas caracteriacutesticas Esta implementaccedilatildeo na forma de um plugin

facilitou muito o trabalho pois natildeo foi necessaacuterio implementar a visualizaccedilatildeo do

modelo 3D Aleacutem disso o Pointshop conteacutem tambeacutem um plugin com a

implementaccedilatildeo do meacutetodo de Pauly et al [3] discutido nesta dissertaccedilatildeo A

Trabalhos relacionados 19

execuccedilatildeo dos dois plugins que realizam operaccedilotildees booleanas pocircde ser

comparada

Os trabalhos aqui discutidos satildeo o de Bart Adams e Philip Dutreacute [2] e de

Pauly et al[3] que apresentam meacutetodos diferentes para realizaccedilatildeo de

operaccedilotildees booleanas com pontos Adams e Dutreacute utilizam octrees [1] e Pauly

Kd-Tree [16] e MLS (Moving Least Squares) [18] Estes algoritmos satildeo

discutidos no capiacutetulo 4

O trabalho de Sara F Frisken [12] apresenta um algoritmo para realizar

operaccedilotildees em octree de forma mais eficiente Como estas operaccedilotildees estatildeo

presentes em todo o nosso algoritmo este trabalho certamente oferece uma

forma de otimizaccedilatildeo mas que natildeo foi implementada

Modelagem por Pontos 20

3 Modelagem por Pontos

A computaccedilatildeo graacutefica natildeo lida diretamente com o objeto ou com o

fenocircmeno fiacutesico lida com modelos graacuteficos ou geomeacutetricos Modelos graacuteficos

satildeo estruturas computacionais (abstratas) que capturam aspectos de objetos de

interesse para uma aplicaccedilatildeo como forma cor textura etc Se apenas a forma

ou a geometria do objeto eacute relevante temos modelos geomeacutetricos

Estes modelos satildeo usados em vaacuterias aplicaccedilotildees em computaccedilatildeo graacutefica

como roboacutetica visatildeo computacional simulaccedilotildees realistas anaacutelises estruturais

prototipagem projeto e manufatura de produtos eletromecacircnicos arquitetura

Existem vaacuterios tipos de modelos graacuteficos Esta dissertaccedilatildeo trata de um tipo

muito em voga atualmente que eacute o modelo por pontos

Neste capiacutetulo daremos uma visatildeo geral do modelo por pontos

Introduziremos este modelo e seu processo de criaccedilatildeo Seraacute apresentado o que

eacute um modelo por pontos e o conceito de surfel [5] introduziremos os tipos de

distribuiccedilatildeo dos surfels uma estruturaccedilatildeo aplicada a estes surfels e dados que

eles podem conter As quatro proacuteximas subseccedilotildees (Ideacuteia da representaccedilatildeo

Tipos de distribuiccedilatildeo dos surfels Estrutura de multi-resoluccedilatildeo e Dados que um

surfel pode conter) tratam destes toacutepicos Um modelo por pontos pode ser criado

a partir da conversatildeo de outros tipos de modelagem NURBS por exemplo para

o modelo por pontos ou a partir de um processo de aquisiccedilatildeo Esta uacuteltima forma

de criaccedilatildeo pode ser dividida em duas etapas aquisiccedilatildeo do modelo reconstruccedilatildeo

da superfiacutecie As subseccedilotildees 35 e 36 tratam destas duas etapas

respectivamente A ediccedilatildeo do modelo 3D eacute tratada brevemente na subseccedilatildeo 38

e a sua visualizaccedilatildeo na subseccedilatildeo 37 A apresentaccedilatildeo do processo de aquisiccedilatildeo

(seccedilatildeo 35) eacute baseada no tutorial de W T Correcirca [13] A etapa de ediccedilatildeo 3D

consiste em operaccedilotildees para mudanccedila da cor textura ou forma do modelo Para

esta etapa enfocaremos as operaccedilotildees booleanas que modificam a forma do

modelo ou criam novos modelos

31 Ideacuteia da Representaccedilatildeo

Modelagem por Pontos 21

Figura 1 [20] -Um modelo por pontos e sua visualizaccedilatildeo

Um modelo por pontos representa um objeto atraveacutes de seu contorno Eacute

um tipo de representaccedilatildeo B-Rep (Boundary Representation) [1] Este contorno

consiste em uma superfiacutecie 2D posicionada no espaccedilo 3D Na modelagem por

pontos ela eacute representada por um conjunto de pontos 3D que satildeo uma

amostragem dos (infinitos) pontos que formam a superfiacutecie contiacutenua (Figura 1) A

amostragem pode ser obtida de diversas maneiras Uma delas o processo de

aquisiccedilatildeo progrediu muito nos uacuteltimos anos e este foi um dos fatores que tornou

muito importante o desenvolvimento deste modelo por pontos Outra forma de

gerar amostragem eacute fazer uma conversatildeo de um outro modelo NURBS por

exemplo para o modelo por pontos

Estes pontos satildeo denominados surfels e podem conter aleacutem da posiccedilatildeo

3D outras informaccedilotildees como normal agrave superfiacutecie cor textura raio de alcance A

Figura 2 mostra um conjunto de surfels representando uma superfiacutecie No surfel

em destaque podemos ver o raio de alcance rt e a normal n agrave superfiacutecie

Modelagem por Pontos 22

Figura 2 [5] A superfiacutecie modelada por surfels O surfel em destaque tem raio de alcance

rt e normal n

Como o modelo natildeo armazena qualquer informaccedilatildeo sobre a conexatildeo entre

os surfels a reconstruccedilatildeo da superfiacutecie contiacutenua a partir dele pode exigir

algumas restriccedilotildees na amostragem (seccedilatildeo 36)

32 Tipos de distribuiccedilatildeo dos surfels

Existem dois tipos de distribuiccedilatildeo dos surfels na modelagem por pontos

uniforme e natildeo uniforme Na distribuiccedilatildeo uniforme cada um deles descreve

partes de mesmo tamanho da superfiacutecie Na natildeo uniforme cada surfel armazena

a informaccedilatildeo de seu raio de alcance que eacute o raio do disco que este surfel

representa

A distribuiccedilatildeo uniforme tem a vantagem de ser mais simples e natildeo ser

necessaacuterio armazenar o raio de alcance do disco mas ela apresenta a seguinte

desvantagem se o modelo possui regiotildees com muito detalhe e regiotildees com

pouco detalhe ele teraacute que manter uma alta densidade mesmo nas regiotildees de

poucos detalhes

33 Estrutura de multi-resoluccedilatildeo

Um objeto pode ser representado em vaacuterios niacuteveis de detalhes Por

exemplo podemos representar um mesmo objeto com vaacuterias resoluccedilotildees

diferentes Este conceito pode ser aplicado ao modelo por pontos Desta forma

um modelo eacute representado por uma estrutura hieraacuterquica (uma aacutervore por

exemplo) onde em cada niacutevel temos uma representaccedilatildeo do objeto em uma

Modelagem por Pontos 23

determinada resoluccedilatildeo Em [7] Pauly et al propotildeem algoritmos para modelagem

multi-resoluccedilatildeo em modelos por pontos

34 Dados que um surfel pode conter

Cada surfel armazena sua localizaccedilatildeo e pode tambeacutem conter informaccedilotildees

como a cor ou coordenadas de textura Se a amostragem natildeo for uniforme o

surfel conteacutem a informaccedilatildeo do raio de alcance que eacute o raio de um disco cujo

centro eacute a posiccedilatildeo do surfel O surfel pode tambeacutem conter o vetor normal agrave

superfiacutecie e assim o surfel pode ser visto como um disco orientado A superfiacutecie

tambeacutem pode ser vista como uma superfiacutecie orientada

35 Aquisiccedilatildeo do modelo

Esta introduccedilatildeo sobre aquisiccedilatildeo do modelo aqui apresentada baseia-se no

tutorial de W T Correcirca [13]

O processo de aquisiccedilatildeo consiste em obter uma amostragem de pontos da

superfiacutecie do objeto real por meio de equipamentos como por exemplo o

scanner 3D Eacute uma aacuterea que tem progredido muito nos uacuteltimos anos A

resoluccedilatildeo e a precisatildeo dos equipamentos de aquisiccedilatildeo tecircm melhorado bastante

e o custo deles reduzido de forma significativa Isso possibilita que a aquisiccedilatildeo

de modelos 3D seja usada em aplicaccedilotildees de desenho industrial arte ou em

produtos para a aacuterea de entretenimento O consequumlente maior uso destes

equipamentos criou a necessidade de avanccedilos no tratamento dos seus dados de

saiacuteda que satildeo um conjunto de pontos

Este processo pode ser dividido em trecircs partes [13] aquisiccedilatildeo da

geometria aquisiccedilatildeo da textura e correccedilatildeo de falhas da aquisiccedilatildeo

351 Aquisiccedilatildeo da geometria

Existem vaacuterios meacutetodos de aquisiccedilatildeo da geometria Curless [8] e

Rusinkiewicz [9] classificaram estes meacutetodos em trecircs categorias meacutetodos por

contato transmissatildeo e reflexatildeo

O meacutetodo por contato toca a superfiacutecie do objeto com uma sonda e grava

a posiccedilatildeo Este meacutetodo do qual o Coordinate Measuring Machines (CMMs) eacute

Modelagem por Pontos 24

um exemplo eacute bastante preciso mas eacute muito lento e natildeo adequado a objetos

fraacutegeis

Meacutetodos por transmissatildeo projetam ondas de energia sobre o objeto e

gravam a energia transmitida Por exemplo tomografia computadorizada que

projeta ondas de raio-x sobre o objeto e mede a quantidade de radiaccedilatildeo que

passa atraveacutes dele O resultado eacute um modelo geomeacutetrico de alta resoluccedilatildeo Este

meacutetodo pode captar detalhes do objeto que natildeo satildeo visiacuteveis de fora do objeto

Por outro lado ele eacute caro e arriscado

Meacutetodos por reflexatildeo podem ser oacuteticos ou natildeo-oacuteticos Natildeo-oacuteticos incluem

radares que medem a distacircncia a um objeto enviando microondas ou ondas

sonoras para o objeto e gravando o tempo que a onda gasta para retornar Estes

meacutetodos natildeo satildeo muito precisos nem raacutepidos

Meacutetodos por reflexatildeo oacuteticos podem ser passivos ou ativos Meacutetodos oacuteticos

passivos natildeo interagem com o objeto e incluem teacutecnicas de visatildeo computacional

como shape-from-shading stereo triangulation optical flow e meacutetodos de

decomposiccedilatildeo para video streams Estes meacutetodos raramente constroem

modelos precisos e sua maior aplicaccedilatildeo eacute em reconhecimento de objetos

Meacutetodos oacuteticos ativos projetam luz sobre um objeto de maneira estruturada

e atraveacutes da reflexatildeo da luz determinam a forma do objeto Exemplos satildeo depth

from defocus photometric stereo projected-light triangulation time of flight

Meacutetodos por reflexatildeo oacuteticos ativos tecircm muitas vantagens sobre os passivos tecircm

um melhor desempenho quando natildeo existe textura satildeo mais baratos e mais

robustos e produzem uma amostragem precisa

352 Aquisiccedilatildeo da textura

Idealmente noacutes gostariacuteamos de ter uma completa descriccedilatildeo de como um

ponto da superfiacutecie reflete a luz dependendo do vetor normal a esta superfiacutecie

da direccedilatildeo do raio de luz incidente e do comprimento de onda Tal descriccedilatildeo eacute

conhecida como Bidirectional Reflectance Distribution Function (BRDF) Medir

BRDFs com precisatildeo eacute um problema difiacutecil

Pode-se ter uma aproximaccedilatildeo da aquisiccedilatildeo de cores do objeto tirando

fotos dele O objeto eacute fotografado e a cor de cada ponto da superfiacutecie eacute obtida a

partir de um mapeamento das fotos 2D para o modelo 3D Para mapear a

fotografia agrave geometria precisamos conhecer os paracircmetros de projeccedilatildeo da

cacircmera e a sua posiccedilatildeo no momento em que a foto foi batida Para cada ponto

Modelagem por Pontos 25

3D do modelo encontramos sua projeccedilatildeo 2D no plano da cacircmera e associamos

a cor do pixel nesta projeccedilatildeo agrave cor do ponto 3D

353 Correccedilatildeo das falhas da aquisiccedilatildeo

O processo de aquisiccedilatildeo deixa frequumlentemente buracos no modelo devido

a ruiacutedos no processo ou agrave impossibilidade de aquisiccedilatildeo de determinadas partes

de uma superfiacutecie Estes buracos devem ser corrigidos Pode-se usar por

exemplo um filtro de passa-baixa para remoccedilatildeo de ruiacutedos [14] Meacutetodos de

difusatildeo geomeacutetrica tecircm sido aplicados para preenchimento dos buracos [15] A

correccedilatildeo das falhas eacute tida como um preacute-processamento para o processo de

reconstruccedilatildeo da superfiacutecie contiacutenua (seccedilatildeo 36)

36 Reconstruccedilatildeo da superfiacutecie (contiacutenua) a partir do modelo (discreto)

A reconstruccedilatildeo da superfiacutecie contiacutenua consiste em a partir de um conjunto

natildeo estruturado de pontos obter um modelo contiacutenuo desta superfiacutecie Esta

reconstruccedilatildeo eacute frequumlentemente exigida para um modelo por pontos Na sua

visualizaccedilatildeo podemos desejar focar qualquer parte do modelo Para fazermos

operaccedilotildees booleanas com os modelos podemos querer determinar exatamente

onde eles se intersectam

No entanto natildeo precisamos ter necessariamente a representaccedilatildeo contiacutenua

de todo o objeto ao mesmo tempo A reconstruccedilatildeo desta superfiacutecie a partir dos

pontos amostrados pode ser feita no momento que for mais adequado agrave

aplicaccedilatildeo Na visualizaccedilatildeo a reconstruccedilatildeo pode ser feita na projeccedilatildeo 2D da

parte do modelo em foco (seccedilatildeo 37) Para operaccedilotildees booleanas pode-se

reconstruir apenas a aacuterea da interseccedilatildeo dos modelos

Este processo de reconstruccedilatildeo de superfiacutecie tem sido muito estudado em

modelagem geomeacutetrica e geometria computacional nos uacuteltimos anos O trabalho

mais importante desta aacuterea eacute o trabalho de Amenta et al [10] que foi a primeira

soluccedilatildeo com garantias demonstraacuteveis para este problema de reconstruccedilatildeo de

superfiacutecie A seccedilatildeo 44 explica estes conceitos e o trabalho [10] Este trabalho

demonstra que teoricamente para que a reconstruccedilatildeo da superfiacutecie (contiacutenua) a

partir das amostras seja correta a amostragem deve ser adequada Ele usa o

conceito de ldquoEixo Medialrdquo para definir o que eacute uma amostragem adequada

Modelagem por Pontos 26

(seccedilatildeo 44) Em duas dimensotildees os veacutertices de Voronoi de uma amostragem

densa aproximam o ldquoEixo Medialrdquo da amostragem

Por meio deste conceito de Eixo Medial [1016] obtecircm-se paracircmetros

teoacutericos para a definiccedilatildeo de amostragem adequada e baseado neste conceito

o algoritmo apresentado em [10] traz uma soluccedilatildeo praacutetica para o problema

obtendo uma malha poligonal a partir do modelo por pontos

O PointShop 3D [11] software de ediccedilatildeo de modelos por pontos utilizado

nesta pesquisa faz quando necessaacuterio a reconstruccedilatildeo da superfiacutecie Para isso

o PointShop 3D explora a vizinhanccedila local (surfels vizinhos de acordo com suas

posiccedilotildees) Ele usa o conceito de Eixo Medial para justificar seu meacutetodo de

reconstruccedilatildeo da superfiacutecie que na praacutetica apresenta resultados bastante

satisfatoacuterios apesar de teoricamente natildeo ter garantias [16]

37 Visualizaccedilatildeo do modelo

A primeira abordagem para visualizaccedilatildeo de um modelo por pontos foi

construir uma malha de poliacutegonos a partir dos surfels e renderizaacute-la Mas a

construccedilatildeo de malhas a partir dos surfels eacute um processo muito caro e lento

principalmente para modelos complexos Na tentativa de obter uma visualizaccedilatildeo

interativa do modelo por pontos estatildeo sendo estudadas teacutecnicas que utilizam

surfels como primitiva de visualizaccedilatildeo A ideacuteia foi apresentada inicialmente por

Levoy [4]

Figura 3 [21] -Modelo por pontos e sua renderizaccedilatildeo usando Surface Splatting

Modelagem por Pontos 27

O objetivo da renderizaccedilatildeo a partir dos surfels eacute projetaacute-los na tela e

reconstruir as superfiacutecies de forma contiacutenua sem buracos Para que esta

renderizaccedilatildeo seja amplamente utilizada deve-se ter cuidado com o uso de

memoacuteria e com a qualidade da imagem gerada Teacutecnicas recentes como Surface

Splatting [6] faz a renderizaccedilatildeo interativamente com qualidade (Figura 3)

comparada a outros meacutetodos de renderizaccedilatildeo como Image Based Rendering

Em geral a visualizaccedilatildeo do modelo por pontos pode ser dividida nas seguintes

etapas

- warping - projeccedilatildeo em perspectiva de cada ponto do modelo na tela

processo anaacutelogo agrave projeccedilatildeo de veacutertices dos triacircngulos na malha triangular Se

um pixel da tela estiver contido em mais de uma projeccedilatildeo de surfels (vizinhos)

ou seja mais de um ponto cobre este pixel os atributos destes pontos seratildeo

combinados

- shading por ponto - o processo de shading eacute realizado para cada ponto

visiacutevel (os pontos que natildeo satildeo vistos do ponto de vista em questatildeo devem ser

retirados) Qualquer modelo local de shading pode ser aplicado Uma nova

teacutecnica foi proposta em Surface Splatting [6]

- reconstruccedilatildeo da imagem ndash pixels que natildeo ldquoreceberamrdquo projeccedilatildeo de

nenhum ponto formam buracos na imagem Esta imagem deve ser reconstruiacuteda

sem buracos sem aliasing e as superfiacutecies devem ser reconstruiacutedas de forma

contiacutenua e devem ser ldquosuavizadasrdquo (smooth surface)

Os algoritmos de renderizaccedilatildeo por pontos podem tratar a questatildeo de

buracos na visualizaccedilatildeo de trecircs formas [17]

Detecccedilatildeo e preenchimento de buracos no espaccedilo da tela pontos satildeo

projetados na tela e pixels que natildeo receberam pontos satildeo detectados (buracos)

Para preencher estes buracos que natildeo receberam pontos eacute feita uma

interpolaccedilatildeo entre os vizinhos

Geraccedilatildeo de mais pontos a superfiacutecie eacute interpolada no espaccedilo do modelo

para garantir que todos os pixels recebam pelo menos a projeccedilatildeo de um ponto

Splatting um surfel eacute projetado na tela e sua contribuiccedilatildeo eacute espalhada de

forma diferenciada para os pixels vizinhos Agrave medida em que o vizinho se torna

mais distante a contribuiccedilatildeo do surfel diminui

Raumlsaumlnen faz uma analogia do processo de renderizaccedilatildeo proposto em [6]

com o mapeamento de textura [15] No mapeamento de textura para um

determinado pixel da tela satildeo encontrados os pontos da textura que afetam este

Modelagem por Pontos 28

pixel Num sentido inverso em splatting para um determinado surfel (que

representa a textura) satildeo encontrados os pixels da tela que este surfel afeta

38 Ediccedilatildeo do modelo

Ediccedilatildeo de um modelo 3D consiste em operaccedilotildees que modificam

caracteriacutesticas deste modelo como cor textura forma ou criam novos modelos

O software PointShop 3D [11] software de ediccedilatildeo de modelos por pontos 3D

implementa vaacuterias destas operaccedilotildees (ver seccedilatildeo 52)

Para modificar a forma de um modelo ou criar um novo satildeo muito usadas

as operaccedilotildees booleanas que eacute o nosso enfoque nesta dissertaccedilatildeo Na

modelagem CSG (Constructive Solid Geometry) as operaccedilotildees booleanas satildeo

usadas juntamente com primitivas soacutelidas para definir um modelo No entanto

em alguns tipos de modelos estas operaccedilotildees satildeo difiacuteceis como por exemplo

em malhas poligonais Com pontos elas podem ser feitas interativamente [32]

Operaccedilotildees Booleanas com Pontos 29

4 Operaccedilotildees Booleanas com Pontos

Operaccedilotildees booleanas satildeo as operaccedilotildees de uniatildeo interseccedilatildeo e diferenccedila

definidas na teoria matemaacutetica de conjuntos Estas operaccedilotildees satildeo aplicadas em

modelos soacutelidos para alteraacute-los ou para criar novos modelos A Figura 4 abaixo

mostra a criaccedilatildeo de trecircs novos modelos a partir de quatro modelos iniciais

Figura 4 [22] Trecircs modelos novos foram criados a partir dos quatro iniciais (esfera

cilindro dois cubos) O primeiro eacute a esfera menos um cubo em seguida retirou-se outro

cubo e por uacuteltimo retirou-se o cilindro

Estas operaccedilotildees satildeo aplicadas em objetos modelados por pontos em dois

trabalhos no trabalho de Bart Adams e Philip Dutreacute [2] e no trabalho de Pauly

et Al [3] Neste capiacutetulo a seccedilatildeo 41 apresenta a parte comum aos dois

trabalhos e as seccedilotildees 42 e 43 apresentam as particularidades de cada um A

seccedilatildeo 44 discute uma questatildeo natildeo explicitada em nenhum dos dois trabalhos

41 Meacutetodos para realizar operaccedilotildees booleanas em objetos modelados por pontos

A Figura 5 mostra o resultado do meacutetodo de Adams[2] operaccedilotildees de

uniatildeo diferenccedila e interseccedilatildeo de objetos soacutelidos 3D modelados por pontos

Operaccedilotildees Booleanas com Pontos 30

Figura 5 [2]-A partir de dois modelos por pontos uma heacutelice e uma cabeccedila as trecircs operaccedilotildees booleanas satildeo mostradas da esquerda para a direita uniatildeo diferenccedila e interseccedilatildeo

Sejam A e B objetos 3D soacutelidos modelados por pontos Definem-se os

seguintes elementos

Af ndash superfiacutecie (contorno) de A que estaacute fora de B

Ad ndash superfiacutecie (contorno) de A que estaacute dentro de B

Bf ndash superfiacutecie (contorno) de B que estaacute fora de A

Bd ndash superfiacutecie (contorno) de B que estaacute dentro de A

O resultado da operaccedilatildeo booleana entre A e B seraacute um modelo C cuja

superfiacutecie de contorno pode ser determinada pela seguinte regra [2] que aqui

chamamos de Regra 1

Regra 1 A U B Af + Bf

A cap B Ad + Bd

A ndash B Af + Bd (com a orientaccedilatildeo invertida)

B ndash A Ad (com a orientaccedilatildeo invertida) + Bf

A Figura 6 mostra as operaccedilotildees com dois modelos A e B

(a) (b)

Operaccedilotildees Booleanas com Pontos 31

(c) (d)

Figura 6 [22] (a) Dois modelos A e B (b) Posicionados de forma que A tem

uma parte dentro de B eacute mostrado o resultado A U B Af + Bf (c) Resultado de A ndash B Af

+ Bd (d) Resultado de A cap B Ad + Bd

Bart [2] e Pauly [3] apresentam dois meacutetodos para determinar os

elementos acima Estes dois meacutetodos satildeo construiacutedos a partir dos seguintes

conceitos os elementos Af Ad Bf Bd satildeo uma parte da superfiacutecie modelada por

pontos e portanto satildeo conjuntos de surfels Para determinaacute-los eacute necessaacuteria

entatildeo a classificaccedilatildeo de um surfel (que pode se resumir agrave classificaccedilatildeo de um

ponto que eacute o seu centro) de uma superfiacutecie como dentro ou fora de um outro

modelo Os dois meacutetodos utilizam a seguinte regra para esta classificaccedilatildeo aqui

denominada Regra 2

Regra 2 Dado um ponto x qualquer um volume V determinado por uma superfiacutecie

de contorno S uma amostragem P da superfiacutecie S um ponto p є P que eacute a

amostra mais proacutexima a x um vetor np normal agrave S em p e orientado para fora de

S temos que

(x ndash p) np gt 0 x notinV

Ou seja para classificar um ponto em relaccedilatildeo a um modelo verificamos o

produto interno entre a normal em p (surfel mais proacuteximo a x) e o vetor (x - p)

se este produto interno for maior que zero x natildeo pertence ao volume V e seraacute

classificado como fora senatildeo seraacute classificado como dentro De maneira

ainda mais informal se a normal em p apontar para a direccedilatildeo oposta a x x seraacute

classificado como dentro se apontar para x x seraacute classificado como fora

A Figura 7 mostra a Regra 2

Operaccedilotildees Booleanas com Pontos 32

Figura 7 Para classificar o ponto x encontra-se o surfel p (com normal np) mais proacuteximo

a x Se o produto interno entre np e (x ndash p) for maior que zero entatildeo x eacute classificado como

fora senatildeo seraacute classificado como dentro

A validade da Regra 2 eacute discutida na Seccedilatildeo 44 Uma das restriccedilotildees

teoacutericas para garantir-lhe a validade eacute que a superfiacutecie seja suave

Cada um dos dois meacutetodos daacute um tratamento diferente para o uso desta

regra Pauly usa a regra diretamente encontrando o surfel mais proacuteximo a um

ponto e classificando este ponto a partir deste surfel Ele utiliza tambeacutem a

representaccedilatildeo impliacutecita MLS (Moving Least Squares [18]) para casos em que a

Regra 2 poderia falhar e para tratamento de interseccedilotildees [3] Seu meacutetodo vale

para modelos soacutelidos ou natildeo soacutelidos O meacutetodo de Adams e Dutreacute [2] utiliza

octrees [1] criando uma classificaccedilatildeo dos noacutes da octree a partir desta Regra 2

Os pontos satildeo entatildeo classificados de acordo com o noacute da octree que o conteacutem

Este segundo meacutetodo aplica-se somente a modelos soacutelidos Os dois meacutetodos

seratildeo descritos em detalhes nas seccedilotildees abaixo

Como um surfel eacute considerado um disco podemos dizer que surfels de

dois modelos diferentes podem se intersectar A interseccedilatildeo destes dois surfels

corresponde agrave interseccedilatildeo destes dois discos Estes surfels geram problemas

para visualizaccedilatildeo se forem acrescentados ao resultado sem um tratamento

especiacutefico apresentaratildeo artefatos natildeo desejaacuteveis na renderizaccedilatildeo do modelo

resultado (Figura 8) se natildeo forem acrescentados ao resultado deixaratildeo buracos

no modelo

Operaccedilotildees Booleanas com Pontos 33

Figura 8 [2] -Interseccedilatildeo de duas esferas agrave esquerda sem nenhum tratamento de interseccedilatildeo agrave direita apoacutes o tratamento de interseccedilatildeo

Aleacutem disso nem sempre esta interseccedilatildeo forma uma superfiacutecie suave

Esta interseccedilatildeo pode formar uma aresta viva (seccedilatildeo 4223) gerando

problemas tambeacutem para o uso da Regra 2 que eacute vaacutelida apenas para superfiacutecies

suaves Eacute necessaacuterio entatildeo fazer um tratamento desta superfiacutecie de interseccedilatildeo

(formada por surfels originados de diferentes modelos) O tratamento de cada

um dos meacutetodos para este caso seraacute tambeacutem abaixo apresentado

42 Meacutetodo de Adams e Dutreacute

O meacutetodo aplica-se somente a modelos soacutelidos Para determinaccedilatildeo dos

elementos da aqui chamada Regra 1 (seccedilatildeo 41) este meacutetodo utiliza uma octree

[1] que subdivide o espaccedilo do modelo em trecircs fora dentro ou no contorno do

modelo Estes espaccedilos satildeo determinados pela classificaccedilatildeo dos noacutes da octree a

partir da Regra 2 Tambeacutem eacute usado o meacutetodo TINN - Triangle Inequality Nearest

Neighbour [19] - para otimizar a pesquisa dentro do noacute A seguir descrevemos o

modelo usado neste meacutetodo apresentando os dados associados aos pontos o

tipo de distribuiccedilatildeo e o algoritmo que realiza as operaccedilotildees

421 Modelo por Pontos em Adams e Dutreacute

Os surfels neste meacutetodo contecircm as seguintes informaccedilotildees posiccedilatildeo do

surfel xs orientaccedilatildeo do surfel ns e raio de alcance do surfel rs O surfel pode ser

pensado como um disco ortogonal a ns com centro xs e raio rs O raio eacute

escolhido de tal forma que a projeccedilatildeo dos discos no plano da imagem se

sobreponham

Operaccedilotildees Booleanas com Pontos 34

Os objetos representados satildeo soacutelidos A distribuiccedilatildeo dos surfels eacute

uniforme embora o algoritmo natildeo exija esta condiccedilatildeo Para cada soacutelido eacute

definido um rmax = Max rs o raio de alcance do maior surfel pertencente agrave

superfiacutecie do soacutelido Como o raio eacute escolhido de tal forma que a projeccedilatildeo dos

discos no plano da imagem se sobreponham o controle da amostragem eacute

entatildeo ligado agrave renderizaccedilatildeo

422 Algoritmo de Operaccedilotildees Booleanas

Utilizando objetos modelados da forma descrita acima o meacutetodo realiza

operaccedilotildees de uniatildeo interseccedilatildeo e diferenccedila com modelos soacutelidos Supondo dois

modelos soacutelidos S1 e S2 O algoritmo pode ser dividido nas seguintes etapas

Criaccedilatildeo de uma octree para cada modelo Teste Dentro-Fora Tratamento da

interseccedilatildeo Estas etapas satildeo apresentadas nas proacuteximas seccedilotildees

4221 Criaccedilatildeo de uma octree para cada modelo

Eacute criada uma octree [1] para cada modelo A criaccedilatildeo de uma octree eacute feita

da seguinte forma

Gera-se a ldquoCaixa envolventerdquo caixa alinhada com os eixos que conteacutem

todo o modelo A ldquoCaixa envolventerdquo corresponde ao noacute raiz da octree Este noacute

conteacutem inicialmente todos os surfels do modelo Em seguida o noacute raiz eacute

dividido em oito noacutes filhos Os surfels satildeo distribuiacutedos entre estes oito noacutes Cada

um deles caso contenha surfels eacute dividido novamente em 8 filhos e seus surfels

satildeo redistribuiacutedos entre eles Este processo eacute repetido recursivamente enquanto

o nuacutemero de surfels do noacute for maior que zero ou ateacute uma profundidade maacutexima

preacute-definida da octree ser alcanccedilada

Cada noacute da octree deve ser classificado O objetivo desta classificaccedilatildeo eacute

determinar que parte da octree estaacute dentro do modelo e que parte estaacute fora Os

noacutes da octree satildeo entatildeo classificados como ldquodentrordquo ldquoforardquo e ldquocontornordquo

Podemos ilustrar esta classificaccedilatildeo em 2D a Figura 9 mostra uma quadtree

classificada

Operaccedilotildees Booleanas com Pontos 35

Figura 9-Um objeto representado por pontos com suas normais e sua quadtree correspondente classificada os noacutes cinza claro estatildeo dentro do modelo noacutes cinza mais escuro estatildeo fora do modelo e noacutes com cinza intermediaacuterio satildeo noacutes cheios noacutes que conteacutem pontos

O noacutes que conteacutem surfels satildeo classificados como ldquocontornordquo Para

classificar um noacute vazio existem trecircs casos

o noacute vazio tem apenas um vizinho-irmatildeo natildeo vazio

o noacute vazio tem mais de um vizinho-irmatildeo natildeo vazio

o noacute vazio natildeo tem vizinhos-irmatildeos natildeo vazios

No primeiro caso o noacute vazio eacute classificado pelo seu vizinho natildeo vazio No

segundo caso considera-se qualquer um dos vizinhos natildeo vazios No terceiro

caso classifica-se primeiro os noacutes vizinhos e eacute dada a mesma classificaccedilatildeo para

o noacute vazio Como cada noacute natildeo folha de uma octree tem pelo menos um noacute filho

natildeo vazio sempre pode ser feita a classificaccedilatildeo dos noacutes vazios A classificaccedilatildeo

eacute feita da seguinte forma dentre os surfels do vizinho-irmatildeo escolhido encontra-

se o surfel mais proacuteximo ao noacute a ser classificado Se a normal deste surfel

aponta para o noacute vazio a ser classificado entatildeo ele eacute classificado como ldquoforardquo

Se a normal aponta no sentido contraacuterio entatildeo ele eacute classificado como ldquodentrordquo

De maneira mais formal sejam cv e cc coordenadas dos centros do noacute vazio e

do noacute contorno respectivamente Seja s o surfel mais proacuteximo ao noacute vazio e ns

a normal em s Se ( cv - cc )٠ ns gt 0 ( produto interno entre a normal em s e o

vetor cv - cc for maior que zero ) o noacute vazio seraacute classificado como ldquoforardquo

Senatildeo seraacute classificado como ldquodentrordquo

Em geral os noacutes ldquocontornordquo satildeo subdivididos em trecircs partes uma que estaacute

fora do modelo uma que estaacute dentro do modelo e uma terceira que conteacutem os

surfels Esta subdivisatildeo eacute feita por meio da criaccedilatildeo de dois planos paralelos que

Operaccedilotildees Booleanas com Pontos 36

dividem o noacute Para determinar estes planos calcula-se o vetor nm igual agrave

meacutedia das normais dos surfels do noacute nm = sum ns sum ns onde ns eacute a normal de

cada surfel do noacute

Em seguida encontra-se o surfel com maior produto interno entre a sua

normal e a normal meacutedia d1=Max(nm ٠ ns) Este surfel juntamente com a normal

meacutedia define um dos planos Encontra-se tambeacutem o surfel com menor produto

interno entre a sua normal e a normal meacutedia d2=Min(nm ٠ ns) Este surfel

juntamente com a normal meacutedia define o outro plano A Figura 10 mostra a

divisatildeo de um noacute de uma quadtree nas trecircs partes dentro do modelo fora do

modelo e no ldquocontornordquo

Esta subdivisatildeo aplica-se apenas a noacutes que conteacutem surfels cujas direccedilotildees

natildeo variem em mais de 90 graus Caso isso ocorra ele natildeo seraacute subdividido Ou

seja se um noacute possuir dois vetores normais (de dois surfels diferentes) que

formem um acircngulo maior que 90 graus ele natildeo seraacute subdividido

Figura 10 [2] -Divisatildeo de noacute de contorno a parte agrave esquerda estaacute fora do modelo a parte agrave direita estaacute dentro do modelo e a faixa intermediaacuteria conteacutem os surfels

4222 Teste Dentro-Fora

O Teste Dentro-Fora faz a classificaccedilatildeo dos surfels de um modelo como

ldquodentrordquo ou ldquoforardquo de outro modelo Portanto aplicaremos este mesmo teste duas

vezes uma para o modelo S1 em relaccedilatildeo ao modelo S2 e outra para S2 em

relaccedilatildeo a S1 Vamos mostrar o teste Dentro-Fora para o caso da classificaccedilatildeo

dos surfels do modelo S1 em relaccedilatildeo a S2

Operaccedilotildees Booleanas com Pontos 37

No item anterior foram criadas duas octrees uma para o modelo S1 e

outra para o modelo S2 Chamemos de A e B as octrees de S1 e S2

respectivamente Para classificar S1 em relaccedilatildeo a S2 inicialmente eacute feita uma

avaliaccedilatildeo da posiccedilatildeo de A em relaccedilatildeo a B A e B podem estar nas seguintes

situaccedilotildees

- A natildeo intersecta B

- A intersecta apenas noacutes ldquoforardquo de B

- A intersecta apenas noacutes ldquodentrordquo de B

- A intersecta noacutes ldquoforardquo e noacutes ldquodentrordquo de B

Para testar estas situaccedilotildees os noacutes satildeo aumentados de rmax o raio do

maior surfel do modelo soacutelido Isto eacute feito para compensar o fato de que o surfel

natildeo eacute apenas um ponto mas sim considerado como um disco

No primeiro e no segundo caso todos os surfels de A satildeo classificados

como ldquoforardquo No terceiro caso todos os surfels de A satildeo classificados como

ldquodentrordquo

No quarto caso temos que percorrer a octree A Comeccedilando pelo noacute raiz

percorre-se os filhos deste noacute Para cada filho os quatro testes acima satildeo feitos

Se o noacute filho encontra-se em um dos trecircs primeiros casos a classificaccedilatildeo eacute dada

como foi citada acima Se um filho estaacute no quarto caso e natildeo eacute um noacute folha

repete-se recursivamente o mesmo procedimento para seus filhos ateacute encontrar-

se um noacute folha Para um noacute que estaacute no quarto caso e eacute folha percorre-se a lista

de surfels que este noacute conteacutem classificando cada um destes surfels Seja sa um

surfel desta lista Para este caso percorre-se a octree B para classificar sa

Primeiramente encontramos o noacute de B que conteacutem sa Se este noacute de B foi

dividido testa-se de acordo com esta divisatildeo do noacute se o surfel sa estaacute na parte

do noacute que estaacute dentro do modelo ele eacute classificado como ldquodentrordquo se sa estaacute na

parte que estaacute fora do modelo ele eacute classificado como ldquoforardquo se sa estaacute na parte

intermediaacuteria ou se o noacute de B natildeo foi subdividido em planos encontra-se sb que

eacute o surfel pertencente a este noacute de B que estaacute mais proacuteximo de sa sa seraacute

entatildeo classificado de acordo com sb Se ( sa - sb )٠ nb gt 0 sa eacute classificado

como ldquoforardquo senatildeo eacute classificado como ldquodentrordquo Se os discos de sb e sa se

intersectam sa eacute marcado como interseccedilatildeo Para encontrar sb o algoritmo

implementa o meacutetodo TINN ndash Triangle Inequality Nearest Neighbour [19]

Operaccedilotildees Booleanas com Pontos 38

4223 Tratamento da interseccedilatildeo

Os surfels de A que intersectam surfels de B satildeo classificados como

ldquointerseccedilatildeordquo Se eles natildeo forem incluiacutedos no modelo resultado o soacutelido resultado

teraacute buracos Se eles forem incluiacutedos sem algum tratamento eles natildeo

representaratildeo adequadamente a regiatildeo Em geral o surfel sa (um surfel

ldquointerseccedilatildeordquo de A) eacute dividido em dois pelo plano que conteacutem o surfel sb (surfel de

B que sa intersecta) uma parte que estaacute fora de B e outra que estaacute dentro de B

Dependendo da operaccedilatildeo que estaacute sendo realizada vamos querer manter uma

destas partes do surfel sa no modelo resultado Seja xa a posiccedilatildeo do surfel sa e o

surfel sa uma circunferecircncia de centro xa e raio ra igual ao raio de alcance de sa

O plano que conteacutem o surfel sb define uma corda desta circunferecircncia como

mostra a Figura 11 O surfel sa seraacute substituiacutedo por um surfel menor que

ultrapassa esta corda de uma distacircncia e definida pelo usuaacuterio Para cobrir

completamente a interseccedilatildeo seratildeo adicionados surfels menores que cruzam a

corda de interseccedilatildeo

Figura 11 -Interseccedilatildeo do surfel s e do plano que passa pelo surfel t o surfel mais proacuteximo a s O surfel s eacute substituiacutedo por trecircs surfels menores

Operaccedilotildees Booleanas com Pontos 39

O tratamento de interseccedilatildeo proposto por Adams e Dutreacute [2] natildeo soacute evita

os buracos mas tambeacutem cria uma forma de renderizaccedilatildeo de arestas vivas A

colocaccedilatildeo de vaacuterios pequenos surfels na regiatildeo da interseccedilatildeo permite esta

correta renderizaccedilatildeo das ldquoarestas vivasrdquo Desta forma o problema das arestas

vivas eacute resolvido na modelagem (Figura 12) A vantagem de se resolver o caso

na modelagem eacute que natildeo eacute necessaacuterio fazer um tratamento especial na

renderizaccedilatildeo para que mostre esta aresta viva Diferente do tratamento feito

em Pauly (seccedilatildeo 431) que resolve esta questatildeo em tempo de renderizaccedilatildeo

Aleacutem disso o tratamento resolve alguns casos onde a Regra 2 poderia falhar

(veja em Validade da Regra 2-seccedilatildeo 44)

Figura 12 [2] -Agrave direita eacute mostrado o resultado do tratamento de interseccedilatildeo para o caso de Arestas Vivas do objeto agrave esquerda

43 Meacutetodo de Pauly

O meacutetodo aplica-se a objetos soacutelidos e natildeo soacutelidos Os modelos podem ser

obtidos a partir de diferentes entradas como nuvem de pontos irregulares ou por

meio de scanners 3D Cria um modelo hiacutebrido destes objetos usa o modelo por

pontos juntamente com a representaccedilatildeo impliacutecita Moving Least Squares - MLS

[18] Realiza operaccedilotildees booleanas com pontos e utiliza adicionalmente MLS

para alguns casos de classificaccedilatildeo de surfels e no tratamento de interseccedilatildeo A

seguir apresentamos as caracteriacutesticas do modelo por pontos deste meacutetodo e o

algoritmo que realiza as operaccedilotildees

Operaccedilotildees Booleanas com Pontos 40

431 Modelo em Pauly

O modelo eacute uma estrutura hiacutebrida de pontos com a representaccedilatildeo impliacutecita

Moving Least Squares - MLS [18] Esta estrutura eacute usada para fazer operaccedilotildees

booleanas e tambeacutem operaccedilotildees de free-form (natildeo abordadas nesta

dissertaccedilatildeo) Para operaccedilotildees booleanas a representaccedilatildeo MLS permite que a

curva de interseccedilatildeo entre os modelos seja reconstruiacuteda e surfels sejam

colocados nesta curva e em alguns casos de classificaccedilatildeo de surfels mostrados

na seccedilatildeo 432 Para este modelo natildeo existem restriccedilotildees quanto agrave forma do

objeto

Os surfels contecircm informaccedilotildees sobre sua posiccedilatildeo e sua normal Aleacutem

disso surfels podem conter informaccedilotildees adicionais como textura cor

propriedades de materiais

A distribuiccedilatildeo dos surfels eacute natildeo-uniforme e a amostragem eacute

aproximadamente adequada (Veja seccedilatildeo 44)

432 Algoritmo de Operaccedilotildees Booleanas

O algoritmo classifica surfels de um modelo como ldquodentrordquo ou ldquoforardquo de

outro modelo Antes de colocarmos como eacute feita esta classificaccedilatildeo devemos

acrescentar que Pauly estende esta classificaccedilatildeo para modelos que natildeo satildeo

soacutelidos Ou seja mesmo um modelo natildeo soacutelido divide o espaccedilo da cena (espaccedilo

em que se encontra o modelo) em dois sub-espaccedilos dentro ou fora do modelo

Pauly faz esta subdivisatildeo da seguinte forma

Como a superfiacutecie que determina o modelo eacute orientada (conteacutem vetores

normais agrave superfiacutecie que apontam para ldquoforardquo do modelo) Pauly considera que

um modelo natildeo soacutelido divide o espaccedilo em dois sub-espaccedilos um ldquoforardquo do

modelo (os vetores normais apontam para este sub-espaccedilo) e um que estaacute

ldquodentrordquo do modelo (os vetores normais apontam para direccedilatildeo oposta a este sub-

espaccedilo) Por exemplo um plano eacute representado como um conjunto de surfels

contidos num determinado espaccedilo geomeacutetrico plano π Cada surfel conteacutem um

vetor normal direcionado Este modelo divide entatildeo o espaccedilo em dois sub-

espaccedilos o sub-espaccedilo que eacute apontado por estes surfels (considerado ldquoforardquo do

modelo) e o sub-espaccedilo que estaacute na direccedilatildeo oposta (considerado ldquodentrordquo do

modelo) Desta forma ele aplica as classificaccedilotildees de ldquodentrordquo e ldquoforardquo de um

modelo tambeacutem a modelos natildeo soacutelidos A partir desta consideraccedilatildeo as

Operaccedilotildees Booleanas com Pontos 41

operaccedilotildees booleanas satildeo realizadas com os modelos natildeo soacutelidos da mesma

forma que com os modelos soacutelidos

Para determinar esta classificaccedilatildeo (dentro ou fora do modelo) Pauly utiliza

a Regra 2 Para pesquisa do surfel mais proacuteximo o meacutetodo usa a estrutura Kd-

tree [16] e tambeacutem o algoritmo ANN [16] No entanto o meacutetodo apresenta uma

restriccedilatildeo da Regra 2 ela soacute deve ser usada para classificaccedilotildees de pontos x se

a distacircncia x-p for maior que o espaccedilamento da amostragem local ηp em p

Este espaccedilamento da amostragem local ηp em p eacute um caacutelculo aproximado da

distacircncia meacutedia entre os surfels vizinhos a p Se x estaacute muito proacuteximo agrave

superfiacutecie a classificaccedilatildeo pode falhar Neste caso ele calcula o ponto exato de

S mais proacuteximo a x usando a projeccedilatildeo MLS (ldquoMoving Least Squaresrdquo)

Por questotildees de melhoria de desempenho utiliza-se o fato de que sendo

Ωp (x) a classificaccedilatildeo do ponto x em relaccedilatildeo agrave amostragem P tem-se que Ωp (x)

= Ωp (xrsquo) para todos os pontos de xrsquo que estatildeo dentro da esfera de centro x e

raio igual a x-p - ηp (onde p eacute o surfel mais proacuteximo e ηp eacute o espaccedilamento

local da amostragem em p acima citado) Ou seja sendo x um ponto qualquer p

o surfel mais proacuteximo a x ηp eacute o espaccedilamento local da amostragem em p se

desenharmos uma esfera com centro x e raio igual a x-p - ηp temos que

todos os pontos xrsquo que estatildeo dentro da esfera teratildeo a mesma classificaccedilatildeo de x

Desta forma o nuacutemero de vezes que a classificaccedilatildeo eacute feita (pesquisando-se o

surfel mais proacuteximo ao ponto e usando a Regra 2) diminui em ateacute 90 Assim

em geral a classificaccedilatildeo de um surfel eacute obtida a partir do seu surfel vizinho

Dados

S1 a superfiacutecie MLS de contorno que define o modelo A

S2 a superfiacutecie MLS de contorno que define o modelo B

P1 o conjunto de surfels que representa a superfiacutecie S1

P2 o conjunto de surfels que representa a superfiacutecie S2

Ωp1 (x) a classificaccedilatildeo do ponto p em relaccedilatildeo a uma amostragem P1

Q1 o subconjunto de P1 que vai compor o resultado

Ωp2 (x) a classificaccedilatildeo do ponto p em relaccedilatildeo a uma amostragem P2

Q2 o subconjunto de P2 que vai compor o resultado

Os conjuntos Q1 e Q2 satildeo obtidos por meio da Tabela 1 mostrada abaixo

Operaccedilotildees Booleanas com Pontos 42

Tabela 1 Classificaccedilatildeo para operaccedilotildees booleanas

Para o tratamento de interseccedilatildeo neste meacutetodo satildeo computados pontos

que caem exatamente na curva de interseccedilatildeo e estes satildeo acrescentados ao

modelo resultado Estes pontos satildeo determinados de forma que a densidade da

amostragem vai crescendo agrave medida que os surfels se aproximam da curva de

interseccedilatildeo e convergem para este ponto de interseccedilatildeo como mostra a Figura

13

(a) (b) (c)

Figura 13 - Os novos surfels satildeo colocados exatamente na curva de interseccedilatildeo

e convergem para o ponto de interseccedilatildeo

A Figura 14 mostra o processo de encontrar os surfels que caem nesta

curva de interseccedilatildeo Inicialmente satildeo encontrados todos os pontos de Q1 e Q2

que estatildeo proacuteximos agrave curva de interseccedilatildeo por meio da funccedilatildeo de distacircncia do

operador de projeccedilatildeo MLS Em seguida procura-se todos os pares mais

proacuteximos (q1 є Q1 q2 є Q2 ) e computa-se o ponto q na curva de interseccedilatildeo da

seguinte forma (veja a Figura 14)Seja r o ponto na linha de interseccedilatildeo dos dois

planos tangentes em q1 e q2 e que estaacute mais proacuteximo a estes dois pontos isto eacute

que minimiza a distacircncia ||r-q1|| + ||r-q2|| r eacute a primeira aproximaccedilatildeo de q e agora

pode ser projetado sobre S1 e S2 para obter dois novos pontos de partida q1rsquo e q2

rsquo

para a iteraccedilatildeo Este procedimento pode ser repetido iterativamente ateacute que os

pontos q1 e q2 convirjam ao ponto q na curva de interseccedilatildeo Normalmente este

processo requer menos de trecircs iteraccedilotildees

Operaccedilotildees Booleanas com Pontos 43

(a) (b)

(c)

Figura 14 (a) Suponhamos a reta que eacute a interseccedilatildeo do plano tangente a S1 em q1 e o

plano tangente a S2 em q2 O ponto r eacute o ponto desta reta que estaacute mais proacuteximo a q1 e

q2 (b) r eacute projetado sobre S1 e S2 obtendo-se q1acute e q2acute dois novos pontos de partida

para nova iteraccedilatildeo (c) A nova iteraccedilatildeo gera r que eacute uma aproximaccedilatildeo melhor de q

Pauly faz o tratamento de arestas vivas em tempo de renderizaccedilatildeo Ele

faz uma alteraccedilatildeo no renderizador Marca os surfels de interseccedilatildeo e ao

renderizaacute-los satildeo cortados para gerar uma aresta viva

44 Validade da Regra 2

Os dois meacutetodos analisados nesta dissertaccedilatildeo utilizam a seguinte regra

para a classificaccedilatildeo de um surfel

Regra 2 dado um volume V determinado por uma superfiacutecie de contorno

S uma amostragem P da superfiacutecie S um ponto x qualquer um ponto p є P que

eacute a amostra mais proacutexima a x um vetor ny normal a S em p e orientado para

fora de S temos que (x ndash p) np gt 0 x notinV

Em [16] eacute colocado que esta regra eacute tirada da seguinte propriedade da

geometria diferencial (aqui chamada Propriedade 1)

Propriedade 1 Dado um volume V determinado por uma superfiacutecie de

contorno S contiacutenua e duplamente diferenciaacutevel um ponto x qualquer um ponto

Operaccedilotildees Booleanas com Pontos 44

y є S que eacute o ponto de S mais proacuteximo a x um vetor ny normal a S em y e

orientado para fora de S temos que (x ndash y) ny gt 0 x notinV

A Figura 15 ilustra esta propriedade

Figura 15 Para verificar se o ponto x estaacute fora de um contorno C encontra-se o ponto y

de C Se o produto interno entre a normal em y e o vetor que liga y a x for maior que

zero entatildeo x estaacute fora de C senatildeo estaacute dentro de C

Pauly assume que tendo uma amostragem P da superfiacutecie S podemos

usar a Propriedade 1 substituindo y por p o surfel mais proacuteximo ao ponto x (x ndash

p) np gt 0 x notinV (Regra 2) Esta amostragem P em seu trabalho eacute

(aproximadamente) uma ldquoamostragem adequadardquo Tambeacutem seu tratamento de

interseccedilatildeo cria uma aproximaccedilatildeo dela (seccedilatildeo 43) Empiricamente a

ldquodiscretizaccedilatildeo da propriedaderdquo eacute vaacutelida a partir desta suposiccedilatildeo Mas isso natildeo foi

demonstrado teoricamente em seu trabalho

Pauly coloca em [16] que natildeo existe ainda uma teoria matemaacutetica rigorosa

de amostragem anaacuteloga a teoria de Fourier para superfiacutecies discretas

A melhor aproximaccedilatildeo teoacuterica para esta aacuterea eacute o uso do Eixo Medial que

foi colocado em [10] Vamos descrever este trabalho brevemente nesta seccedilatildeo

Este trabalho apresenta um algoritmo de reconstruccedilatildeo de superfiacutecie que parte de

uma amostragem adequada (abaixo definida) de pontos e obteacutem uma malha

que eacute topologicamente equivalente agrave superfiacutecie do objeto e agrave medida que a

densidade da amostragem cresce a saiacuteda converge para esta superfiacutecie

Para definir amostragem adequada o trabalho parte do conceito de Eixo

Medial

Operaccedilotildees Booleanas com Pontos 45

ldquoEixo Medialrdquo de uma superfiacutecie 2D posicionada no R3 eacute o conjunto

(fechado) de pontos pi para os quais buscando-se o ponto da superfiacutecie que

estaacute mais proacuteximo a pi mais de um ponto pertencentes a esta superfiacutecie satildeo

encontrados A Figura 16 abaixo ilustra o Eixo Medial em 2D

Figura 16 [10] As curvas de cor mais clara satildeo o Eixo Medial da curva em preto

Em duas dimensotildees os veacutertices de Voronoi de uma amostragem densa

aproximam o ldquoEixo Medialrdquo da amostragem (mas esta propriedade natildeo se

estende a 3D) A Figura 17 mostra o Eixo Medial em 3D

Figura 17 [10] Em 3D geralmente o Eixo Medial eacute uma superfiacutecie 2D (em cor mais

clara) Aqui o quadrado eacute o Eixo Medial da superfiacutecie transparente que o contorna

Podemos definir agora a amostragem adequada da seguinte forma

Supondo uma superfiacutecie suave que quer dizer uma 2-manifold duplamente

diferenciaacutevel posicionada no R3 uma ldquoamostragem adequadardquo desta superfiacutecie eacute

aquela na qual a densidade da amostragem eacute (pelo menos) inversamente

proporcional agrave distacircncia ao ldquoEixo Medialrdquo A Figura 18 mostra uma amostragem

adequada

Operaccedilotildees Booleanas com Pontos 46

Figura 18 [10] A figura mostra o diagrama de Voronoi de uma amostragem de pontos S

Da mesma forma que o a amostragem aproxima a curva os veacutertices de Voronoi

aproximam o Eixo Medial

Na praacutetica na reconstruccedilatildeo da superfiacutecie uma aproximaccedilatildeo deste ldquoEixo

Medialrdquo eacute computada (devido agrave dificuldade de computaacute-lo exatamente e em

alguns casos ateacute impossibilidade)

Melhorias Propostas 47

5 Melhorias Propostas

No capiacutetulo 4 apresentamos dois meacutetodos que realizam operaccedilotildees

booleanas em modelos por pontos o meacutetodo de Adams e Dutreacute [2] e o meacutetodo

de Pauly[3] Para esta dissertaccedilatildeo usamos o meacutetodo de Adams e Dutreacute [2] e

propomos as seguintes melhorias

- Alteramos o momento em que eacute feita a classificaccedilatildeo da octree Fazemos

esta classificaccedilatildeo durante a sua criaccedilatildeo Os noacutes filhos de um noacute pai P qualquer

satildeo classificados logo apoacutes a criaccedilatildeo de todos estes filhos de P

independentemente do restante da octree ter sido criada Isso pode ser feito

porque a octree eacute construiacuteda na ordem raiz-esquerda-direita (preorder

traversal) e portanto apoacutes todos os filhos de um noacute pai serem criados a parte

necessaacuteria da octree para a classificaccedilatildeo destes filhos jaacute estaacute criada

- A classificaccedilatildeo da octree eacute otimizada classificando-se os cantos dos seus

noacutes como dentro ou fora do modelo Na classificaccedilatildeo de um noacute n1 a partir de seu

vizinho n2 se os cantos que satildeo comuns a n1 e n2 tiverem a mesma

classificaccedilatildeo esta seraacute dada ao noacute Assim diminuiacutemos o nuacutemero de pesquisas

pelo surfel mais proacuteximo que eacute a parte criacutetica da classificaccedilatildeo dos noacutes da octree

em termos de tempo de processamento

- Acrescentamos um valor miacutenimo (maior que zero) para o nuacutemero de

surfels contidos em um noacute que eacute uma das condiccedilotildees de parada na criaccedilatildeo da

octree Verificamos que desta forma diminui-se a chance de erro na classificaccedilatildeo

de partes criacuteticas como ldquoarestas vivasrdquo

Uma comparaccedilatildeo entre a nossa implementaccedilatildeo e a de Pauly tambeacutem seraacute

feita no capiacutetulo 6

51 Descriccedilatildeo do algoritmo

O algoritmo implementado para esta dissertaccedilatildeo baseado no meacutetodo de

Adams e Dutreacute [2] pode ser dividido nas seguintes partes Criaccedilatildeo e

classificaccedilatildeo de uma octree para cada modelo Teste DentroFora Criaccedilatildeo do

modelo resultado Natildeo foi implementado tratamento especial algum de

interseccedilatildeo para o nosso plugin As proacuteximas seccedilotildees apresentam estas partes

Melhorias Propostas 48

511 Criaccedilatildeo e classificaccedilatildeo de uma octree para cada modelo

As ideacuteias do algoritmo satildeo aqui ilustradas em 2D mas a extensatildeo delas

para 3D eacute feita facilmente

Para cada modelo a octree eacute criada e classificada da seguinte forma

Figura 19-Quadtree classificada Os noacutes mais escuros estatildeo fora do modelo os mais claros dentro e os em tom intermediaacuterio satildeo noacutes de contorno

Gera-se uma ldquocaixa envolventerdquo do modelo contendo todos os surfels e

cria-se o noacute raiz da octree que corresponde a esta ldquocaixa envolventerdquo Este noacute

raiz eacute subdividido em oito filhos e seus surfels satildeo distribuiacutedos entre eles Ao

inveacutes de testarmos os valores de xy e z para cada surfel a fim de determinar

para qual filho ele iraacute utilizamos listas auxiliares Primeiro os surfels satildeo

subdivididos em dois grupos pelos valores de x e armazenados em uma lista

auxiliar Em seguida cada uma das listas eacute subdividida pelo valor de y e as

quatro listas obtidas seratildeo subdivididas pelo valor de z Ao final teremos 8 listas

de surfels cada uma delas pertencente a um filho

Cada noacute seraacute entatildeo novamente subdividido enquanto contiver um nuacutemero

de surfels gt nmin (valor preacute-definido) ou enquanto a profundidade da aacutervore lt pmax

(valor preacute-definido) Na figura 19 pmax = 3 e nmin = 3

Melhorias Propostas 49

Figura 20-O noacute cheio eacute dividido em trecircs partes agrave esquerda a regiatildeo estaacute dentro do modelo agrave direita estaacute fora e entre as duas linhas que dividem o noacute estaacute a regiatildeo que conteacutem os surfels

Os noacutes cheios recebem um tratamento especial Eles satildeo subdivididos em

trecircs partes da seguinte forma uma que estaacute fora do modelo outra que estaacute

dentro e uma que conteacutem os surfels Esta subdivisatildeo eacute feita por meio da criaccedilatildeo

de dois planos paralelos que dividem o noacute Para determinar estes planos

calcula-se o vetor nm igual agrave meacutedia das normais dos surfels do noacute nm = sum ns

sum ns onde ns eacute a normal de cada surfel do noacute Em seguida encontra-se o

surfel com maior produto interno entre a sua normal e a normal meacutedia

d1=Max(nm ٠ ns) Este surfel juntamente com a normal meacutedia define um dos

planos Encontra-se tambeacutem o surfel com menor produto interno entre a sua

normal e a normal meacutedia d2=Min (nm ٠ ns) Este surfel juntamente com a normal

meacutedia define o outro plano (Figura 20) Se o noacute conteacutem surfels de superfiacutecies de

orientaccedilotildees diferentes ele natildeo seraacute subdividido ou seja os planos coincidiratildeo

com os planos que delimitam o proacuteprio noacute Este teste foi implementado da

seguinte forma escolhe-se um surfel qualquer do noacute Calcula-se o produto

interno entre a normal deste surfel e as outras normais dos outros surfels deste

noacute Se algum produto interno for menor que zero este noacute natildeo seraacute subdividido

Apoacutes a etapa de subdivisatildeo classificam-se os oito cantos deste noacute como

dentro ou fora do modelo por meio da classificaccedilatildeo de um ponto que

descreveremos na sub-seccedilatildeo 5111

Melhorias Propostas 50

a b

c d

Figura 21-O noacute a eacute classificado pelo noacute c o noacute d tambeacutem eacute classificado pelo noacute c a classificaccedilatildeo do noacute a eacute propagada para o noacute b

Jaacute os noacutes vazios da octree seratildeo classificados como ldquodentrordquo ou ldquoforardquo do

modelo da seguinte forma cada noacute folha vazio eacute classificado a partir de um de

seus irmatildeos vizinhos adjacentes Se ele possuir um vizinho adjacente cheio ele

seraacute classificado por este vizinho se natildeo possuir os vizinhos adjacentes seratildeo

classificados primeiro e ele teraacute esta mesma classificaccedilatildeo (Figura 21) Como tem

que existir sempre pelo menos um noacute cheio entre os filhos de um noacute pai entatildeo

sempre esta classificaccedilatildeo poderaacute ser feita Com a classificaccedilatildeo de todos os

filhos tem-se tambeacutem a classificaccedilatildeo dos cantos do noacute pai

Mf03c003fmx a b

Figura 22-Os cantos a e b do noacute cheio possuem a mesma classificaccedilatildeo fora do modelo Esta classificaccedilatildeo foi dada ao noacute vazio adjacente

Melhorias Propostas 51

Para classificar um noacute vazio por meio de um noacute cheio verificam-se os

cantos comuns destes dois noacutes se todos os cantos tiverem a mesma

classificaccedilatildeo esta seraacute dada ao noacute vazio (Figura 22) Se houver classificaccedilotildees

diferentes escolhe-se o surfel do noacute cheio mais proacuteximo ao noacute vazio faz-se o

produto interno entre a normal deste surfel e o vetor que liga o centro do noacute

cheio ao centro do noacute vazio (ou o vetor que liga o surfel ao centro do noacute vazio)

Se o produto interno for maior que zero o noacute eacute classificado como ldquoforardquo senatildeo eacute

classificado como ldquodentrordquo Para encontrar o surfel (pertencente a um noacute cheio)

mais proacuteximo ao noacute vazio existem dois casos

- O noacute cheio eacute folha percorre-se toda a lista de surfels e escolhe o surfel

mais proacuteximo da fronteira entre o noacute cheio e o vazio

- O noacute cheio natildeo eacute um noacute folha percorrem-se os filhos do noacute cheio ou seja

esta pesquisa eacute feita descendo na octree a partir do noacute cheio procurando o

surfel mais proacuteximo agrave fronteira do pai com o noacute vazio a ser classificado

Classificando o centro do noacute vazio todo o noacute deve ter a mesma

classificaccedilatildeo pois este noacute natildeo conteacutem surfels Para encontrar o surfel do noacute

vazio mais proacuteximo da fronteira entre o noacute cheio e o vazio basta testar o valor da

coordenada se a fronteira eacute o lado direito do noacute cheio escolhe-se o surfel com

maior coordenada lsquoxrsquo se eacute o lado esquerdo escolhe-se o surfel com menor lsquoxrsquo

se lado superior surfel com maior lsquoyrsquo etc A seguir apresentamos a classificaccedilatildeo

de um ponto qualquer pertencente a um noacute cheio

Figura 23- Quadtree classificada

Melhorias Propostas 52

5111 Classificaccedilatildeo de um ponto de um noacute cheio

Figura 24 [2] A normal n eacute a normal meacutedia e os surfels s1 e s2 juntamente com a normal

n definem as retas que dividem o noacute O ponto a estaacute fora do modelo e o ponto b estaacute

dentro do modelo

Para um ponto localizado dentro do noacute faz-se o seguinte teste se o noacute foi

dividido testa-se de acordo com a divisatildeo do noacute se o ponto estaacute na parte do noacute

que estaacute dentro do modelo ele eacute classificado como ldquodentrordquo se o ponto estaacute na

parte que estaacute fora do modelo ele eacute classificado como ldquoforardquo (Figura 24) se o

ponto estaacute na parte que conteacutem os surfels encontra-se o surfel s pertencente ao

noacute mais proacuteximo do ponto e o classifica de acordo com s seja ns a normal em s

cs a coordenada de s cp a coordenada do ponto Se (cp - cs )٠ ns gt 0 o ponto

seraacute classificado como ldquoforardquo Senatildeo seraacute classificado como ldquodentrordquo

Se o noacute natildeo foi dividido em planos esta classificaccedilatildeo a partir do surfel

mais proacuteximo seraacute sempre feita

512 Teste DentroFora

Melhorias Propostas 53

Figura 25-Duas circunferecircncias e suas quadtrees correspondentes

O Teste DentroFora classifica os surfels de um modelo como dentro ou

fora de outro modelo ou na sua interseccedilatildeo Este teste foi aqui implementado

exatamente como foi proposto em Adams e Dutreacute [2] exceto que natildeo foi

implementado o meacutetodo TINN - Triangle Inequality Nearest Neighbour [19]

Cada octree eacute percorrida verificando-se se os seus noacutes ou surfels estatildeo dentro

fora ou no contorno do outro modelo (Figura 25) Sejam A e B duas octrees e

queremos classificar a octree A As duas octrees (AB) satildeo percorridas partindo

da raiz

Para cada noacute de A existem quatro casos (Figura 26) Para testar estas

situaccedilotildees os boxes dos noacutes satildeo aumentados de rmax o raio do maior surfel do

modelo Isto eacute feito para compensar o fato de que o surfel natildeo eacute apenas um

ponto mas sim considerado como um disco

Os quatro casos satildeo

Se o noacute de A natildeo intersecta B entatildeo todos os surfels deste noacute satildeo

classificados como fora

Se o noacute de A intersecta apenas noacutes de B que estatildeo fora do modelo

todos os surfels deste noacute satildeo fora

Se o noacute de A intersecta apenas noacutes de B que estatildeo dentro do modelo

todos os surfels deste noacute satildeo dentro

Melhorias Propostas 54

Se o noacute de A intersecta noacutes de B que estatildeo dentro e tambeacutem noacutes de B

que estatildeo fora testa-se se este noacute de A eacute ou natildeo folha Se natildeo for folha

percorre-se os filhos deste noacute de A ateacute encontrar um noacute folha cheio que

intersecta B Para cada surfel sa deste noacute folha de A encontra-se o surfel de B

mais proacuteximo e classifica-se a coordenada de sa da forma apresentada na seccedilatildeo

5111 Seja sb o surfel usado na classificaccedilatildeo de sa Se os discos de sb e sa

se intersectam sa eacute classificado como ldquointerseccedilatildeordquo

(a) (b)

(c) (d)

Figura 26- a modelos natildeo se intersectam b modelo intersecta noacutes fora c modelo intersecta apenas noacutes dentro d modelo intersecta noacutes dentro e noacutes fora

513 Criaccedilatildeo do modelo resultado

Um novo modelo eacute criado com os seguintes surfels (de acordo com a

operaccedilatildeo booleana escolhida pelo usuaacuterio - veja Regra 1 da seccedilatildeo 41)

Uniatildeo - surfels de A que estatildeo fora de B + surfels de B que estatildeo fora de A

Melhorias Propostas 55

Interseccedilatildeo - surfels de A que estatildeo dentro de B + surfels de B que estatildeo

dentro de A

Diferenccedila A-B - surfels de A que estatildeo fora de B + surfels de B que estatildeo

dentro de A (com orientaccedilatildeo invertida)

Como natildeo foi implementado tratamento especial algum de interseccedilatildeo para

o nosso plugin os surfels que se intersectam satildeo mantidos no modelo resultado

final sem modificaccedilotildees

Descrito o algoritmo vejamos a seguir a sua implementaccedilatildeo

52 Implementaccedilatildeo

Este algoritmo foi implementado na forma de um plugin para o software

PointShop 3D [11] Este plugin foi desenvolvido na linguagem C e no sistema

operacional Windows

A escolha deste tipo de implementaccedilatildeo permitiu-nos usar o software

PointShop para os testes do algoritmo Estes testes foram feitos com os modelos

disponibilizados para o PointShop [11] Nesta seccedilatildeo apresentaremos o software

PointShop e as principais estruturas de dados usadas em nosso plugin

O Pointshop eacute um software aberto com seu coacutedigo disponiacutevel e preparado

para trabalhar com plugins Eacute um software de ediccedilatildeo de modelos 3D por pontos

Ele permite aleacutem de visualizar o modelo alterar as suas caracteriacutesticas como

cor brilho e fazer mapeamento de textura iluminaccedilatildeo filtragem (Figura 27)

Melhorias Propostas 56

Figura 27-Software PointShop 3D com dois modelos carregados na sua cena

Aleacutem disso pode-se criar uma cena com vaacuterios modelos e visualizaacute-los de

qualquer ponto de vista Implementa o virtual trackball para rotacionaacute-los e

transladaacute-los Usa uma iluminaccedilatildeo simples direcional A sua arquitetura eacute

extensiacutevel permite que o usuaacuterio adicione seus proacuteprios componentes ao

sistema Possui trecircs tipos de componentes

ldquoToolsrdquo fornece funcionalidades para ediccedilatildeo interativa de superfiacutecie Satildeo

disponibilizados na ldquotoolbarrdquo

Plugins fornece funcionalidades para processar em um soacute passo

modelos ou partes deles selecionadas Satildeo disponibilizados no menu ldquoPluginsrdquo

Renderes fornece funcionalidades de display para os modelos

Para esta dissertaccedilatildeo foi escolhida a construccedilatildeo do componente Plugin

por adequar-se agrave nossa proposta e ser a mais simples de ser construiacuteda O

PointShop [11] jaacute conteacutem uma tool que executa operaccedilotildees booleanas e

deformaccedilatildeo free-form sobre os modelos carregados na cena usando o meacutetodo

de Pauly [3] apresentado no capiacutetulo 4 O nosso plugin Operaccedilotildees Booleanas

implementa o algoritmo descrito na seccedilatildeo anterior baseado na proposta de

Melhorias Propostas 57

Adams e Dutreacute [2] Uma comparaccedilatildeo entre o nosso plugin e a tool de Pauly [3] eacute

feita no capiacutetulo 6

Figura 28-Menu do PointShop com o plugin e as opccedilotildees para operaccedilotildees booleanas

Para se executar o plugin o usuaacuterio precisa carregar dois modelos na

cena do PointShop acionar o plugin informando a operaccedilatildeo que seraacute executada

O plugin executaraacute o algoritmo acima proposto e carregaraacute o resultado na cena

do Pointshop retirando os modelos anteriores

521 Estruturas de Dados

Como vimos o software PointShop [11] trabalha com modelos por pontos

Um modelo deste software descrito na seccedilatildeo 42 conteacutem todas as informaccedilotildees

que o algoritmo proposto em Bart [2] necessita Abaixo relacionamos as

Melhorias Propostas 58

principais estruturas de dados do PointShop usadas no plugin e as principais

estruturas de dados do nosso plugin

As principais classes do PointShop usadas no plugin satildeo

Classe Scene

Classe Objects

Classe SurfelColections

Classe Surfel

Classe StatusBar

Classe Transformer

A hierarquia de dados eacute a seguinte a Scene conteacutem vaacuterios Objects os

quais conteacutem SurfelColections Cada SurfelColections conteacutem Surfels que

suportam uma ou mais propriedades tais como cor difusa cor especular

Classe Scene Classe que representa uma cena que conteacutem modelos

Classe Object Um modelo eacute representado pela classe Object que

conteacutem uma SurfelCollection e as matrizes de transformaccedilatildeo para rotaccedilatildeo

escala e translaccedilatildeo Cada Object eacute identificado pelo seu nome que eacute uacutenico na

Scene O meacutetodo getUniqueName retorna um nome uacutenico Cada Object tem sua

proacutepria matriz de transformaccedilatildeo que pode ser modificada com setRotation

rotate setPosition translate setScale e scale Objects podem ser copiados com

copy Objects consiste em um conjunto de surfels os quais podem ser

recuperados pela getSurfelCollection O Object pode ser ativado com

setActiveObject e recuperado com getActiveObject

Objects podem ser adicionados ou removidos com addObject e

removeObject Os Objects podem ser obtidos pela getFirstObject e

getNextObject

Classe SurfelCollection representa o conjunto de surfels de um modelo

Cada surfelcollection consiste em um conjunto de surfels (SurfelInterface) de

tamanho obtido por getNofSurfels Os surfels podem ser recuperados com

getFirstSurfel getCurrentSurfel e getNextSurfel

A SurfelCollection conteacutem um PropertyDescriptor e uma SurfelList

A SurfelList eacute uma lista duplamente encadeada de surfels Possui os

atributos firstSurfel lastSurfel currentSurfel que satildeo ponteiros para uma

SurfelInterface nSurfels que eacute o nuacutemero de Surfels

A SurfelInterface define a API para os surfels que satildeo os menores

elementos que compotildeem um Object Podem ser considerados como pontos com

uma normal que define a orientaccedilatildeo do ciacuterculo (ou elipse) que seraacute desenhado

Melhorias Propostas 59

tatildeo logo o surfel seja renderizado Tem como atributos dois ponteiros (next e

prev) para SurfelInterface

PropertyDescriptor consiste em ateacute 32 valores descrevendo quais as

propriedades a SurfelInterface suporta

Classe Surfel classe que representa o surfel

Classe StatusBar classe que imprime mensagens na tela Os plugins

podem mandar mensagens para o usuaacuterio pela StatusBar

Mensagens texto podem ser impressas com showMessage O progresso

de uma operaccedilatildeo pode ser indicado com setProgress ou resetProgress

Classe Transformer representa a transformaccedilatildeo entre sistemas de

coordenadas Esta classe fornece meacutetodos para transformar pontos e vetores

entre os diferentes sistemas de coordenadas do Pointshop

A seguir apresentamos as principais estruturas de dados do plugin

Operaccedilotildees Booleanas

As principais estruturas de dados do plugin satildeo boundingbox tree no

lista_surfel surfel

Boundingbox conteacutem dois pontos 3D que definem uma caixa que conteacutem

o modelo um ponto com menores coordenadas xy e z e outro ponto com

maiores xyz

Tree representa a octree do modelo Cada registro conteacutem um ponteiro

para um noacute e oito ponteiros para as 8 octrees filhas

No representa um noacute da octree Conteacutem os seguintes dados

- localizaccedilatildeo do noacute que eacute o canto inferior esquerdo do noacute

- lista_surfel (preenchida apenas para noacutes folha cheios)

- quantidade de surfels do noacute

- classificaccedilatildeo do noacute como dentro fora ou contorno

- classificaccedilatildeo do noacute em relaccedilatildeo a outro modelo

- indica se o noacute eacute folha ou natildeo

- vetor que eacute a meacutedia das normais dos surfels do noacute

- ponto que eacute a meacutedia das localizaccedilotildees dos surfels do noacute

- surfel que tem (entre todos os surfels do noacute) o maior produto interno

entre a sua normal e a normal meacutedia

- surfel que tem (entre todos os surfels do noacute) o menor produto interno

entre a sua normal e a normal meacutedia

- produto interno maacuteximo e miacutenimo entre as normais dos surfels do noacute e a

normal meacutedia deste noacute

Melhorias Propostas 60

- indica se o noacute conteacutem surfels com normais em sentido oposto (produto

interno entre elas eacute menor que zero)

- classificaccedilatildeo dos oito cantos do noacute

lista_surfels lista em que cada registro conteacutem um apontador para um

surfel e um apontador para o proacuteximo registro

surfel representa o surfel da octree Conteacutem a classificaccedilatildeo em relaccedilatildeo a

outro modelo e um ponteiro para o surfel do Poinshop

Resultados 61

6 Resultados

Neste capiacutetulo apresentamos os testes realizados com o plugin para o

PointShop implementado para esta dissertaccedilatildeo a comparaccedilatildeo deste plugin com

o plugin de Pauly [3] e a comparaccedilatildeo entre o meacutetodo de Adams e Dutreacute [2] e o

meacutetodo de Pauly [3]

61 Testes

Os testes foram feitos em um PC x86 Family 6 261600 KB de RAM sem

placa graacutefica sistema operacional Windows 2000 O plugin foi implementado na

linguagem C

Os modelos usados para os testes satildeo modelos disponibilizados no

PointShop [11] Vale lembrar que o meacutetodo implementado em nosso plugin eacute

restrito a modelos soacutelidos e portanto foram usados apenas estes modelos

soacutelidos para os testes

O modelo na Figura 29 que eacute um dos modelos disponibilizados no

PointShop [11] foi usado para mostrar o resultado das operaccedilotildees realizadas

pelo plugin implementado nesta dissertaccedilatildeo O modelo Igea eacute um modelo soacutelido

que conteacutem 134345 surfels

Resultados 62

Figura 29-Modelo do PointShop Igea

Para realizar as operaccedilotildees este modelo foi carregado na cena do

PointShop duas vezes e um deles colorido de vermelho As Figuras 30 31 32

mostram o resultado da operaccedilatildeo de uniatildeo interseccedilatildeo e diferenccedila

respectivamente Os nuacutemeros de surfels dos modelos resultantes satildeo mostrados

na Tabela 2

Resultados 63

Figura 30-Resultado da uniatildeo de duas Igeas

Figura 31-Resultado da interseccedilatildeo de duas Igeas

Resultados 64

Figura 32-Resultado da diferenccedila entre duas Igeas

Tabela 2-Nuacutemero de surfels dos modelos resultantes

Observamos que o nuacutemero de surfels dos modelos resultantes estaacute

coerente com as figuras dos seus modelos

Para avaliar o tempo de processamento das operaccedilotildees foram realizados

vaacuterios testes com o objetivo de obter uma meacutedia dos tempos de realizaccedilatildeo de

cada operaccedilatildeo Tambeacutem foram armazenados os tempos da criaccedilatildeo das duas

octrees e da classificaccedilatildeo de todos os surfels dos dois objetos (como dentro ou

fora do outro modelo) Estes testes foram feitos usando o modelo Igea A meacutedia

dos tempos de processamento foi calculada e os resultados satildeo mostrados na

Tabela 3 Verificamos que o maior tempo gasto eacute para criaccedilatildeo das octrees

Verificamos tambeacutem que este resultado apresentado eacute similar ao resultado

verificado empiricamente com o plugin de Pauly [3] Os tempos gastos para

realizar as operaccedilotildees satildeo similares e o maior tempo gasto no plugin de Pauly

tambeacutem eacute para inicializaccedilatildeo de suas estruturas de dados que incluem a kd-tree

Operaccedilatildeo Nuacutemero de surfels do modelo resultado

Uniatildeo 189715

Interseccedilatildeo 72225

Diferenccedila 134552

Resultados 65

Operaccedilatildeo Criaccedilatildeo das

Octrees (seg)

Classificaccedilatildeo

(seg)

Criaccedilatildeo do

resultado (seg)

Total (seg)

Uniatildeo 39375 1324 18925 7154

Interseccedilatildeo 38585 1585 09547 63982

Diferenccedila 399875 1504 1729 729475

Tabela 3- Meacutedia dos tempos de processamento para as operaccedilotildees com duas Igeas

Com o objetivo de expor melhor os resultados deste trabalho

apresentamos abaixo mais um teste das operaccedilotildees booleanas usando o nosso

plugin Os modelos usados para este segundo teste satildeo o Max Planck e o Male

ambos modelos soacutelidos disponibilizados no PointShop Estes modelos satildeo

mostrados nas figura 33 e 34

O primeiro Max Planck conteacutem 52809 surfels

Figura 33-Modelo do PointShop MaxPlanck

O segundo modelo abaixo Male conteacutem 148138 surfels

Resultados 66

Figura 34-Modelo do PointShop Male

As Figuras 353637 mostram o resultado da operaccedilatildeo de uniatildeo interseccedilatildeo

e diferenccedila respectivamente usando os dois modelos acima Podemos observar

pela figura 35 que o resultado da operaccedilatildeo de diferenccedila neste caso gerou um

modelo resultado com trecircs partes desconexas Os nuacutemeros de surfels de cada

modelo resultado satildeo mostrados na Tabela 5

Figura 35- Resultado da Uniatildeo do modelo Male com MaxPlanck

Resultados 67

Figura 36-Resultado da interseccedilatildeo do modelo Male com o MaxPlanck

Figura 37-Resultado da diferenccedila do modelo Male do modelo MaxPlanck

As meacutedias de tempos de processamento foram calculadas da mesma

forma que o primeiro teste com o modelo Igea acima apresentado Os

resultados satildeo mostrados na Tabela 4 Podemos observar que este teste

Resultados 68

apresenta tempos um pouco menores que o teste com o modelo Igea Isto se

deve ao fato de que o modelo MaxPlanck ser significativamente menor que o

modelo Igea MaxPlanck possui 52809 surfels e Igea conteacutem 134345 surfels

Operaccedilatildeo Criaccedilatildeo das

Octrees (seg)

Classificaccedilatildeo

(seg)

Criaccedilatildeo do

resultado (seg)

Total

(seg)

Uniatildeo 3012 1254 102 5285

Interseccedilatildeo 2985 0901 0861 4747

Diferenccedila 2965 0911 0791 4667

Tabela 4-Tempo de processamento das operaccedilotildees com os modelos MaxPlanck e Male

Operaccedilatildeo Nuacutemero de surfels do resultado

Uniatildeo 126532

Interseccedilatildeo 88414

Diferenccedila 77635

Tabela 5-Nuacutemero de surfels dos modelos resultados das operaccedilotildees com os modelos MaxPlanck e Male

Em seguida apresentaremos uma comparaccedilatildeo entre o nosso plugin e o

plugin de Pauly[3] e tambeacutem uma comparaccedilatildeo entre o meacutetodo de Adams e Dutreacute

[2] e o meacutetodo de Pauly [3]

62 Comparaccedilatildeo entre os dois meacutetodos que realizam operaccedilotildees booleanas

A comparaccedilatildeo entre os meacutetodos de Pauly[3] e de Adams e Dutreacute foi feita

em termos de tempo de processamento e em termos conceituais Em termos de

tempo de processamento comparamos o plugin de Pauly[3] com o nosso plugin

Em termos de tempo de processamento verifica-se empiricamente que os

dois meacutetodos apresentam tempos bastante similares Entretanto o tempo de

processamento do algoritmo aqui implementado ainda pode ser melhorado com

Resultados 69

o uso do meacutetodo TINN [19] que foi proposto em Adams[2] - para otimizar a

pesquisa do surfel mais proacuteximo a um ponto que estaacute localizado na regiatildeo de um

noacute que conteacutem surfels - veja seccedilatildeo 42 O uso deste meacutetodo natildeo foi

implementado para este trabalho e a sua implementaccedilatildeo melhoraria o tempo de

resposta do algoritmo Aleacutem disso o trabalho de Sara F Frisken [12] citado no

capiacutetulo 2 apresenta uma otimizaccedilatildeo no uso de octrees que pode ser

incorporada no algoritmo implementado neste trabalho

Em termos conceituais vamos fazer a comparaccedilatildeo do uso do que

chamamos aqui de Regra 2 do tratamento de interseccedilatildeo e do tratamento de

ldquoarestas vivasrdquo

Como vimos na seccedilatildeo 41 tanto o algoritmo implementado nesta

dissertaccedilatildeo baseado no trabalho de Adams e Dutreacute como o meacutetodo de Pauly

[3] parte do que chamamos aqui de Regra 2 para realizar operaccedilotildees booleanas

com pontos Mas cada um destes meacutetodos daacute um tratamento diferente para o

uso desta regra

O meacutetodo de Pauly usa a Regra 2 para classificaccedilatildeo de cada ponto ou de

cada surfel Para classificar um surfel de B sb como dentro ou fora de A eacute

encontrado o surfel de A sa mais proacuteximo a sb e sb eacute classificado a partir de sa

Para encontrar sa Pauly utiliza uma kd-tree Como esta pesquisa para encontrar

sa eacute cara (mesmo usando uma kd-tree) Pauly utiliza uma esfera que conteacutem

pontos com a mesma classificaccedilatildeo (seccedilatildeo 432) e diminui em 90 este nuacutemero

de pesquisas Pauly utiliza tambeacutem a representaccedilatildeo impliacutecita MLS (Moving Least

Squares) para casos em que a Regra 2 poderia falhar e para tratamento de

interseccedilotildees Entretanto o nuacutemero destes casos em que a Regra 2 poderia falhar

eacute muito pequeno E a representaccedilatildeo MLS natildeo eacute uma estrutura simples de ser

implementada Portanto natildeo encontramos vantagens em usar MLS para estes

casos O meacutetodo de Adams e Dutreacute natildeo trata estes casos e na praacutetica

apresenta resultados bastante satisfatoacuterios como foi mostrado Portanto

consideramos que valeria a pena fazer algum tratamento especial para estes

casos se fosse um procedimento simples Para a execuccedilatildeo do algoritmo de

Pauly o uso de MLS natildeo interfere significativamente porque a construccedilatildeo desta

representaccedilatildeo natildeo eacute feita somente para realizar operaccedilotildees booleanas Os testes

empiacutericos que fizemos com o algoritmo de Pauly natildeo incluem a construccedilatildeo desta

representaccedilatildeo

Aparentemente os dois algoritmos satildeo bastante parecidos um usa octrees

e o outro usa kd-tree As duas estruturas de dados satildeo simples e otimizam a

classificaccedilatildeo dos surfels de um modelo como dentro ou fora do outro modelo

Resultados 70

Mas existe uma diferenccedila conceitual entre dois que merece ser destacada O

algoritmo aqui implementado usa a Regra 2 para classificaccedilatildeo dos noacutes de uma

octree e armazena esta octree classificada (ver capiacutetulo 5) Assim na maioria dos

casos natildeo seraacute necessaacuterio encontrar o surfel mais proacuteximo para classificar um

ponto (ou um surfel) como fora ou dentro de um modelo Caso o ponto esteja em

uma aacuterea da octree classificada ele teraacute a classificaccedilatildeo dada agravequela aacuterea A

pesquisa ao surfel mais proacuteximo seraacute feita apenas nos casos em que o ponto a

ser classificado estaacute localizado entre os planos que subdividem um noacute cheio

O uso desta octree classificada levanta uma questatildeo que natildeo foi citada no

trabalho de Adams e Dutreacute que eacute a proximidade desta estrutura (armazenada)

de octree classificada com uma representaccedilatildeo volumeacutetrica do objeto Sendo

assim esta estrutura pode ser aproveitada para outras funccedilotildees aleacutem da

classificaccedilatildeo dos surfels Por exemplo podemos ter uma aproximaccedilatildeo do

volume de uma cena somando os volumes aproximados dos modelos que a

compotildeem Como o enfoque deste trabalho eacute operaccedilatildeo booleana natildeo vamos nos

aprofundar nesta questatildeo

Outra importante diferenccedila entre os dois trabalhos que jaacute foi explicada na

seccedilatildeo 432 eacute que o meacutetodo de Pauly aplica-se a modelos soacutelidos ou natildeo

soacutelidos enquanto que o meacutetodo de Adams e Dutreacute aplica-se somente a modelos

soacutelidos

Quanto ao tratamento de interseccedilatildeo em termos de visualizaccedilatildeo todos os

dois resolvem bem o problema O tratamento de interseccedilatildeo nos dois trabalhos

tambeacutem resolve o problema da validade da Regra 2 (ver seccedilatildeo 44) Entretanto

o tratamento de Adams e Dutreacute natildeo depende da renderizaccedilatildeo sendo portanto

mais portaacutevel Aleacutem disso uma desvantagem do meacutetodo de Pauly eacute o uso da

representaccedilatildeo impliacutecita MLS (ldquoMoving Least Squaresrdquo) do objeto para obter os

pontos exatamente na curva de interseccedilatildeo Esta representaccedilatildeo torna o

tratamento de interseccedilatildeo mais complexo e a vantagem apresentada natildeo eacute tatildeo

significativa para este tratamento de interseccedilatildeo

Conclusatildeo 71

7 Conclusatildeo

Concluiacutemos entatildeo que as escolhas de Adams e Dutreacute por usar uma

octree classificada e pelo tratamento dado agrave interseccedilatildeo satildeo mais abrangentes

que a escolha de Pauly E consideramos que quanto mais abrangente for uma

escolha conceitual mais resultados poderemos tirar dela No caso de Adams e

Dutreacute eles estendem o problema de classificar um ponto para classificar todo o

modelo Como foi citado ele quase fornece uma representaccedilatildeo volumeacutetrica do

modelo Esta aproximada representaccedilatildeo volumeacutetrica pode nos fornecer outras

informaccedilotildees como por exemplo o volume aproximado do modelo

Aleacutem disso o uso da representaccedilatildeo impliacutecita MLS no meacutetodo de Pauly cria

uma complexidade a mais para o meacutetodo sem apresentar vantagens para a

realizaccedilatildeo de operaccedilotildees booleanas que eacute o nosso enfoque

Logo podemos dizer que o meacutetodo de Adams e Dutreacute apresenta as

seguintes vantagens em relaccedilatildeo ao de Pauly

- a estrutura de octree classificada aleacutem de ser usada para classificaccedilatildeo

fornece informaccedilotildees adicionais como volume aproximado do objeto

- o tempo de processamento no meacutetodo de Adams e Dutreacute tende a ser

melhor que no meacutetodo de Pauly se implementadas as melhorias acima citadas e

se colocaacutessemos em consideraccedilatildeo o uso da representaccedilatildeo impliacutecita MLS

(Moving Least Squares)

- o tratamento de interseccedilatildeo de Adams e Dutreacute apresenta a vantagem da

portabilidade ou seja iraacute funcionar independente do algoritmo de renderizaccedilatildeo

utilizado

E as vantagens do meacutetodo de Pauly em relaccedilatildeo ao de Adams e Dutreacute

- a colocaccedilatildeo de surfels exatamente na curva de interseccedilatildeo

- a possibilidade de trabalhar com modelos soacutelidos ou natildeo soacutelidos

E finalizando concluiacutemos que o estudo relatado nesta dissertaccedilatildeo foi

importante por

- fornecer um breve estudo sobre modelagem por pontos uma nova e

promissora aacuterea dentro da computaccedilatildeo graacutefica

Conclusatildeo 72

- por apresentar uma avaliaccedilatildeo dos dois trabalhos existentes sobre

operaccedilotildees booleanas com pontos encontrando as vantagens de cada um

e levantando questotildees que natildeo tinham sido citadas nos trabalhos originais

- por propor e implementar melhorias ao trabalho de Adams e Dutreacute

71 Trabalhos Futuros

Nossa implementaccedilatildeo pode ser ainda evoluiacuteda com as propostas

apresentadas na seccedilatildeo 62 Como observamos o tempo de processamento do

algoritmo aqui implementado ainda pode ser melhorado com o uso do meacutetodo

TINN [19] - que foi proposto em Adams[2] - para otimizar a pesquisa do surfel

mais proacuteximo a um ponto que estaacute localizado na regiatildeo de um noacute que conteacutem

surfels Aleacutem disso o trabalho Simple and Efficient Trasversal Methods for

Quadtrees and Octrees de Sara F Frisken [12] citado no capiacutetulo 2 apresenta

uma otimizaccedilatildeo no uso de octrees Outra proposta para melhorar o tempo de

processamento do algoritmo aqui implementado eacute usar a forma de trabalhar com

octrees apresentada neste trabalho

O trabalho de Adams e Dutreacute [2] eacute aplicado apenas a objetos soacutelidos O

nosso plugin portanto aplica-se somente a este tipo de objeto Jaacute o trabalho de

Pauly[3] eacute aplicado tambeacutem a modelos natildeo soacutelidos Apresentamos como

proposta a um trabalho futuro a extensatildeo do algoritmo aqui implementado para

modelos natildeo soacutelidos O surfel pode conter uma informaccedilatildeo adicional que indica

se ele estaacute delimitando um volume ou natildeo Assim pode-se ter um modelo com

ldquopartes soacutelidasrdquo e ldquopartes natildeo soacutelidasrdquo Por exemplo a uniatildeo de um plano com

uma esfera poderia resultar numa esfera com ldquoabasrdquo (seriam as partes do plano

que estariam fora da esfera) O modelo resultado teria uma parte correspondente

a um espaccedilo 3D (esfera) e outra parte que seria uma superfiacutecie 2D posicionada

no espaccedilo 3D sem delimitar algum volume (abas)

Muitos trabalhos podem ser desenvolvidos aplicando-se o modelo por

pontos em animaccedilatildeo jogos visualizaccedilatildeo de terrenos criaccedilatildeo de protoacutetipos etc

considerando-se a eficiecircncia e simplicidade do modelo E mais especificamente

as operaccedilotildees booleanas com pontos podem ser aplicadas para criaccedilatildeo de

cenaacuterios testes de colisotildees e nestes casos a representaccedilatildeo usando octrees

pode ser mais explorada considerando-se o seu potencial de representaccedilatildeo

volumeacutetrica de um objeto

Referecircncias Bibliograacuteficas 73

8 Referecircncias Bibliograacuteficas

[1] MAumlNTYLAuml M An Introduction to Solid Modeling Computer Science Press 1988

[2] ADAMS B DUTREacute P Interactive Boolean Operations on Surfel-

Bounded Solids Proceedings of SIGGRAPH 2003 San Diego USA 2003

[3] PAULY M KEISER R KOBBELT L GROSS M Shape Modeling

with Point-Sampled Geometry SIGGRAPH 2003 Computer Graphics

Proceedings Annual Conference Series ACM Press ACM SIGGRAPH 2003

[4] LEVOY M WHITTED T The Use of Points as Display Primitives

Technical Report TR 85-022 The University of North Carolina at Chapel Hill

Department of Computer Science 1985

[5] PFISTER H ZWICKER M VAN BAAR J GROSS M 2000 Surfels

Surface Elements as Rendering Primitives SIGGRAPH 2000 pp 335ndash342 New

Orleans LA July 23-28 2000

[6] ZWICKER M PFISTER H VAN BAAR J GROSS M Surface

Splatting SIGGRAPH 2001

[7] PAULY M KOBBELT L GROSS M Multiresolution Modeling of

Point-Sampled Geometry CS Techinical Report 378 September 16 2002

[8] CURLESS B New Methods for Surface Reconstruction from Range Images PhD thesis Stanford University 1997

[9] RUSINKIEWICZ S Real-time Acquisition and Rendering of Large 3D Models PhD thesis Stanford University 2001

Referecircncias Bibliograacuteficas 74

[10] AMENTA N BERN M KAMVYSSELIS M A new Voronoi-Based

Surface Reconstruction Algorithm SIGGRAPH 98 Conference proceedings pp

415-421 New York 1998

[11] ZWICKER M PAULY M KNOLL O GROSS M Pointshop 3D an

Interactive System for Point-Based Surface Editing Proceedings of SIGGRAPH 2002 San Antonio TX July 2002

[12] FRISKEN S PERRY R Simple and Efficient Traversal Methods for

Quadtrees and Octrees Journal of Graphics Tools Vol 7 Issue 3 May 2003

[13] CORREcircA W T OLIVEIRA M M Silva C T Wang J

Modeling and Rendering of Real Environments

Revista de Informaacutetica Teoacuterica e Aplicada (Brazilian Journal of Theoretic and Applied Computing) 9(2)127-156 2002

[14] DAVIS J MARSCHNER S GARR M LEVOY M Filling Holes in

Complex Surfaces Using Volumetric Diffusion First International Symposium on 3D Data Processing Visualization Transmission June 2002

[15] RAumlSAumlNEN J Surface Splatting Theory Extensions and Implementation Masterrsquos Thesis Dept of Computer Science Helsinki

University of Technology May 28 2002

[16] PAULY M Point Primitives for Interactive Modeling and Processing of 3D Geometry PhD thesis Federal Institute of Technology (ETH)

of Zurich 2003

[17] HOPPE H DEROSE T DUCHAMP T MCDONALD J

STUELZLE W Surface Reconstruction from Unorganized Points Computer Graphics 26(2)71ndash78 July 1992

[18] ALEXA M BEHR J COHEN-OR D FLEISHMAN S LEVIN D

SILVA C T Point Set Surfaces IEEE Visualization 2001 pp 21ndash28 October

2001

Referecircncias Bibliograacuteficas 75

[19] GREENSPAN M GODIN G TALBOT J Acceleration of Binning

Nearest Neighbor Methods Proceedings of Vision Interface 2000 pp 337-

344

[20] MENCL R Reconstruction of Surfaces from Unorganized Three-Dimensional Point Clouds Dissertation Dortmund Univ 2001

[21] KRIVANEK J Representing and Rendering Surfaces With Points

httpciteseernjneccomkrivanek03representinghtml Acesso em 30 jul

2003

[22] KRISTJANSSON ET AL Approximate Boolean Operations on Free-

form Solids Proceedings of SIGGRAPH 01 2001

12

mais proacuteximo a q1 e q2 (b) r eacute projetado sobre S1 e S2 obtendo-se q1acute e q2acute

dois novos pontos de partida para nova iteraccedilatildeo (c) A nova iteraccedilatildeo gera r

que eacute uma aproximaccedilatildeo melhor de q 43 Figura 15 Para verificar se o ponto x estaacute fora de um contorno C encontra-se o

ponto y de C Se o produto interno entre a normal em y e o vetor que liga y a

x for maior que zero entatildeo x estaacute fora de C senatildeo estaacute dentro de C 44 Figura 16 As curvas vermelhas satildeo o Eixo Medial da curva em preto 45 Figura 17 Em 3D geralmente o Eixo Medial eacute uma superfiacutecie 2D (em vermelho)

Aqui o quadrado eacute o Eixo Medial da superfiacutecie transparente que o contorna

45 Figura 18 A figura mostra o diagrama de Voronoi de uma amostragem de pontos

S Da mesma forma que a amostragem aproxima a curva os veacutertices de

Voronoi aproximam o Eixo Medial 46 Figura 19 Quadtree classificada Os noacutes mais escuros estatildeo fora do modelo os

mais claros dentro e os em tom intermediaacuterio satildeo noacutes de contorno 48 Figura 20 O noacute cheio eacute dividido em trecircs partes agrave esquerda a regiatildeo estaacute dentro

do modelo agrave direita estaacute fora e entre as duas linhas que dividem o noacute estaacute a

regiatildeo que conteacutem os surfels 49 Figura 21 O noacute a eacute classificado pelo noacute c o noacute d tambeacutem eacute classificado pelo noacute c

a classificaccedilatildeo do noacute a eacute propagada para o noacute b 50 Figura 22 Os cantos a e b do noacute cheio possuem a mesma classificaccedilatildeo fora do

modelo Esta classificaccedilatildeo foi dada ao noacute vazio adjacente 50 Figura 23 Quadtree classificada 51 Figura 24 A normal n eacute a normal meacutedia e os surfels s1 e s2 juntamente com a

normal n definem as retas que dividem o noacute 52 Figura 25 Duas circunferecircncias e suas quadtrees correspondentes 53 Figura 26 a modelos natildeo se intersectam b modelo intersecta noacutes fora c

modelo intersecta apenas noacutes dentro d modelo intersecta noacutes dentro e noacutes

fora 54 Figura 27 Software PointShop 3D com dois modelos carregados na sua cena 56 Figura 28 Menu do PointShop com o plugin e as opccedilotildees para operaccedilotildees

booleanas 57 Figura 29 Modelo do PointShop Igea 62 Figura 30 Resultado da uniatildeo de duas Igeas 63 Figura 31 Resultado da interseccedilatildeo de duas Igeas 63 Figura 32 Resultado da diferenccedila entre duas Igeas 64

13

Figura 33 Modelo do PointShop MaxPlanck 65 Figura 34 Modelo do PointShop Male 66 Figura 35 Resultado da Uniatildeo do modelo Male com MaxPlanck 66 Figura 36 Resultado da interseccedilatildeo do modelo Male com o MaxPlanck 67 Figura 37 Resultado da diferenccedila do modelo Male do modelo MaxPlanck 67

14

Lista de tabelas

Tabela 1 Classificaccedilatildeo para operaccedilotildees booleanas 42

Tabela 2- Nuacutemero de surfels dos modelos resultantes 64 Tabela 3- Meacutedia dos tempos de processamento para as operaccedilotildees com duas

Igeas 65

Tabela 4-Tempo de processamento das operaccedilotildees com os modelos MaxPlanck

e Male 68 Tabela 5- Nuacutemero de surfels dos modelos resultados das operaccedilotildees com os

modelos MaxPlanck e Male 68

15

1 Introduccedilatildeo

O mundo digital estaacute conquistando cada vez mais espaccedilo nos meios de

comunicaccedilatildeo Sons imagens viacutedeos digitais satildeo miacutedias muito usadas em

diversas aacutereas como entretenimento medicina desenho industrial engenharia

arquitetura educaccedilatildeo arte ciecircncia entre outras Podemos citar alguns

exemplos dentro destas aacutereas como jogos efeitos especiais filmes digitais

visualizaccedilatildeo cientiacutefica viacutedeo-conferecircncia comeacutercio na internet Nos uacuteltimos anos

verificamos que o modelo 3D vem se tornando um novo meio de comunicaccedilatildeo

digital Com o desenvolvimento da tecnologia de aquisiccedilatildeo e do processamento

de modelos 3D ele vem sendo cada vez mais utilizado Jogos 3D animaccedilotildees

aplicaccedilotildees em realidade virtual visualizaccedilatildeo cientiacutefica aplicaccedilotildees para aacuterea

meacutedica e odontoloacutegica criaccedilatildeo de reacuteplicas para estudo e preservaccedilatildeo do

patrimocircnio histoacuterico sistemas CADCAM cataacutelogos de modelos 3D na Web para

comercializaccedilatildeo criaccedilatildeo de protoacutetipos para arquitetura engenharia satildeo alguns

exemplos de aplicaccedilotildees que usam modelos 3D

A aacuterea que estuda a representaccedilatildeo de um modelo 3D no computador eacute

chamada de modelagem em computaccedilatildeo graacutefica Existem diversos tipos de

modelagem para as diversas aplicaccedilotildees que usam um modelo 3D como por

exemplo representaccedilotildees poligonais como malhas triangulares que satildeo

geralmente usadas na aacuterea de entretenimento Este trabalho explora um novo

tipo de modelagem a modelagem por pontos

A modelagem por pontos comeccedilou a ser largamente explorada nesta

deacutecada e trata-se de uma aacuterea muito promissora em computaccedilatildeo graacutefica dadas

agraves vaacuterias e grandes vantagens em relaccedilatildeo aos outros tipos de representaccedilatildeo

como esquema de representaccedilatildeo CSG (Constructive Solid Geometry) [1] ou

malhas poligonais Dentre as principais vantagens podemos citar grande

simplicidade e flexibilidade boa performance robustez Mas a principal

vantagem desta modelagem que foi o fator que impulsionou o seu grande

desenvolvimento nesta deacutecada eacute que esta modelagem por pontos eacute a melhor

opccedilatildeo para tratar os dados de saiacuteda de equipamentos de aquisiccedilatildeo de modelos

3D O uso destes equipamentos tem aumentado muito nesta deacutecada A

16

tecnologia destes equipamentos tem progredido muito e eles tecircm se tornado

mais baratos A tendecircncia eacute que o uso destes equipamentos se torne o mais

utilizado meio de obtenccedilatildeo de modelos 3D Isto porque construir modelos 3D

bastante detalhados por meio de um software de modelagem eacute muito trabalhoso

O processo de aquisiccedilatildeo de modelos por meio destes equipamentos automatiza

este processo de construccedilatildeo

No trabalho com modelos 3D frequumlentemente satildeo usadas as operaccedilotildees

booleanas que satildeo operaccedilotildees de uniatildeo interseccedilatildeo ou diferenccedila No esquema

de representaccedilatildeo CSG estas operaccedilotildees fazem parte da representaccedilatildeo do

objeto Estas operaccedilotildees tambeacutem podem ser usadas para criar novos modelos ou

para alteraacute-los Na maioria dos tipos de representaccedilatildeo de objetos 3D estas

operaccedilotildees satildeo bastante complexas

A simplicidade da representaccedilatildeo por pontos permite que as operaccedilotildees

booleanas sejam realizadas com facilidade se compararmos com a realizaccedilatildeo

destas operaccedilotildees em outros tipos de representaccedilatildeo como malhas poligonais

Motivada pelas vantagens desta modelagem e pela utilidade destas operaccedilotildees

esta dissertaccedilatildeo apresenta uma introduccedilatildeo geral de modelagem por pontos e

trabalha mais especificamente com operaccedilotildees booleanas em objetos

modelados por pontos Dois trabalhos que exploram as operaccedilotildees booleanas na

modelagem por pontos seratildeo abordados o trabalho de Adams e Dutreacute [2] e o

trabalho de Pauly et al [3] O presente trabalho implementa o meacutetodo de Adams

e Dutreacute com algumas melhorias e faz uma comparaccedilatildeo entre o meacutetodo de Pauly

[3] e o meacutetodo de Adams e Dutreacute [2] com nossas melhorias

Como contribuiccedilotildees dadas por este trabalho apresentamos

- um estudo sobre modelagem por pontos

- um estudo sobre operaccedilotildees booleanas com pontos

- proposta de melhorias ao algoritmo proposto por Adams e Dutreacute [2]

- comparaccedilatildeo dos dois meacutetodos propostos para realizar estas operaccedilotildees

meacutetodo de Pauly et al [3] e de Adams e Dutreacute [2]

Este trabalho vem apresentado nesta dissertaccedilatildeo organizada em sete

capiacutetulos conforme descrito resumidamente a seguir

O capiacutetulo 2 cita alguns trabalhos sobre modelagem por pontos que estatildeo

relacionados a este trabalho

O capiacutetulo 3 apresenta uma visatildeo geral do modelo por pontos e explica

melhor alguns trabalhos citados no capiacutetulo 2

17

O capiacutetulo 4 apresenta operaccedilotildees booleanas com pontos e os dois

meacutetodos para realizaacute-las na modelagem por pontos meacutetodo de Pauly et al [3] e

de Adams e Dutreacute [2]

O capiacutetulo 5 apresenta algumas melhorias ao algoritmo de Adams e Dutreacute

[2] e a nossa implementaccedilatildeo deste algoritmo

O capiacutetulo 6 traz os resultados obtidos

E finalmente o capiacutetulo 7 encerra o trabalho com uma conclusatildeo e com

possiacuteveis trabalhos futuros

Trabalhos relacionados 18

2 Trabalhos relacionados

O primeiro pesquisador a propor o uso de pontos como primitiva graacutefica foi

Levoy em [4] Ele propotildee o uso de pontos como primitiva de renderizaccedilatildeo e

discute a conversatildeo dos outros modelos para o modelo por pontos

Nos uacuteltimos anos vaacuterios trabalhos importantes tecircm sido realizados na aacuterea

em diversos segmentos em visualizaccedilatildeo podemos destacar os trabalhos de

Pfister [5] e de Zwicker [6] que usam pontos como primitiva de renderizaccedilatildeo e

com resultados praacuteticos interativos muito bons

Em [7] Pauly et al propotildeem algoritmos para modelagem multi-resoluccedilatildeo

em modelos por pontos

Os trabalhos de Curless [8] e Rusinkiewicz [9] discutem os meacutetodos de

aquisiccedilatildeo que consistem em obter uma amostragem de pontos da superfiacutecie do

objeto real por meio de equipamentos como por exemplo o scanner 3D

Nas operaccedilotildees booleanas a interseccedilatildeo das superfiacutecies dos modelos

iniciais seraacute parte do modelo resultado e para ser representada corretamente

precisa ser reconstruiacuteda A reconstruccedilatildeo da superfiacutecie tambeacutem eacute usada na

visualizaccedilatildeo de um modelo Um trabalho significativo na aacuterea de reconstruccedilatildeo de

superfiacutecies estaacute em [10] de N Amenta etal Este trabalho apresenta uma

soluccedilatildeo praacutetica com garantias teoacutericas para este problema e uma heuriacutestica para

o tratamento de arestas vivas a questatildeo mais difiacutecil desta aacuterea Um exemplo

de uma aresta viva eacute o encontro de dois planos natildeo coincidentes

Frequumlentemente a interseccedilatildeo citada acima (interseccedilatildeo entre os modelos iniciais)

gera uma aresta viva (seccedilatildeo 4223)

O algoritmo aqui implementado eacute um plugin para o software PointShop 3D

[11] de Zwicker et al software de ediccedilatildeo de modelos com pontos O PointShop

tem seu coacutedigo aberto documentaccedilatildeo e trabalha com plugins Ele permite a

visualizaccedilatildeo e ediccedilatildeo interativa do modelo por pontos Eacute o uacutenico software livre

disponiacutevel com estas caracteriacutesticas Esta implementaccedilatildeo na forma de um plugin

facilitou muito o trabalho pois natildeo foi necessaacuterio implementar a visualizaccedilatildeo do

modelo 3D Aleacutem disso o Pointshop conteacutem tambeacutem um plugin com a

implementaccedilatildeo do meacutetodo de Pauly et al [3] discutido nesta dissertaccedilatildeo A

Trabalhos relacionados 19

execuccedilatildeo dos dois plugins que realizam operaccedilotildees booleanas pocircde ser

comparada

Os trabalhos aqui discutidos satildeo o de Bart Adams e Philip Dutreacute [2] e de

Pauly et al[3] que apresentam meacutetodos diferentes para realizaccedilatildeo de

operaccedilotildees booleanas com pontos Adams e Dutreacute utilizam octrees [1] e Pauly

Kd-Tree [16] e MLS (Moving Least Squares) [18] Estes algoritmos satildeo

discutidos no capiacutetulo 4

O trabalho de Sara F Frisken [12] apresenta um algoritmo para realizar

operaccedilotildees em octree de forma mais eficiente Como estas operaccedilotildees estatildeo

presentes em todo o nosso algoritmo este trabalho certamente oferece uma

forma de otimizaccedilatildeo mas que natildeo foi implementada

Modelagem por Pontos 20

3 Modelagem por Pontos

A computaccedilatildeo graacutefica natildeo lida diretamente com o objeto ou com o

fenocircmeno fiacutesico lida com modelos graacuteficos ou geomeacutetricos Modelos graacuteficos

satildeo estruturas computacionais (abstratas) que capturam aspectos de objetos de

interesse para uma aplicaccedilatildeo como forma cor textura etc Se apenas a forma

ou a geometria do objeto eacute relevante temos modelos geomeacutetricos

Estes modelos satildeo usados em vaacuterias aplicaccedilotildees em computaccedilatildeo graacutefica

como roboacutetica visatildeo computacional simulaccedilotildees realistas anaacutelises estruturais

prototipagem projeto e manufatura de produtos eletromecacircnicos arquitetura

Existem vaacuterios tipos de modelos graacuteficos Esta dissertaccedilatildeo trata de um tipo

muito em voga atualmente que eacute o modelo por pontos

Neste capiacutetulo daremos uma visatildeo geral do modelo por pontos

Introduziremos este modelo e seu processo de criaccedilatildeo Seraacute apresentado o que

eacute um modelo por pontos e o conceito de surfel [5] introduziremos os tipos de

distribuiccedilatildeo dos surfels uma estruturaccedilatildeo aplicada a estes surfels e dados que

eles podem conter As quatro proacuteximas subseccedilotildees (Ideacuteia da representaccedilatildeo

Tipos de distribuiccedilatildeo dos surfels Estrutura de multi-resoluccedilatildeo e Dados que um

surfel pode conter) tratam destes toacutepicos Um modelo por pontos pode ser criado

a partir da conversatildeo de outros tipos de modelagem NURBS por exemplo para

o modelo por pontos ou a partir de um processo de aquisiccedilatildeo Esta uacuteltima forma

de criaccedilatildeo pode ser dividida em duas etapas aquisiccedilatildeo do modelo reconstruccedilatildeo

da superfiacutecie As subseccedilotildees 35 e 36 tratam destas duas etapas

respectivamente A ediccedilatildeo do modelo 3D eacute tratada brevemente na subseccedilatildeo 38

e a sua visualizaccedilatildeo na subseccedilatildeo 37 A apresentaccedilatildeo do processo de aquisiccedilatildeo

(seccedilatildeo 35) eacute baseada no tutorial de W T Correcirca [13] A etapa de ediccedilatildeo 3D

consiste em operaccedilotildees para mudanccedila da cor textura ou forma do modelo Para

esta etapa enfocaremos as operaccedilotildees booleanas que modificam a forma do

modelo ou criam novos modelos

31 Ideacuteia da Representaccedilatildeo

Modelagem por Pontos 21

Figura 1 [20] -Um modelo por pontos e sua visualizaccedilatildeo

Um modelo por pontos representa um objeto atraveacutes de seu contorno Eacute

um tipo de representaccedilatildeo B-Rep (Boundary Representation) [1] Este contorno

consiste em uma superfiacutecie 2D posicionada no espaccedilo 3D Na modelagem por

pontos ela eacute representada por um conjunto de pontos 3D que satildeo uma

amostragem dos (infinitos) pontos que formam a superfiacutecie contiacutenua (Figura 1) A

amostragem pode ser obtida de diversas maneiras Uma delas o processo de

aquisiccedilatildeo progrediu muito nos uacuteltimos anos e este foi um dos fatores que tornou

muito importante o desenvolvimento deste modelo por pontos Outra forma de

gerar amostragem eacute fazer uma conversatildeo de um outro modelo NURBS por

exemplo para o modelo por pontos

Estes pontos satildeo denominados surfels e podem conter aleacutem da posiccedilatildeo

3D outras informaccedilotildees como normal agrave superfiacutecie cor textura raio de alcance A

Figura 2 mostra um conjunto de surfels representando uma superfiacutecie No surfel

em destaque podemos ver o raio de alcance rt e a normal n agrave superfiacutecie

Modelagem por Pontos 22

Figura 2 [5] A superfiacutecie modelada por surfels O surfel em destaque tem raio de alcance

rt e normal n

Como o modelo natildeo armazena qualquer informaccedilatildeo sobre a conexatildeo entre

os surfels a reconstruccedilatildeo da superfiacutecie contiacutenua a partir dele pode exigir

algumas restriccedilotildees na amostragem (seccedilatildeo 36)

32 Tipos de distribuiccedilatildeo dos surfels

Existem dois tipos de distribuiccedilatildeo dos surfels na modelagem por pontos

uniforme e natildeo uniforme Na distribuiccedilatildeo uniforme cada um deles descreve

partes de mesmo tamanho da superfiacutecie Na natildeo uniforme cada surfel armazena

a informaccedilatildeo de seu raio de alcance que eacute o raio do disco que este surfel

representa

A distribuiccedilatildeo uniforme tem a vantagem de ser mais simples e natildeo ser

necessaacuterio armazenar o raio de alcance do disco mas ela apresenta a seguinte

desvantagem se o modelo possui regiotildees com muito detalhe e regiotildees com

pouco detalhe ele teraacute que manter uma alta densidade mesmo nas regiotildees de

poucos detalhes

33 Estrutura de multi-resoluccedilatildeo

Um objeto pode ser representado em vaacuterios niacuteveis de detalhes Por

exemplo podemos representar um mesmo objeto com vaacuterias resoluccedilotildees

diferentes Este conceito pode ser aplicado ao modelo por pontos Desta forma

um modelo eacute representado por uma estrutura hieraacuterquica (uma aacutervore por

exemplo) onde em cada niacutevel temos uma representaccedilatildeo do objeto em uma

Modelagem por Pontos 23

determinada resoluccedilatildeo Em [7] Pauly et al propotildeem algoritmos para modelagem

multi-resoluccedilatildeo em modelos por pontos

34 Dados que um surfel pode conter

Cada surfel armazena sua localizaccedilatildeo e pode tambeacutem conter informaccedilotildees

como a cor ou coordenadas de textura Se a amostragem natildeo for uniforme o

surfel conteacutem a informaccedilatildeo do raio de alcance que eacute o raio de um disco cujo

centro eacute a posiccedilatildeo do surfel O surfel pode tambeacutem conter o vetor normal agrave

superfiacutecie e assim o surfel pode ser visto como um disco orientado A superfiacutecie

tambeacutem pode ser vista como uma superfiacutecie orientada

35 Aquisiccedilatildeo do modelo

Esta introduccedilatildeo sobre aquisiccedilatildeo do modelo aqui apresentada baseia-se no

tutorial de W T Correcirca [13]

O processo de aquisiccedilatildeo consiste em obter uma amostragem de pontos da

superfiacutecie do objeto real por meio de equipamentos como por exemplo o

scanner 3D Eacute uma aacuterea que tem progredido muito nos uacuteltimos anos A

resoluccedilatildeo e a precisatildeo dos equipamentos de aquisiccedilatildeo tecircm melhorado bastante

e o custo deles reduzido de forma significativa Isso possibilita que a aquisiccedilatildeo

de modelos 3D seja usada em aplicaccedilotildees de desenho industrial arte ou em

produtos para a aacuterea de entretenimento O consequumlente maior uso destes

equipamentos criou a necessidade de avanccedilos no tratamento dos seus dados de

saiacuteda que satildeo um conjunto de pontos

Este processo pode ser dividido em trecircs partes [13] aquisiccedilatildeo da

geometria aquisiccedilatildeo da textura e correccedilatildeo de falhas da aquisiccedilatildeo

351 Aquisiccedilatildeo da geometria

Existem vaacuterios meacutetodos de aquisiccedilatildeo da geometria Curless [8] e

Rusinkiewicz [9] classificaram estes meacutetodos em trecircs categorias meacutetodos por

contato transmissatildeo e reflexatildeo

O meacutetodo por contato toca a superfiacutecie do objeto com uma sonda e grava

a posiccedilatildeo Este meacutetodo do qual o Coordinate Measuring Machines (CMMs) eacute

Modelagem por Pontos 24

um exemplo eacute bastante preciso mas eacute muito lento e natildeo adequado a objetos

fraacutegeis

Meacutetodos por transmissatildeo projetam ondas de energia sobre o objeto e

gravam a energia transmitida Por exemplo tomografia computadorizada que

projeta ondas de raio-x sobre o objeto e mede a quantidade de radiaccedilatildeo que

passa atraveacutes dele O resultado eacute um modelo geomeacutetrico de alta resoluccedilatildeo Este

meacutetodo pode captar detalhes do objeto que natildeo satildeo visiacuteveis de fora do objeto

Por outro lado ele eacute caro e arriscado

Meacutetodos por reflexatildeo podem ser oacuteticos ou natildeo-oacuteticos Natildeo-oacuteticos incluem

radares que medem a distacircncia a um objeto enviando microondas ou ondas

sonoras para o objeto e gravando o tempo que a onda gasta para retornar Estes

meacutetodos natildeo satildeo muito precisos nem raacutepidos

Meacutetodos por reflexatildeo oacuteticos podem ser passivos ou ativos Meacutetodos oacuteticos

passivos natildeo interagem com o objeto e incluem teacutecnicas de visatildeo computacional

como shape-from-shading stereo triangulation optical flow e meacutetodos de

decomposiccedilatildeo para video streams Estes meacutetodos raramente constroem

modelos precisos e sua maior aplicaccedilatildeo eacute em reconhecimento de objetos

Meacutetodos oacuteticos ativos projetam luz sobre um objeto de maneira estruturada

e atraveacutes da reflexatildeo da luz determinam a forma do objeto Exemplos satildeo depth

from defocus photometric stereo projected-light triangulation time of flight

Meacutetodos por reflexatildeo oacuteticos ativos tecircm muitas vantagens sobre os passivos tecircm

um melhor desempenho quando natildeo existe textura satildeo mais baratos e mais

robustos e produzem uma amostragem precisa

352 Aquisiccedilatildeo da textura

Idealmente noacutes gostariacuteamos de ter uma completa descriccedilatildeo de como um

ponto da superfiacutecie reflete a luz dependendo do vetor normal a esta superfiacutecie

da direccedilatildeo do raio de luz incidente e do comprimento de onda Tal descriccedilatildeo eacute

conhecida como Bidirectional Reflectance Distribution Function (BRDF) Medir

BRDFs com precisatildeo eacute um problema difiacutecil

Pode-se ter uma aproximaccedilatildeo da aquisiccedilatildeo de cores do objeto tirando

fotos dele O objeto eacute fotografado e a cor de cada ponto da superfiacutecie eacute obtida a

partir de um mapeamento das fotos 2D para o modelo 3D Para mapear a

fotografia agrave geometria precisamos conhecer os paracircmetros de projeccedilatildeo da

cacircmera e a sua posiccedilatildeo no momento em que a foto foi batida Para cada ponto

Modelagem por Pontos 25

3D do modelo encontramos sua projeccedilatildeo 2D no plano da cacircmera e associamos

a cor do pixel nesta projeccedilatildeo agrave cor do ponto 3D

353 Correccedilatildeo das falhas da aquisiccedilatildeo

O processo de aquisiccedilatildeo deixa frequumlentemente buracos no modelo devido

a ruiacutedos no processo ou agrave impossibilidade de aquisiccedilatildeo de determinadas partes

de uma superfiacutecie Estes buracos devem ser corrigidos Pode-se usar por

exemplo um filtro de passa-baixa para remoccedilatildeo de ruiacutedos [14] Meacutetodos de

difusatildeo geomeacutetrica tecircm sido aplicados para preenchimento dos buracos [15] A

correccedilatildeo das falhas eacute tida como um preacute-processamento para o processo de

reconstruccedilatildeo da superfiacutecie contiacutenua (seccedilatildeo 36)

36 Reconstruccedilatildeo da superfiacutecie (contiacutenua) a partir do modelo (discreto)

A reconstruccedilatildeo da superfiacutecie contiacutenua consiste em a partir de um conjunto

natildeo estruturado de pontos obter um modelo contiacutenuo desta superfiacutecie Esta

reconstruccedilatildeo eacute frequumlentemente exigida para um modelo por pontos Na sua

visualizaccedilatildeo podemos desejar focar qualquer parte do modelo Para fazermos

operaccedilotildees booleanas com os modelos podemos querer determinar exatamente

onde eles se intersectam

No entanto natildeo precisamos ter necessariamente a representaccedilatildeo contiacutenua

de todo o objeto ao mesmo tempo A reconstruccedilatildeo desta superfiacutecie a partir dos

pontos amostrados pode ser feita no momento que for mais adequado agrave

aplicaccedilatildeo Na visualizaccedilatildeo a reconstruccedilatildeo pode ser feita na projeccedilatildeo 2D da

parte do modelo em foco (seccedilatildeo 37) Para operaccedilotildees booleanas pode-se

reconstruir apenas a aacuterea da interseccedilatildeo dos modelos

Este processo de reconstruccedilatildeo de superfiacutecie tem sido muito estudado em

modelagem geomeacutetrica e geometria computacional nos uacuteltimos anos O trabalho

mais importante desta aacuterea eacute o trabalho de Amenta et al [10] que foi a primeira

soluccedilatildeo com garantias demonstraacuteveis para este problema de reconstruccedilatildeo de

superfiacutecie A seccedilatildeo 44 explica estes conceitos e o trabalho [10] Este trabalho

demonstra que teoricamente para que a reconstruccedilatildeo da superfiacutecie (contiacutenua) a

partir das amostras seja correta a amostragem deve ser adequada Ele usa o

conceito de ldquoEixo Medialrdquo para definir o que eacute uma amostragem adequada

Modelagem por Pontos 26

(seccedilatildeo 44) Em duas dimensotildees os veacutertices de Voronoi de uma amostragem

densa aproximam o ldquoEixo Medialrdquo da amostragem

Por meio deste conceito de Eixo Medial [1016] obtecircm-se paracircmetros

teoacutericos para a definiccedilatildeo de amostragem adequada e baseado neste conceito

o algoritmo apresentado em [10] traz uma soluccedilatildeo praacutetica para o problema

obtendo uma malha poligonal a partir do modelo por pontos

O PointShop 3D [11] software de ediccedilatildeo de modelos por pontos utilizado

nesta pesquisa faz quando necessaacuterio a reconstruccedilatildeo da superfiacutecie Para isso

o PointShop 3D explora a vizinhanccedila local (surfels vizinhos de acordo com suas

posiccedilotildees) Ele usa o conceito de Eixo Medial para justificar seu meacutetodo de

reconstruccedilatildeo da superfiacutecie que na praacutetica apresenta resultados bastante

satisfatoacuterios apesar de teoricamente natildeo ter garantias [16]

37 Visualizaccedilatildeo do modelo

A primeira abordagem para visualizaccedilatildeo de um modelo por pontos foi

construir uma malha de poliacutegonos a partir dos surfels e renderizaacute-la Mas a

construccedilatildeo de malhas a partir dos surfels eacute um processo muito caro e lento

principalmente para modelos complexos Na tentativa de obter uma visualizaccedilatildeo

interativa do modelo por pontos estatildeo sendo estudadas teacutecnicas que utilizam

surfels como primitiva de visualizaccedilatildeo A ideacuteia foi apresentada inicialmente por

Levoy [4]

Figura 3 [21] -Modelo por pontos e sua renderizaccedilatildeo usando Surface Splatting

Modelagem por Pontos 27

O objetivo da renderizaccedilatildeo a partir dos surfels eacute projetaacute-los na tela e

reconstruir as superfiacutecies de forma contiacutenua sem buracos Para que esta

renderizaccedilatildeo seja amplamente utilizada deve-se ter cuidado com o uso de

memoacuteria e com a qualidade da imagem gerada Teacutecnicas recentes como Surface

Splatting [6] faz a renderizaccedilatildeo interativamente com qualidade (Figura 3)

comparada a outros meacutetodos de renderizaccedilatildeo como Image Based Rendering

Em geral a visualizaccedilatildeo do modelo por pontos pode ser dividida nas seguintes

etapas

- warping - projeccedilatildeo em perspectiva de cada ponto do modelo na tela

processo anaacutelogo agrave projeccedilatildeo de veacutertices dos triacircngulos na malha triangular Se

um pixel da tela estiver contido em mais de uma projeccedilatildeo de surfels (vizinhos)

ou seja mais de um ponto cobre este pixel os atributos destes pontos seratildeo

combinados

- shading por ponto - o processo de shading eacute realizado para cada ponto

visiacutevel (os pontos que natildeo satildeo vistos do ponto de vista em questatildeo devem ser

retirados) Qualquer modelo local de shading pode ser aplicado Uma nova

teacutecnica foi proposta em Surface Splatting [6]

- reconstruccedilatildeo da imagem ndash pixels que natildeo ldquoreceberamrdquo projeccedilatildeo de

nenhum ponto formam buracos na imagem Esta imagem deve ser reconstruiacuteda

sem buracos sem aliasing e as superfiacutecies devem ser reconstruiacutedas de forma

contiacutenua e devem ser ldquosuavizadasrdquo (smooth surface)

Os algoritmos de renderizaccedilatildeo por pontos podem tratar a questatildeo de

buracos na visualizaccedilatildeo de trecircs formas [17]

Detecccedilatildeo e preenchimento de buracos no espaccedilo da tela pontos satildeo

projetados na tela e pixels que natildeo receberam pontos satildeo detectados (buracos)

Para preencher estes buracos que natildeo receberam pontos eacute feita uma

interpolaccedilatildeo entre os vizinhos

Geraccedilatildeo de mais pontos a superfiacutecie eacute interpolada no espaccedilo do modelo

para garantir que todos os pixels recebam pelo menos a projeccedilatildeo de um ponto

Splatting um surfel eacute projetado na tela e sua contribuiccedilatildeo eacute espalhada de

forma diferenciada para os pixels vizinhos Agrave medida em que o vizinho se torna

mais distante a contribuiccedilatildeo do surfel diminui

Raumlsaumlnen faz uma analogia do processo de renderizaccedilatildeo proposto em [6]

com o mapeamento de textura [15] No mapeamento de textura para um

determinado pixel da tela satildeo encontrados os pontos da textura que afetam este

Modelagem por Pontos 28

pixel Num sentido inverso em splatting para um determinado surfel (que

representa a textura) satildeo encontrados os pixels da tela que este surfel afeta

38 Ediccedilatildeo do modelo

Ediccedilatildeo de um modelo 3D consiste em operaccedilotildees que modificam

caracteriacutesticas deste modelo como cor textura forma ou criam novos modelos

O software PointShop 3D [11] software de ediccedilatildeo de modelos por pontos 3D

implementa vaacuterias destas operaccedilotildees (ver seccedilatildeo 52)

Para modificar a forma de um modelo ou criar um novo satildeo muito usadas

as operaccedilotildees booleanas que eacute o nosso enfoque nesta dissertaccedilatildeo Na

modelagem CSG (Constructive Solid Geometry) as operaccedilotildees booleanas satildeo

usadas juntamente com primitivas soacutelidas para definir um modelo No entanto

em alguns tipos de modelos estas operaccedilotildees satildeo difiacuteceis como por exemplo

em malhas poligonais Com pontos elas podem ser feitas interativamente [32]

Operaccedilotildees Booleanas com Pontos 29

4 Operaccedilotildees Booleanas com Pontos

Operaccedilotildees booleanas satildeo as operaccedilotildees de uniatildeo interseccedilatildeo e diferenccedila

definidas na teoria matemaacutetica de conjuntos Estas operaccedilotildees satildeo aplicadas em

modelos soacutelidos para alteraacute-los ou para criar novos modelos A Figura 4 abaixo

mostra a criaccedilatildeo de trecircs novos modelos a partir de quatro modelos iniciais

Figura 4 [22] Trecircs modelos novos foram criados a partir dos quatro iniciais (esfera

cilindro dois cubos) O primeiro eacute a esfera menos um cubo em seguida retirou-se outro

cubo e por uacuteltimo retirou-se o cilindro

Estas operaccedilotildees satildeo aplicadas em objetos modelados por pontos em dois

trabalhos no trabalho de Bart Adams e Philip Dutreacute [2] e no trabalho de Pauly

et Al [3] Neste capiacutetulo a seccedilatildeo 41 apresenta a parte comum aos dois

trabalhos e as seccedilotildees 42 e 43 apresentam as particularidades de cada um A

seccedilatildeo 44 discute uma questatildeo natildeo explicitada em nenhum dos dois trabalhos

41 Meacutetodos para realizar operaccedilotildees booleanas em objetos modelados por pontos

A Figura 5 mostra o resultado do meacutetodo de Adams[2] operaccedilotildees de

uniatildeo diferenccedila e interseccedilatildeo de objetos soacutelidos 3D modelados por pontos

Operaccedilotildees Booleanas com Pontos 30

Figura 5 [2]-A partir de dois modelos por pontos uma heacutelice e uma cabeccedila as trecircs operaccedilotildees booleanas satildeo mostradas da esquerda para a direita uniatildeo diferenccedila e interseccedilatildeo

Sejam A e B objetos 3D soacutelidos modelados por pontos Definem-se os

seguintes elementos

Af ndash superfiacutecie (contorno) de A que estaacute fora de B

Ad ndash superfiacutecie (contorno) de A que estaacute dentro de B

Bf ndash superfiacutecie (contorno) de B que estaacute fora de A

Bd ndash superfiacutecie (contorno) de B que estaacute dentro de A

O resultado da operaccedilatildeo booleana entre A e B seraacute um modelo C cuja

superfiacutecie de contorno pode ser determinada pela seguinte regra [2] que aqui

chamamos de Regra 1

Regra 1 A U B Af + Bf

A cap B Ad + Bd

A ndash B Af + Bd (com a orientaccedilatildeo invertida)

B ndash A Ad (com a orientaccedilatildeo invertida) + Bf

A Figura 6 mostra as operaccedilotildees com dois modelos A e B

(a) (b)

Operaccedilotildees Booleanas com Pontos 31

(c) (d)

Figura 6 [22] (a) Dois modelos A e B (b) Posicionados de forma que A tem

uma parte dentro de B eacute mostrado o resultado A U B Af + Bf (c) Resultado de A ndash B Af

+ Bd (d) Resultado de A cap B Ad + Bd

Bart [2] e Pauly [3] apresentam dois meacutetodos para determinar os

elementos acima Estes dois meacutetodos satildeo construiacutedos a partir dos seguintes

conceitos os elementos Af Ad Bf Bd satildeo uma parte da superfiacutecie modelada por

pontos e portanto satildeo conjuntos de surfels Para determinaacute-los eacute necessaacuteria

entatildeo a classificaccedilatildeo de um surfel (que pode se resumir agrave classificaccedilatildeo de um

ponto que eacute o seu centro) de uma superfiacutecie como dentro ou fora de um outro

modelo Os dois meacutetodos utilizam a seguinte regra para esta classificaccedilatildeo aqui

denominada Regra 2

Regra 2 Dado um ponto x qualquer um volume V determinado por uma superfiacutecie

de contorno S uma amostragem P da superfiacutecie S um ponto p є P que eacute a

amostra mais proacutexima a x um vetor np normal agrave S em p e orientado para fora de

S temos que

(x ndash p) np gt 0 x notinV

Ou seja para classificar um ponto em relaccedilatildeo a um modelo verificamos o

produto interno entre a normal em p (surfel mais proacuteximo a x) e o vetor (x - p)

se este produto interno for maior que zero x natildeo pertence ao volume V e seraacute

classificado como fora senatildeo seraacute classificado como dentro De maneira

ainda mais informal se a normal em p apontar para a direccedilatildeo oposta a x x seraacute

classificado como dentro se apontar para x x seraacute classificado como fora

A Figura 7 mostra a Regra 2

Operaccedilotildees Booleanas com Pontos 32

Figura 7 Para classificar o ponto x encontra-se o surfel p (com normal np) mais proacuteximo

a x Se o produto interno entre np e (x ndash p) for maior que zero entatildeo x eacute classificado como

fora senatildeo seraacute classificado como dentro

A validade da Regra 2 eacute discutida na Seccedilatildeo 44 Uma das restriccedilotildees

teoacutericas para garantir-lhe a validade eacute que a superfiacutecie seja suave

Cada um dos dois meacutetodos daacute um tratamento diferente para o uso desta

regra Pauly usa a regra diretamente encontrando o surfel mais proacuteximo a um

ponto e classificando este ponto a partir deste surfel Ele utiliza tambeacutem a

representaccedilatildeo impliacutecita MLS (Moving Least Squares [18]) para casos em que a

Regra 2 poderia falhar e para tratamento de interseccedilotildees [3] Seu meacutetodo vale

para modelos soacutelidos ou natildeo soacutelidos O meacutetodo de Adams e Dutreacute [2] utiliza

octrees [1] criando uma classificaccedilatildeo dos noacutes da octree a partir desta Regra 2

Os pontos satildeo entatildeo classificados de acordo com o noacute da octree que o conteacutem

Este segundo meacutetodo aplica-se somente a modelos soacutelidos Os dois meacutetodos

seratildeo descritos em detalhes nas seccedilotildees abaixo

Como um surfel eacute considerado um disco podemos dizer que surfels de

dois modelos diferentes podem se intersectar A interseccedilatildeo destes dois surfels

corresponde agrave interseccedilatildeo destes dois discos Estes surfels geram problemas

para visualizaccedilatildeo se forem acrescentados ao resultado sem um tratamento

especiacutefico apresentaratildeo artefatos natildeo desejaacuteveis na renderizaccedilatildeo do modelo

resultado (Figura 8) se natildeo forem acrescentados ao resultado deixaratildeo buracos

no modelo

Operaccedilotildees Booleanas com Pontos 33

Figura 8 [2] -Interseccedilatildeo de duas esferas agrave esquerda sem nenhum tratamento de interseccedilatildeo agrave direita apoacutes o tratamento de interseccedilatildeo

Aleacutem disso nem sempre esta interseccedilatildeo forma uma superfiacutecie suave

Esta interseccedilatildeo pode formar uma aresta viva (seccedilatildeo 4223) gerando

problemas tambeacutem para o uso da Regra 2 que eacute vaacutelida apenas para superfiacutecies

suaves Eacute necessaacuterio entatildeo fazer um tratamento desta superfiacutecie de interseccedilatildeo

(formada por surfels originados de diferentes modelos) O tratamento de cada

um dos meacutetodos para este caso seraacute tambeacutem abaixo apresentado

42 Meacutetodo de Adams e Dutreacute

O meacutetodo aplica-se somente a modelos soacutelidos Para determinaccedilatildeo dos

elementos da aqui chamada Regra 1 (seccedilatildeo 41) este meacutetodo utiliza uma octree

[1] que subdivide o espaccedilo do modelo em trecircs fora dentro ou no contorno do

modelo Estes espaccedilos satildeo determinados pela classificaccedilatildeo dos noacutes da octree a

partir da Regra 2 Tambeacutem eacute usado o meacutetodo TINN - Triangle Inequality Nearest

Neighbour [19] - para otimizar a pesquisa dentro do noacute A seguir descrevemos o

modelo usado neste meacutetodo apresentando os dados associados aos pontos o

tipo de distribuiccedilatildeo e o algoritmo que realiza as operaccedilotildees

421 Modelo por Pontos em Adams e Dutreacute

Os surfels neste meacutetodo contecircm as seguintes informaccedilotildees posiccedilatildeo do

surfel xs orientaccedilatildeo do surfel ns e raio de alcance do surfel rs O surfel pode ser

pensado como um disco ortogonal a ns com centro xs e raio rs O raio eacute

escolhido de tal forma que a projeccedilatildeo dos discos no plano da imagem se

sobreponham

Operaccedilotildees Booleanas com Pontos 34

Os objetos representados satildeo soacutelidos A distribuiccedilatildeo dos surfels eacute

uniforme embora o algoritmo natildeo exija esta condiccedilatildeo Para cada soacutelido eacute

definido um rmax = Max rs o raio de alcance do maior surfel pertencente agrave

superfiacutecie do soacutelido Como o raio eacute escolhido de tal forma que a projeccedilatildeo dos

discos no plano da imagem se sobreponham o controle da amostragem eacute

entatildeo ligado agrave renderizaccedilatildeo

422 Algoritmo de Operaccedilotildees Booleanas

Utilizando objetos modelados da forma descrita acima o meacutetodo realiza

operaccedilotildees de uniatildeo interseccedilatildeo e diferenccedila com modelos soacutelidos Supondo dois

modelos soacutelidos S1 e S2 O algoritmo pode ser dividido nas seguintes etapas

Criaccedilatildeo de uma octree para cada modelo Teste Dentro-Fora Tratamento da

interseccedilatildeo Estas etapas satildeo apresentadas nas proacuteximas seccedilotildees

4221 Criaccedilatildeo de uma octree para cada modelo

Eacute criada uma octree [1] para cada modelo A criaccedilatildeo de uma octree eacute feita

da seguinte forma

Gera-se a ldquoCaixa envolventerdquo caixa alinhada com os eixos que conteacutem

todo o modelo A ldquoCaixa envolventerdquo corresponde ao noacute raiz da octree Este noacute

conteacutem inicialmente todos os surfels do modelo Em seguida o noacute raiz eacute

dividido em oito noacutes filhos Os surfels satildeo distribuiacutedos entre estes oito noacutes Cada

um deles caso contenha surfels eacute dividido novamente em 8 filhos e seus surfels

satildeo redistribuiacutedos entre eles Este processo eacute repetido recursivamente enquanto

o nuacutemero de surfels do noacute for maior que zero ou ateacute uma profundidade maacutexima

preacute-definida da octree ser alcanccedilada

Cada noacute da octree deve ser classificado O objetivo desta classificaccedilatildeo eacute

determinar que parte da octree estaacute dentro do modelo e que parte estaacute fora Os

noacutes da octree satildeo entatildeo classificados como ldquodentrordquo ldquoforardquo e ldquocontornordquo

Podemos ilustrar esta classificaccedilatildeo em 2D a Figura 9 mostra uma quadtree

classificada

Operaccedilotildees Booleanas com Pontos 35

Figura 9-Um objeto representado por pontos com suas normais e sua quadtree correspondente classificada os noacutes cinza claro estatildeo dentro do modelo noacutes cinza mais escuro estatildeo fora do modelo e noacutes com cinza intermediaacuterio satildeo noacutes cheios noacutes que conteacutem pontos

O noacutes que conteacutem surfels satildeo classificados como ldquocontornordquo Para

classificar um noacute vazio existem trecircs casos

o noacute vazio tem apenas um vizinho-irmatildeo natildeo vazio

o noacute vazio tem mais de um vizinho-irmatildeo natildeo vazio

o noacute vazio natildeo tem vizinhos-irmatildeos natildeo vazios

No primeiro caso o noacute vazio eacute classificado pelo seu vizinho natildeo vazio No

segundo caso considera-se qualquer um dos vizinhos natildeo vazios No terceiro

caso classifica-se primeiro os noacutes vizinhos e eacute dada a mesma classificaccedilatildeo para

o noacute vazio Como cada noacute natildeo folha de uma octree tem pelo menos um noacute filho

natildeo vazio sempre pode ser feita a classificaccedilatildeo dos noacutes vazios A classificaccedilatildeo

eacute feita da seguinte forma dentre os surfels do vizinho-irmatildeo escolhido encontra-

se o surfel mais proacuteximo ao noacute a ser classificado Se a normal deste surfel

aponta para o noacute vazio a ser classificado entatildeo ele eacute classificado como ldquoforardquo

Se a normal aponta no sentido contraacuterio entatildeo ele eacute classificado como ldquodentrordquo

De maneira mais formal sejam cv e cc coordenadas dos centros do noacute vazio e

do noacute contorno respectivamente Seja s o surfel mais proacuteximo ao noacute vazio e ns

a normal em s Se ( cv - cc )٠ ns gt 0 ( produto interno entre a normal em s e o

vetor cv - cc for maior que zero ) o noacute vazio seraacute classificado como ldquoforardquo

Senatildeo seraacute classificado como ldquodentrordquo

Em geral os noacutes ldquocontornordquo satildeo subdivididos em trecircs partes uma que estaacute

fora do modelo uma que estaacute dentro do modelo e uma terceira que conteacutem os

surfels Esta subdivisatildeo eacute feita por meio da criaccedilatildeo de dois planos paralelos que

Operaccedilotildees Booleanas com Pontos 36

dividem o noacute Para determinar estes planos calcula-se o vetor nm igual agrave

meacutedia das normais dos surfels do noacute nm = sum ns sum ns onde ns eacute a normal de

cada surfel do noacute

Em seguida encontra-se o surfel com maior produto interno entre a sua

normal e a normal meacutedia d1=Max(nm ٠ ns) Este surfel juntamente com a normal

meacutedia define um dos planos Encontra-se tambeacutem o surfel com menor produto

interno entre a sua normal e a normal meacutedia d2=Min(nm ٠ ns) Este surfel

juntamente com a normal meacutedia define o outro plano A Figura 10 mostra a

divisatildeo de um noacute de uma quadtree nas trecircs partes dentro do modelo fora do

modelo e no ldquocontornordquo

Esta subdivisatildeo aplica-se apenas a noacutes que conteacutem surfels cujas direccedilotildees

natildeo variem em mais de 90 graus Caso isso ocorra ele natildeo seraacute subdividido Ou

seja se um noacute possuir dois vetores normais (de dois surfels diferentes) que

formem um acircngulo maior que 90 graus ele natildeo seraacute subdividido

Figura 10 [2] -Divisatildeo de noacute de contorno a parte agrave esquerda estaacute fora do modelo a parte agrave direita estaacute dentro do modelo e a faixa intermediaacuteria conteacutem os surfels

4222 Teste Dentro-Fora

O Teste Dentro-Fora faz a classificaccedilatildeo dos surfels de um modelo como

ldquodentrordquo ou ldquoforardquo de outro modelo Portanto aplicaremos este mesmo teste duas

vezes uma para o modelo S1 em relaccedilatildeo ao modelo S2 e outra para S2 em

relaccedilatildeo a S1 Vamos mostrar o teste Dentro-Fora para o caso da classificaccedilatildeo

dos surfels do modelo S1 em relaccedilatildeo a S2

Operaccedilotildees Booleanas com Pontos 37

No item anterior foram criadas duas octrees uma para o modelo S1 e

outra para o modelo S2 Chamemos de A e B as octrees de S1 e S2

respectivamente Para classificar S1 em relaccedilatildeo a S2 inicialmente eacute feita uma

avaliaccedilatildeo da posiccedilatildeo de A em relaccedilatildeo a B A e B podem estar nas seguintes

situaccedilotildees

- A natildeo intersecta B

- A intersecta apenas noacutes ldquoforardquo de B

- A intersecta apenas noacutes ldquodentrordquo de B

- A intersecta noacutes ldquoforardquo e noacutes ldquodentrordquo de B

Para testar estas situaccedilotildees os noacutes satildeo aumentados de rmax o raio do

maior surfel do modelo soacutelido Isto eacute feito para compensar o fato de que o surfel

natildeo eacute apenas um ponto mas sim considerado como um disco

No primeiro e no segundo caso todos os surfels de A satildeo classificados

como ldquoforardquo No terceiro caso todos os surfels de A satildeo classificados como

ldquodentrordquo

No quarto caso temos que percorrer a octree A Comeccedilando pelo noacute raiz

percorre-se os filhos deste noacute Para cada filho os quatro testes acima satildeo feitos

Se o noacute filho encontra-se em um dos trecircs primeiros casos a classificaccedilatildeo eacute dada

como foi citada acima Se um filho estaacute no quarto caso e natildeo eacute um noacute folha

repete-se recursivamente o mesmo procedimento para seus filhos ateacute encontrar-

se um noacute folha Para um noacute que estaacute no quarto caso e eacute folha percorre-se a lista

de surfels que este noacute conteacutem classificando cada um destes surfels Seja sa um

surfel desta lista Para este caso percorre-se a octree B para classificar sa

Primeiramente encontramos o noacute de B que conteacutem sa Se este noacute de B foi

dividido testa-se de acordo com esta divisatildeo do noacute se o surfel sa estaacute na parte

do noacute que estaacute dentro do modelo ele eacute classificado como ldquodentrordquo se sa estaacute na

parte que estaacute fora do modelo ele eacute classificado como ldquoforardquo se sa estaacute na parte

intermediaacuteria ou se o noacute de B natildeo foi subdividido em planos encontra-se sb que

eacute o surfel pertencente a este noacute de B que estaacute mais proacuteximo de sa sa seraacute

entatildeo classificado de acordo com sb Se ( sa - sb )٠ nb gt 0 sa eacute classificado

como ldquoforardquo senatildeo eacute classificado como ldquodentrordquo Se os discos de sb e sa se

intersectam sa eacute marcado como interseccedilatildeo Para encontrar sb o algoritmo

implementa o meacutetodo TINN ndash Triangle Inequality Nearest Neighbour [19]

Operaccedilotildees Booleanas com Pontos 38

4223 Tratamento da interseccedilatildeo

Os surfels de A que intersectam surfels de B satildeo classificados como

ldquointerseccedilatildeordquo Se eles natildeo forem incluiacutedos no modelo resultado o soacutelido resultado

teraacute buracos Se eles forem incluiacutedos sem algum tratamento eles natildeo

representaratildeo adequadamente a regiatildeo Em geral o surfel sa (um surfel

ldquointerseccedilatildeordquo de A) eacute dividido em dois pelo plano que conteacutem o surfel sb (surfel de

B que sa intersecta) uma parte que estaacute fora de B e outra que estaacute dentro de B

Dependendo da operaccedilatildeo que estaacute sendo realizada vamos querer manter uma

destas partes do surfel sa no modelo resultado Seja xa a posiccedilatildeo do surfel sa e o

surfel sa uma circunferecircncia de centro xa e raio ra igual ao raio de alcance de sa

O plano que conteacutem o surfel sb define uma corda desta circunferecircncia como

mostra a Figura 11 O surfel sa seraacute substituiacutedo por um surfel menor que

ultrapassa esta corda de uma distacircncia e definida pelo usuaacuterio Para cobrir

completamente a interseccedilatildeo seratildeo adicionados surfels menores que cruzam a

corda de interseccedilatildeo

Figura 11 -Interseccedilatildeo do surfel s e do plano que passa pelo surfel t o surfel mais proacuteximo a s O surfel s eacute substituiacutedo por trecircs surfels menores

Operaccedilotildees Booleanas com Pontos 39

O tratamento de interseccedilatildeo proposto por Adams e Dutreacute [2] natildeo soacute evita

os buracos mas tambeacutem cria uma forma de renderizaccedilatildeo de arestas vivas A

colocaccedilatildeo de vaacuterios pequenos surfels na regiatildeo da interseccedilatildeo permite esta

correta renderizaccedilatildeo das ldquoarestas vivasrdquo Desta forma o problema das arestas

vivas eacute resolvido na modelagem (Figura 12) A vantagem de se resolver o caso

na modelagem eacute que natildeo eacute necessaacuterio fazer um tratamento especial na

renderizaccedilatildeo para que mostre esta aresta viva Diferente do tratamento feito

em Pauly (seccedilatildeo 431) que resolve esta questatildeo em tempo de renderizaccedilatildeo

Aleacutem disso o tratamento resolve alguns casos onde a Regra 2 poderia falhar

(veja em Validade da Regra 2-seccedilatildeo 44)

Figura 12 [2] -Agrave direita eacute mostrado o resultado do tratamento de interseccedilatildeo para o caso de Arestas Vivas do objeto agrave esquerda

43 Meacutetodo de Pauly

O meacutetodo aplica-se a objetos soacutelidos e natildeo soacutelidos Os modelos podem ser

obtidos a partir de diferentes entradas como nuvem de pontos irregulares ou por

meio de scanners 3D Cria um modelo hiacutebrido destes objetos usa o modelo por

pontos juntamente com a representaccedilatildeo impliacutecita Moving Least Squares - MLS

[18] Realiza operaccedilotildees booleanas com pontos e utiliza adicionalmente MLS

para alguns casos de classificaccedilatildeo de surfels e no tratamento de interseccedilatildeo A

seguir apresentamos as caracteriacutesticas do modelo por pontos deste meacutetodo e o

algoritmo que realiza as operaccedilotildees

Operaccedilotildees Booleanas com Pontos 40

431 Modelo em Pauly

O modelo eacute uma estrutura hiacutebrida de pontos com a representaccedilatildeo impliacutecita

Moving Least Squares - MLS [18] Esta estrutura eacute usada para fazer operaccedilotildees

booleanas e tambeacutem operaccedilotildees de free-form (natildeo abordadas nesta

dissertaccedilatildeo) Para operaccedilotildees booleanas a representaccedilatildeo MLS permite que a

curva de interseccedilatildeo entre os modelos seja reconstruiacuteda e surfels sejam

colocados nesta curva e em alguns casos de classificaccedilatildeo de surfels mostrados

na seccedilatildeo 432 Para este modelo natildeo existem restriccedilotildees quanto agrave forma do

objeto

Os surfels contecircm informaccedilotildees sobre sua posiccedilatildeo e sua normal Aleacutem

disso surfels podem conter informaccedilotildees adicionais como textura cor

propriedades de materiais

A distribuiccedilatildeo dos surfels eacute natildeo-uniforme e a amostragem eacute

aproximadamente adequada (Veja seccedilatildeo 44)

432 Algoritmo de Operaccedilotildees Booleanas

O algoritmo classifica surfels de um modelo como ldquodentrordquo ou ldquoforardquo de

outro modelo Antes de colocarmos como eacute feita esta classificaccedilatildeo devemos

acrescentar que Pauly estende esta classificaccedilatildeo para modelos que natildeo satildeo

soacutelidos Ou seja mesmo um modelo natildeo soacutelido divide o espaccedilo da cena (espaccedilo

em que se encontra o modelo) em dois sub-espaccedilos dentro ou fora do modelo

Pauly faz esta subdivisatildeo da seguinte forma

Como a superfiacutecie que determina o modelo eacute orientada (conteacutem vetores

normais agrave superfiacutecie que apontam para ldquoforardquo do modelo) Pauly considera que

um modelo natildeo soacutelido divide o espaccedilo em dois sub-espaccedilos um ldquoforardquo do

modelo (os vetores normais apontam para este sub-espaccedilo) e um que estaacute

ldquodentrordquo do modelo (os vetores normais apontam para direccedilatildeo oposta a este sub-

espaccedilo) Por exemplo um plano eacute representado como um conjunto de surfels

contidos num determinado espaccedilo geomeacutetrico plano π Cada surfel conteacutem um

vetor normal direcionado Este modelo divide entatildeo o espaccedilo em dois sub-

espaccedilos o sub-espaccedilo que eacute apontado por estes surfels (considerado ldquoforardquo do

modelo) e o sub-espaccedilo que estaacute na direccedilatildeo oposta (considerado ldquodentrordquo do

modelo) Desta forma ele aplica as classificaccedilotildees de ldquodentrordquo e ldquoforardquo de um

modelo tambeacutem a modelos natildeo soacutelidos A partir desta consideraccedilatildeo as

Operaccedilotildees Booleanas com Pontos 41

operaccedilotildees booleanas satildeo realizadas com os modelos natildeo soacutelidos da mesma

forma que com os modelos soacutelidos

Para determinar esta classificaccedilatildeo (dentro ou fora do modelo) Pauly utiliza

a Regra 2 Para pesquisa do surfel mais proacuteximo o meacutetodo usa a estrutura Kd-

tree [16] e tambeacutem o algoritmo ANN [16] No entanto o meacutetodo apresenta uma

restriccedilatildeo da Regra 2 ela soacute deve ser usada para classificaccedilotildees de pontos x se

a distacircncia x-p for maior que o espaccedilamento da amostragem local ηp em p

Este espaccedilamento da amostragem local ηp em p eacute um caacutelculo aproximado da

distacircncia meacutedia entre os surfels vizinhos a p Se x estaacute muito proacuteximo agrave

superfiacutecie a classificaccedilatildeo pode falhar Neste caso ele calcula o ponto exato de

S mais proacuteximo a x usando a projeccedilatildeo MLS (ldquoMoving Least Squaresrdquo)

Por questotildees de melhoria de desempenho utiliza-se o fato de que sendo

Ωp (x) a classificaccedilatildeo do ponto x em relaccedilatildeo agrave amostragem P tem-se que Ωp (x)

= Ωp (xrsquo) para todos os pontos de xrsquo que estatildeo dentro da esfera de centro x e

raio igual a x-p - ηp (onde p eacute o surfel mais proacuteximo e ηp eacute o espaccedilamento

local da amostragem em p acima citado) Ou seja sendo x um ponto qualquer p

o surfel mais proacuteximo a x ηp eacute o espaccedilamento local da amostragem em p se

desenharmos uma esfera com centro x e raio igual a x-p - ηp temos que

todos os pontos xrsquo que estatildeo dentro da esfera teratildeo a mesma classificaccedilatildeo de x

Desta forma o nuacutemero de vezes que a classificaccedilatildeo eacute feita (pesquisando-se o

surfel mais proacuteximo ao ponto e usando a Regra 2) diminui em ateacute 90 Assim

em geral a classificaccedilatildeo de um surfel eacute obtida a partir do seu surfel vizinho

Dados

S1 a superfiacutecie MLS de contorno que define o modelo A

S2 a superfiacutecie MLS de contorno que define o modelo B

P1 o conjunto de surfels que representa a superfiacutecie S1

P2 o conjunto de surfels que representa a superfiacutecie S2

Ωp1 (x) a classificaccedilatildeo do ponto p em relaccedilatildeo a uma amostragem P1

Q1 o subconjunto de P1 que vai compor o resultado

Ωp2 (x) a classificaccedilatildeo do ponto p em relaccedilatildeo a uma amostragem P2

Q2 o subconjunto de P2 que vai compor o resultado

Os conjuntos Q1 e Q2 satildeo obtidos por meio da Tabela 1 mostrada abaixo

Operaccedilotildees Booleanas com Pontos 42

Tabela 1 Classificaccedilatildeo para operaccedilotildees booleanas

Para o tratamento de interseccedilatildeo neste meacutetodo satildeo computados pontos

que caem exatamente na curva de interseccedilatildeo e estes satildeo acrescentados ao

modelo resultado Estes pontos satildeo determinados de forma que a densidade da

amostragem vai crescendo agrave medida que os surfels se aproximam da curva de

interseccedilatildeo e convergem para este ponto de interseccedilatildeo como mostra a Figura

13

(a) (b) (c)

Figura 13 - Os novos surfels satildeo colocados exatamente na curva de interseccedilatildeo

e convergem para o ponto de interseccedilatildeo

A Figura 14 mostra o processo de encontrar os surfels que caem nesta

curva de interseccedilatildeo Inicialmente satildeo encontrados todos os pontos de Q1 e Q2

que estatildeo proacuteximos agrave curva de interseccedilatildeo por meio da funccedilatildeo de distacircncia do

operador de projeccedilatildeo MLS Em seguida procura-se todos os pares mais

proacuteximos (q1 є Q1 q2 є Q2 ) e computa-se o ponto q na curva de interseccedilatildeo da

seguinte forma (veja a Figura 14)Seja r o ponto na linha de interseccedilatildeo dos dois

planos tangentes em q1 e q2 e que estaacute mais proacuteximo a estes dois pontos isto eacute

que minimiza a distacircncia ||r-q1|| + ||r-q2|| r eacute a primeira aproximaccedilatildeo de q e agora

pode ser projetado sobre S1 e S2 para obter dois novos pontos de partida q1rsquo e q2

rsquo

para a iteraccedilatildeo Este procedimento pode ser repetido iterativamente ateacute que os

pontos q1 e q2 convirjam ao ponto q na curva de interseccedilatildeo Normalmente este

processo requer menos de trecircs iteraccedilotildees

Operaccedilotildees Booleanas com Pontos 43

(a) (b)

(c)

Figura 14 (a) Suponhamos a reta que eacute a interseccedilatildeo do plano tangente a S1 em q1 e o

plano tangente a S2 em q2 O ponto r eacute o ponto desta reta que estaacute mais proacuteximo a q1 e

q2 (b) r eacute projetado sobre S1 e S2 obtendo-se q1acute e q2acute dois novos pontos de partida

para nova iteraccedilatildeo (c) A nova iteraccedilatildeo gera r que eacute uma aproximaccedilatildeo melhor de q

Pauly faz o tratamento de arestas vivas em tempo de renderizaccedilatildeo Ele

faz uma alteraccedilatildeo no renderizador Marca os surfels de interseccedilatildeo e ao

renderizaacute-los satildeo cortados para gerar uma aresta viva

44 Validade da Regra 2

Os dois meacutetodos analisados nesta dissertaccedilatildeo utilizam a seguinte regra

para a classificaccedilatildeo de um surfel

Regra 2 dado um volume V determinado por uma superfiacutecie de contorno

S uma amostragem P da superfiacutecie S um ponto x qualquer um ponto p є P que

eacute a amostra mais proacutexima a x um vetor ny normal a S em p e orientado para

fora de S temos que (x ndash p) np gt 0 x notinV

Em [16] eacute colocado que esta regra eacute tirada da seguinte propriedade da

geometria diferencial (aqui chamada Propriedade 1)

Propriedade 1 Dado um volume V determinado por uma superfiacutecie de

contorno S contiacutenua e duplamente diferenciaacutevel um ponto x qualquer um ponto

Operaccedilotildees Booleanas com Pontos 44

y є S que eacute o ponto de S mais proacuteximo a x um vetor ny normal a S em y e

orientado para fora de S temos que (x ndash y) ny gt 0 x notinV

A Figura 15 ilustra esta propriedade

Figura 15 Para verificar se o ponto x estaacute fora de um contorno C encontra-se o ponto y

de C Se o produto interno entre a normal em y e o vetor que liga y a x for maior que

zero entatildeo x estaacute fora de C senatildeo estaacute dentro de C

Pauly assume que tendo uma amostragem P da superfiacutecie S podemos

usar a Propriedade 1 substituindo y por p o surfel mais proacuteximo ao ponto x (x ndash

p) np gt 0 x notinV (Regra 2) Esta amostragem P em seu trabalho eacute

(aproximadamente) uma ldquoamostragem adequadardquo Tambeacutem seu tratamento de

interseccedilatildeo cria uma aproximaccedilatildeo dela (seccedilatildeo 43) Empiricamente a

ldquodiscretizaccedilatildeo da propriedaderdquo eacute vaacutelida a partir desta suposiccedilatildeo Mas isso natildeo foi

demonstrado teoricamente em seu trabalho

Pauly coloca em [16] que natildeo existe ainda uma teoria matemaacutetica rigorosa

de amostragem anaacuteloga a teoria de Fourier para superfiacutecies discretas

A melhor aproximaccedilatildeo teoacuterica para esta aacuterea eacute o uso do Eixo Medial que

foi colocado em [10] Vamos descrever este trabalho brevemente nesta seccedilatildeo

Este trabalho apresenta um algoritmo de reconstruccedilatildeo de superfiacutecie que parte de

uma amostragem adequada (abaixo definida) de pontos e obteacutem uma malha

que eacute topologicamente equivalente agrave superfiacutecie do objeto e agrave medida que a

densidade da amostragem cresce a saiacuteda converge para esta superfiacutecie

Para definir amostragem adequada o trabalho parte do conceito de Eixo

Medial

Operaccedilotildees Booleanas com Pontos 45

ldquoEixo Medialrdquo de uma superfiacutecie 2D posicionada no R3 eacute o conjunto

(fechado) de pontos pi para os quais buscando-se o ponto da superfiacutecie que

estaacute mais proacuteximo a pi mais de um ponto pertencentes a esta superfiacutecie satildeo

encontrados A Figura 16 abaixo ilustra o Eixo Medial em 2D

Figura 16 [10] As curvas de cor mais clara satildeo o Eixo Medial da curva em preto

Em duas dimensotildees os veacutertices de Voronoi de uma amostragem densa

aproximam o ldquoEixo Medialrdquo da amostragem (mas esta propriedade natildeo se

estende a 3D) A Figura 17 mostra o Eixo Medial em 3D

Figura 17 [10] Em 3D geralmente o Eixo Medial eacute uma superfiacutecie 2D (em cor mais

clara) Aqui o quadrado eacute o Eixo Medial da superfiacutecie transparente que o contorna

Podemos definir agora a amostragem adequada da seguinte forma

Supondo uma superfiacutecie suave que quer dizer uma 2-manifold duplamente

diferenciaacutevel posicionada no R3 uma ldquoamostragem adequadardquo desta superfiacutecie eacute

aquela na qual a densidade da amostragem eacute (pelo menos) inversamente

proporcional agrave distacircncia ao ldquoEixo Medialrdquo A Figura 18 mostra uma amostragem

adequada

Operaccedilotildees Booleanas com Pontos 46

Figura 18 [10] A figura mostra o diagrama de Voronoi de uma amostragem de pontos S

Da mesma forma que o a amostragem aproxima a curva os veacutertices de Voronoi

aproximam o Eixo Medial

Na praacutetica na reconstruccedilatildeo da superfiacutecie uma aproximaccedilatildeo deste ldquoEixo

Medialrdquo eacute computada (devido agrave dificuldade de computaacute-lo exatamente e em

alguns casos ateacute impossibilidade)

Melhorias Propostas 47

5 Melhorias Propostas

No capiacutetulo 4 apresentamos dois meacutetodos que realizam operaccedilotildees

booleanas em modelos por pontos o meacutetodo de Adams e Dutreacute [2] e o meacutetodo

de Pauly[3] Para esta dissertaccedilatildeo usamos o meacutetodo de Adams e Dutreacute [2] e

propomos as seguintes melhorias

- Alteramos o momento em que eacute feita a classificaccedilatildeo da octree Fazemos

esta classificaccedilatildeo durante a sua criaccedilatildeo Os noacutes filhos de um noacute pai P qualquer

satildeo classificados logo apoacutes a criaccedilatildeo de todos estes filhos de P

independentemente do restante da octree ter sido criada Isso pode ser feito

porque a octree eacute construiacuteda na ordem raiz-esquerda-direita (preorder

traversal) e portanto apoacutes todos os filhos de um noacute pai serem criados a parte

necessaacuteria da octree para a classificaccedilatildeo destes filhos jaacute estaacute criada

- A classificaccedilatildeo da octree eacute otimizada classificando-se os cantos dos seus

noacutes como dentro ou fora do modelo Na classificaccedilatildeo de um noacute n1 a partir de seu

vizinho n2 se os cantos que satildeo comuns a n1 e n2 tiverem a mesma

classificaccedilatildeo esta seraacute dada ao noacute Assim diminuiacutemos o nuacutemero de pesquisas

pelo surfel mais proacuteximo que eacute a parte criacutetica da classificaccedilatildeo dos noacutes da octree

em termos de tempo de processamento

- Acrescentamos um valor miacutenimo (maior que zero) para o nuacutemero de

surfels contidos em um noacute que eacute uma das condiccedilotildees de parada na criaccedilatildeo da

octree Verificamos que desta forma diminui-se a chance de erro na classificaccedilatildeo

de partes criacuteticas como ldquoarestas vivasrdquo

Uma comparaccedilatildeo entre a nossa implementaccedilatildeo e a de Pauly tambeacutem seraacute

feita no capiacutetulo 6

51 Descriccedilatildeo do algoritmo

O algoritmo implementado para esta dissertaccedilatildeo baseado no meacutetodo de

Adams e Dutreacute [2] pode ser dividido nas seguintes partes Criaccedilatildeo e

classificaccedilatildeo de uma octree para cada modelo Teste DentroFora Criaccedilatildeo do

modelo resultado Natildeo foi implementado tratamento especial algum de

interseccedilatildeo para o nosso plugin As proacuteximas seccedilotildees apresentam estas partes

Melhorias Propostas 48

511 Criaccedilatildeo e classificaccedilatildeo de uma octree para cada modelo

As ideacuteias do algoritmo satildeo aqui ilustradas em 2D mas a extensatildeo delas

para 3D eacute feita facilmente

Para cada modelo a octree eacute criada e classificada da seguinte forma

Figura 19-Quadtree classificada Os noacutes mais escuros estatildeo fora do modelo os mais claros dentro e os em tom intermediaacuterio satildeo noacutes de contorno

Gera-se uma ldquocaixa envolventerdquo do modelo contendo todos os surfels e

cria-se o noacute raiz da octree que corresponde a esta ldquocaixa envolventerdquo Este noacute

raiz eacute subdividido em oito filhos e seus surfels satildeo distribuiacutedos entre eles Ao

inveacutes de testarmos os valores de xy e z para cada surfel a fim de determinar

para qual filho ele iraacute utilizamos listas auxiliares Primeiro os surfels satildeo

subdivididos em dois grupos pelos valores de x e armazenados em uma lista

auxiliar Em seguida cada uma das listas eacute subdividida pelo valor de y e as

quatro listas obtidas seratildeo subdivididas pelo valor de z Ao final teremos 8 listas

de surfels cada uma delas pertencente a um filho

Cada noacute seraacute entatildeo novamente subdividido enquanto contiver um nuacutemero

de surfels gt nmin (valor preacute-definido) ou enquanto a profundidade da aacutervore lt pmax

(valor preacute-definido) Na figura 19 pmax = 3 e nmin = 3

Melhorias Propostas 49

Figura 20-O noacute cheio eacute dividido em trecircs partes agrave esquerda a regiatildeo estaacute dentro do modelo agrave direita estaacute fora e entre as duas linhas que dividem o noacute estaacute a regiatildeo que conteacutem os surfels

Os noacutes cheios recebem um tratamento especial Eles satildeo subdivididos em

trecircs partes da seguinte forma uma que estaacute fora do modelo outra que estaacute

dentro e uma que conteacutem os surfels Esta subdivisatildeo eacute feita por meio da criaccedilatildeo

de dois planos paralelos que dividem o noacute Para determinar estes planos

calcula-se o vetor nm igual agrave meacutedia das normais dos surfels do noacute nm = sum ns

sum ns onde ns eacute a normal de cada surfel do noacute Em seguida encontra-se o

surfel com maior produto interno entre a sua normal e a normal meacutedia

d1=Max(nm ٠ ns) Este surfel juntamente com a normal meacutedia define um dos

planos Encontra-se tambeacutem o surfel com menor produto interno entre a sua

normal e a normal meacutedia d2=Min (nm ٠ ns) Este surfel juntamente com a normal

meacutedia define o outro plano (Figura 20) Se o noacute conteacutem surfels de superfiacutecies de

orientaccedilotildees diferentes ele natildeo seraacute subdividido ou seja os planos coincidiratildeo

com os planos que delimitam o proacuteprio noacute Este teste foi implementado da

seguinte forma escolhe-se um surfel qualquer do noacute Calcula-se o produto

interno entre a normal deste surfel e as outras normais dos outros surfels deste

noacute Se algum produto interno for menor que zero este noacute natildeo seraacute subdividido

Apoacutes a etapa de subdivisatildeo classificam-se os oito cantos deste noacute como

dentro ou fora do modelo por meio da classificaccedilatildeo de um ponto que

descreveremos na sub-seccedilatildeo 5111

Melhorias Propostas 50

a b

c d

Figura 21-O noacute a eacute classificado pelo noacute c o noacute d tambeacutem eacute classificado pelo noacute c a classificaccedilatildeo do noacute a eacute propagada para o noacute b

Jaacute os noacutes vazios da octree seratildeo classificados como ldquodentrordquo ou ldquoforardquo do

modelo da seguinte forma cada noacute folha vazio eacute classificado a partir de um de

seus irmatildeos vizinhos adjacentes Se ele possuir um vizinho adjacente cheio ele

seraacute classificado por este vizinho se natildeo possuir os vizinhos adjacentes seratildeo

classificados primeiro e ele teraacute esta mesma classificaccedilatildeo (Figura 21) Como tem

que existir sempre pelo menos um noacute cheio entre os filhos de um noacute pai entatildeo

sempre esta classificaccedilatildeo poderaacute ser feita Com a classificaccedilatildeo de todos os

filhos tem-se tambeacutem a classificaccedilatildeo dos cantos do noacute pai

Mf03c003fmx a b

Figura 22-Os cantos a e b do noacute cheio possuem a mesma classificaccedilatildeo fora do modelo Esta classificaccedilatildeo foi dada ao noacute vazio adjacente

Melhorias Propostas 51

Para classificar um noacute vazio por meio de um noacute cheio verificam-se os

cantos comuns destes dois noacutes se todos os cantos tiverem a mesma

classificaccedilatildeo esta seraacute dada ao noacute vazio (Figura 22) Se houver classificaccedilotildees

diferentes escolhe-se o surfel do noacute cheio mais proacuteximo ao noacute vazio faz-se o

produto interno entre a normal deste surfel e o vetor que liga o centro do noacute

cheio ao centro do noacute vazio (ou o vetor que liga o surfel ao centro do noacute vazio)

Se o produto interno for maior que zero o noacute eacute classificado como ldquoforardquo senatildeo eacute

classificado como ldquodentrordquo Para encontrar o surfel (pertencente a um noacute cheio)

mais proacuteximo ao noacute vazio existem dois casos

- O noacute cheio eacute folha percorre-se toda a lista de surfels e escolhe o surfel

mais proacuteximo da fronteira entre o noacute cheio e o vazio

- O noacute cheio natildeo eacute um noacute folha percorrem-se os filhos do noacute cheio ou seja

esta pesquisa eacute feita descendo na octree a partir do noacute cheio procurando o

surfel mais proacuteximo agrave fronteira do pai com o noacute vazio a ser classificado

Classificando o centro do noacute vazio todo o noacute deve ter a mesma

classificaccedilatildeo pois este noacute natildeo conteacutem surfels Para encontrar o surfel do noacute

vazio mais proacuteximo da fronteira entre o noacute cheio e o vazio basta testar o valor da

coordenada se a fronteira eacute o lado direito do noacute cheio escolhe-se o surfel com

maior coordenada lsquoxrsquo se eacute o lado esquerdo escolhe-se o surfel com menor lsquoxrsquo

se lado superior surfel com maior lsquoyrsquo etc A seguir apresentamos a classificaccedilatildeo

de um ponto qualquer pertencente a um noacute cheio

Figura 23- Quadtree classificada

Melhorias Propostas 52

5111 Classificaccedilatildeo de um ponto de um noacute cheio

Figura 24 [2] A normal n eacute a normal meacutedia e os surfels s1 e s2 juntamente com a normal

n definem as retas que dividem o noacute O ponto a estaacute fora do modelo e o ponto b estaacute

dentro do modelo

Para um ponto localizado dentro do noacute faz-se o seguinte teste se o noacute foi

dividido testa-se de acordo com a divisatildeo do noacute se o ponto estaacute na parte do noacute

que estaacute dentro do modelo ele eacute classificado como ldquodentrordquo se o ponto estaacute na

parte que estaacute fora do modelo ele eacute classificado como ldquoforardquo (Figura 24) se o

ponto estaacute na parte que conteacutem os surfels encontra-se o surfel s pertencente ao

noacute mais proacuteximo do ponto e o classifica de acordo com s seja ns a normal em s

cs a coordenada de s cp a coordenada do ponto Se (cp - cs )٠ ns gt 0 o ponto

seraacute classificado como ldquoforardquo Senatildeo seraacute classificado como ldquodentrordquo

Se o noacute natildeo foi dividido em planos esta classificaccedilatildeo a partir do surfel

mais proacuteximo seraacute sempre feita

512 Teste DentroFora

Melhorias Propostas 53

Figura 25-Duas circunferecircncias e suas quadtrees correspondentes

O Teste DentroFora classifica os surfels de um modelo como dentro ou

fora de outro modelo ou na sua interseccedilatildeo Este teste foi aqui implementado

exatamente como foi proposto em Adams e Dutreacute [2] exceto que natildeo foi

implementado o meacutetodo TINN - Triangle Inequality Nearest Neighbour [19]

Cada octree eacute percorrida verificando-se se os seus noacutes ou surfels estatildeo dentro

fora ou no contorno do outro modelo (Figura 25) Sejam A e B duas octrees e

queremos classificar a octree A As duas octrees (AB) satildeo percorridas partindo

da raiz

Para cada noacute de A existem quatro casos (Figura 26) Para testar estas

situaccedilotildees os boxes dos noacutes satildeo aumentados de rmax o raio do maior surfel do

modelo Isto eacute feito para compensar o fato de que o surfel natildeo eacute apenas um

ponto mas sim considerado como um disco

Os quatro casos satildeo

Se o noacute de A natildeo intersecta B entatildeo todos os surfels deste noacute satildeo

classificados como fora

Se o noacute de A intersecta apenas noacutes de B que estatildeo fora do modelo

todos os surfels deste noacute satildeo fora

Se o noacute de A intersecta apenas noacutes de B que estatildeo dentro do modelo

todos os surfels deste noacute satildeo dentro

Melhorias Propostas 54

Se o noacute de A intersecta noacutes de B que estatildeo dentro e tambeacutem noacutes de B

que estatildeo fora testa-se se este noacute de A eacute ou natildeo folha Se natildeo for folha

percorre-se os filhos deste noacute de A ateacute encontrar um noacute folha cheio que

intersecta B Para cada surfel sa deste noacute folha de A encontra-se o surfel de B

mais proacuteximo e classifica-se a coordenada de sa da forma apresentada na seccedilatildeo

5111 Seja sb o surfel usado na classificaccedilatildeo de sa Se os discos de sb e sa

se intersectam sa eacute classificado como ldquointerseccedilatildeordquo

(a) (b)

(c) (d)

Figura 26- a modelos natildeo se intersectam b modelo intersecta noacutes fora c modelo intersecta apenas noacutes dentro d modelo intersecta noacutes dentro e noacutes fora

513 Criaccedilatildeo do modelo resultado

Um novo modelo eacute criado com os seguintes surfels (de acordo com a

operaccedilatildeo booleana escolhida pelo usuaacuterio - veja Regra 1 da seccedilatildeo 41)

Uniatildeo - surfels de A que estatildeo fora de B + surfels de B que estatildeo fora de A

Melhorias Propostas 55

Interseccedilatildeo - surfels de A que estatildeo dentro de B + surfels de B que estatildeo

dentro de A

Diferenccedila A-B - surfels de A que estatildeo fora de B + surfels de B que estatildeo

dentro de A (com orientaccedilatildeo invertida)

Como natildeo foi implementado tratamento especial algum de interseccedilatildeo para

o nosso plugin os surfels que se intersectam satildeo mantidos no modelo resultado

final sem modificaccedilotildees

Descrito o algoritmo vejamos a seguir a sua implementaccedilatildeo

52 Implementaccedilatildeo

Este algoritmo foi implementado na forma de um plugin para o software

PointShop 3D [11] Este plugin foi desenvolvido na linguagem C e no sistema

operacional Windows

A escolha deste tipo de implementaccedilatildeo permitiu-nos usar o software

PointShop para os testes do algoritmo Estes testes foram feitos com os modelos

disponibilizados para o PointShop [11] Nesta seccedilatildeo apresentaremos o software

PointShop e as principais estruturas de dados usadas em nosso plugin

O Pointshop eacute um software aberto com seu coacutedigo disponiacutevel e preparado

para trabalhar com plugins Eacute um software de ediccedilatildeo de modelos 3D por pontos

Ele permite aleacutem de visualizar o modelo alterar as suas caracteriacutesticas como

cor brilho e fazer mapeamento de textura iluminaccedilatildeo filtragem (Figura 27)

Melhorias Propostas 56

Figura 27-Software PointShop 3D com dois modelos carregados na sua cena

Aleacutem disso pode-se criar uma cena com vaacuterios modelos e visualizaacute-los de

qualquer ponto de vista Implementa o virtual trackball para rotacionaacute-los e

transladaacute-los Usa uma iluminaccedilatildeo simples direcional A sua arquitetura eacute

extensiacutevel permite que o usuaacuterio adicione seus proacuteprios componentes ao

sistema Possui trecircs tipos de componentes

ldquoToolsrdquo fornece funcionalidades para ediccedilatildeo interativa de superfiacutecie Satildeo

disponibilizados na ldquotoolbarrdquo

Plugins fornece funcionalidades para processar em um soacute passo

modelos ou partes deles selecionadas Satildeo disponibilizados no menu ldquoPluginsrdquo

Renderes fornece funcionalidades de display para os modelos

Para esta dissertaccedilatildeo foi escolhida a construccedilatildeo do componente Plugin

por adequar-se agrave nossa proposta e ser a mais simples de ser construiacuteda O

PointShop [11] jaacute conteacutem uma tool que executa operaccedilotildees booleanas e

deformaccedilatildeo free-form sobre os modelos carregados na cena usando o meacutetodo

de Pauly [3] apresentado no capiacutetulo 4 O nosso plugin Operaccedilotildees Booleanas

implementa o algoritmo descrito na seccedilatildeo anterior baseado na proposta de

Melhorias Propostas 57

Adams e Dutreacute [2] Uma comparaccedilatildeo entre o nosso plugin e a tool de Pauly [3] eacute

feita no capiacutetulo 6

Figura 28-Menu do PointShop com o plugin e as opccedilotildees para operaccedilotildees booleanas

Para se executar o plugin o usuaacuterio precisa carregar dois modelos na

cena do PointShop acionar o plugin informando a operaccedilatildeo que seraacute executada

O plugin executaraacute o algoritmo acima proposto e carregaraacute o resultado na cena

do Pointshop retirando os modelos anteriores

521 Estruturas de Dados

Como vimos o software PointShop [11] trabalha com modelos por pontos

Um modelo deste software descrito na seccedilatildeo 42 conteacutem todas as informaccedilotildees

que o algoritmo proposto em Bart [2] necessita Abaixo relacionamos as

Melhorias Propostas 58

principais estruturas de dados do PointShop usadas no plugin e as principais

estruturas de dados do nosso plugin

As principais classes do PointShop usadas no plugin satildeo

Classe Scene

Classe Objects

Classe SurfelColections

Classe Surfel

Classe StatusBar

Classe Transformer

A hierarquia de dados eacute a seguinte a Scene conteacutem vaacuterios Objects os

quais conteacutem SurfelColections Cada SurfelColections conteacutem Surfels que

suportam uma ou mais propriedades tais como cor difusa cor especular

Classe Scene Classe que representa uma cena que conteacutem modelos

Classe Object Um modelo eacute representado pela classe Object que

conteacutem uma SurfelCollection e as matrizes de transformaccedilatildeo para rotaccedilatildeo

escala e translaccedilatildeo Cada Object eacute identificado pelo seu nome que eacute uacutenico na

Scene O meacutetodo getUniqueName retorna um nome uacutenico Cada Object tem sua

proacutepria matriz de transformaccedilatildeo que pode ser modificada com setRotation

rotate setPosition translate setScale e scale Objects podem ser copiados com

copy Objects consiste em um conjunto de surfels os quais podem ser

recuperados pela getSurfelCollection O Object pode ser ativado com

setActiveObject e recuperado com getActiveObject

Objects podem ser adicionados ou removidos com addObject e

removeObject Os Objects podem ser obtidos pela getFirstObject e

getNextObject

Classe SurfelCollection representa o conjunto de surfels de um modelo

Cada surfelcollection consiste em um conjunto de surfels (SurfelInterface) de

tamanho obtido por getNofSurfels Os surfels podem ser recuperados com

getFirstSurfel getCurrentSurfel e getNextSurfel

A SurfelCollection conteacutem um PropertyDescriptor e uma SurfelList

A SurfelList eacute uma lista duplamente encadeada de surfels Possui os

atributos firstSurfel lastSurfel currentSurfel que satildeo ponteiros para uma

SurfelInterface nSurfels que eacute o nuacutemero de Surfels

A SurfelInterface define a API para os surfels que satildeo os menores

elementos que compotildeem um Object Podem ser considerados como pontos com

uma normal que define a orientaccedilatildeo do ciacuterculo (ou elipse) que seraacute desenhado

Melhorias Propostas 59

tatildeo logo o surfel seja renderizado Tem como atributos dois ponteiros (next e

prev) para SurfelInterface

PropertyDescriptor consiste em ateacute 32 valores descrevendo quais as

propriedades a SurfelInterface suporta

Classe Surfel classe que representa o surfel

Classe StatusBar classe que imprime mensagens na tela Os plugins

podem mandar mensagens para o usuaacuterio pela StatusBar

Mensagens texto podem ser impressas com showMessage O progresso

de uma operaccedilatildeo pode ser indicado com setProgress ou resetProgress

Classe Transformer representa a transformaccedilatildeo entre sistemas de

coordenadas Esta classe fornece meacutetodos para transformar pontos e vetores

entre os diferentes sistemas de coordenadas do Pointshop

A seguir apresentamos as principais estruturas de dados do plugin

Operaccedilotildees Booleanas

As principais estruturas de dados do plugin satildeo boundingbox tree no

lista_surfel surfel

Boundingbox conteacutem dois pontos 3D que definem uma caixa que conteacutem

o modelo um ponto com menores coordenadas xy e z e outro ponto com

maiores xyz

Tree representa a octree do modelo Cada registro conteacutem um ponteiro

para um noacute e oito ponteiros para as 8 octrees filhas

No representa um noacute da octree Conteacutem os seguintes dados

- localizaccedilatildeo do noacute que eacute o canto inferior esquerdo do noacute

- lista_surfel (preenchida apenas para noacutes folha cheios)

- quantidade de surfels do noacute

- classificaccedilatildeo do noacute como dentro fora ou contorno

- classificaccedilatildeo do noacute em relaccedilatildeo a outro modelo

- indica se o noacute eacute folha ou natildeo

- vetor que eacute a meacutedia das normais dos surfels do noacute

- ponto que eacute a meacutedia das localizaccedilotildees dos surfels do noacute

- surfel que tem (entre todos os surfels do noacute) o maior produto interno

entre a sua normal e a normal meacutedia

- surfel que tem (entre todos os surfels do noacute) o menor produto interno

entre a sua normal e a normal meacutedia

- produto interno maacuteximo e miacutenimo entre as normais dos surfels do noacute e a

normal meacutedia deste noacute

Melhorias Propostas 60

- indica se o noacute conteacutem surfels com normais em sentido oposto (produto

interno entre elas eacute menor que zero)

- classificaccedilatildeo dos oito cantos do noacute

lista_surfels lista em que cada registro conteacutem um apontador para um

surfel e um apontador para o proacuteximo registro

surfel representa o surfel da octree Conteacutem a classificaccedilatildeo em relaccedilatildeo a

outro modelo e um ponteiro para o surfel do Poinshop

Resultados 61

6 Resultados

Neste capiacutetulo apresentamos os testes realizados com o plugin para o

PointShop implementado para esta dissertaccedilatildeo a comparaccedilatildeo deste plugin com

o plugin de Pauly [3] e a comparaccedilatildeo entre o meacutetodo de Adams e Dutreacute [2] e o

meacutetodo de Pauly [3]

61 Testes

Os testes foram feitos em um PC x86 Family 6 261600 KB de RAM sem

placa graacutefica sistema operacional Windows 2000 O plugin foi implementado na

linguagem C

Os modelos usados para os testes satildeo modelos disponibilizados no

PointShop [11] Vale lembrar que o meacutetodo implementado em nosso plugin eacute

restrito a modelos soacutelidos e portanto foram usados apenas estes modelos

soacutelidos para os testes

O modelo na Figura 29 que eacute um dos modelos disponibilizados no

PointShop [11] foi usado para mostrar o resultado das operaccedilotildees realizadas

pelo plugin implementado nesta dissertaccedilatildeo O modelo Igea eacute um modelo soacutelido

que conteacutem 134345 surfels

Resultados 62

Figura 29-Modelo do PointShop Igea

Para realizar as operaccedilotildees este modelo foi carregado na cena do

PointShop duas vezes e um deles colorido de vermelho As Figuras 30 31 32

mostram o resultado da operaccedilatildeo de uniatildeo interseccedilatildeo e diferenccedila

respectivamente Os nuacutemeros de surfels dos modelos resultantes satildeo mostrados

na Tabela 2

Resultados 63

Figura 30-Resultado da uniatildeo de duas Igeas

Figura 31-Resultado da interseccedilatildeo de duas Igeas

Resultados 64

Figura 32-Resultado da diferenccedila entre duas Igeas

Tabela 2-Nuacutemero de surfels dos modelos resultantes

Observamos que o nuacutemero de surfels dos modelos resultantes estaacute

coerente com as figuras dos seus modelos

Para avaliar o tempo de processamento das operaccedilotildees foram realizados

vaacuterios testes com o objetivo de obter uma meacutedia dos tempos de realizaccedilatildeo de

cada operaccedilatildeo Tambeacutem foram armazenados os tempos da criaccedilatildeo das duas

octrees e da classificaccedilatildeo de todos os surfels dos dois objetos (como dentro ou

fora do outro modelo) Estes testes foram feitos usando o modelo Igea A meacutedia

dos tempos de processamento foi calculada e os resultados satildeo mostrados na

Tabela 3 Verificamos que o maior tempo gasto eacute para criaccedilatildeo das octrees

Verificamos tambeacutem que este resultado apresentado eacute similar ao resultado

verificado empiricamente com o plugin de Pauly [3] Os tempos gastos para

realizar as operaccedilotildees satildeo similares e o maior tempo gasto no plugin de Pauly

tambeacutem eacute para inicializaccedilatildeo de suas estruturas de dados que incluem a kd-tree

Operaccedilatildeo Nuacutemero de surfels do modelo resultado

Uniatildeo 189715

Interseccedilatildeo 72225

Diferenccedila 134552

Resultados 65

Operaccedilatildeo Criaccedilatildeo das

Octrees (seg)

Classificaccedilatildeo

(seg)

Criaccedilatildeo do

resultado (seg)

Total (seg)

Uniatildeo 39375 1324 18925 7154

Interseccedilatildeo 38585 1585 09547 63982

Diferenccedila 399875 1504 1729 729475

Tabela 3- Meacutedia dos tempos de processamento para as operaccedilotildees com duas Igeas

Com o objetivo de expor melhor os resultados deste trabalho

apresentamos abaixo mais um teste das operaccedilotildees booleanas usando o nosso

plugin Os modelos usados para este segundo teste satildeo o Max Planck e o Male

ambos modelos soacutelidos disponibilizados no PointShop Estes modelos satildeo

mostrados nas figura 33 e 34

O primeiro Max Planck conteacutem 52809 surfels

Figura 33-Modelo do PointShop MaxPlanck

O segundo modelo abaixo Male conteacutem 148138 surfels

Resultados 66

Figura 34-Modelo do PointShop Male

As Figuras 353637 mostram o resultado da operaccedilatildeo de uniatildeo interseccedilatildeo

e diferenccedila respectivamente usando os dois modelos acima Podemos observar

pela figura 35 que o resultado da operaccedilatildeo de diferenccedila neste caso gerou um

modelo resultado com trecircs partes desconexas Os nuacutemeros de surfels de cada

modelo resultado satildeo mostrados na Tabela 5

Figura 35- Resultado da Uniatildeo do modelo Male com MaxPlanck

Resultados 67

Figura 36-Resultado da interseccedilatildeo do modelo Male com o MaxPlanck

Figura 37-Resultado da diferenccedila do modelo Male do modelo MaxPlanck

As meacutedias de tempos de processamento foram calculadas da mesma

forma que o primeiro teste com o modelo Igea acima apresentado Os

resultados satildeo mostrados na Tabela 4 Podemos observar que este teste

Resultados 68

apresenta tempos um pouco menores que o teste com o modelo Igea Isto se

deve ao fato de que o modelo MaxPlanck ser significativamente menor que o

modelo Igea MaxPlanck possui 52809 surfels e Igea conteacutem 134345 surfels

Operaccedilatildeo Criaccedilatildeo das

Octrees (seg)

Classificaccedilatildeo

(seg)

Criaccedilatildeo do

resultado (seg)

Total

(seg)

Uniatildeo 3012 1254 102 5285

Interseccedilatildeo 2985 0901 0861 4747

Diferenccedila 2965 0911 0791 4667

Tabela 4-Tempo de processamento das operaccedilotildees com os modelos MaxPlanck e Male

Operaccedilatildeo Nuacutemero de surfels do resultado

Uniatildeo 126532

Interseccedilatildeo 88414

Diferenccedila 77635

Tabela 5-Nuacutemero de surfels dos modelos resultados das operaccedilotildees com os modelos MaxPlanck e Male

Em seguida apresentaremos uma comparaccedilatildeo entre o nosso plugin e o

plugin de Pauly[3] e tambeacutem uma comparaccedilatildeo entre o meacutetodo de Adams e Dutreacute

[2] e o meacutetodo de Pauly [3]

62 Comparaccedilatildeo entre os dois meacutetodos que realizam operaccedilotildees booleanas

A comparaccedilatildeo entre os meacutetodos de Pauly[3] e de Adams e Dutreacute foi feita

em termos de tempo de processamento e em termos conceituais Em termos de

tempo de processamento comparamos o plugin de Pauly[3] com o nosso plugin

Em termos de tempo de processamento verifica-se empiricamente que os

dois meacutetodos apresentam tempos bastante similares Entretanto o tempo de

processamento do algoritmo aqui implementado ainda pode ser melhorado com

Resultados 69

o uso do meacutetodo TINN [19] que foi proposto em Adams[2] - para otimizar a

pesquisa do surfel mais proacuteximo a um ponto que estaacute localizado na regiatildeo de um

noacute que conteacutem surfels - veja seccedilatildeo 42 O uso deste meacutetodo natildeo foi

implementado para este trabalho e a sua implementaccedilatildeo melhoraria o tempo de

resposta do algoritmo Aleacutem disso o trabalho de Sara F Frisken [12] citado no

capiacutetulo 2 apresenta uma otimizaccedilatildeo no uso de octrees que pode ser

incorporada no algoritmo implementado neste trabalho

Em termos conceituais vamos fazer a comparaccedilatildeo do uso do que

chamamos aqui de Regra 2 do tratamento de interseccedilatildeo e do tratamento de

ldquoarestas vivasrdquo

Como vimos na seccedilatildeo 41 tanto o algoritmo implementado nesta

dissertaccedilatildeo baseado no trabalho de Adams e Dutreacute como o meacutetodo de Pauly

[3] parte do que chamamos aqui de Regra 2 para realizar operaccedilotildees booleanas

com pontos Mas cada um destes meacutetodos daacute um tratamento diferente para o

uso desta regra

O meacutetodo de Pauly usa a Regra 2 para classificaccedilatildeo de cada ponto ou de

cada surfel Para classificar um surfel de B sb como dentro ou fora de A eacute

encontrado o surfel de A sa mais proacuteximo a sb e sb eacute classificado a partir de sa

Para encontrar sa Pauly utiliza uma kd-tree Como esta pesquisa para encontrar

sa eacute cara (mesmo usando uma kd-tree) Pauly utiliza uma esfera que conteacutem

pontos com a mesma classificaccedilatildeo (seccedilatildeo 432) e diminui em 90 este nuacutemero

de pesquisas Pauly utiliza tambeacutem a representaccedilatildeo impliacutecita MLS (Moving Least

Squares) para casos em que a Regra 2 poderia falhar e para tratamento de

interseccedilotildees Entretanto o nuacutemero destes casos em que a Regra 2 poderia falhar

eacute muito pequeno E a representaccedilatildeo MLS natildeo eacute uma estrutura simples de ser

implementada Portanto natildeo encontramos vantagens em usar MLS para estes

casos O meacutetodo de Adams e Dutreacute natildeo trata estes casos e na praacutetica

apresenta resultados bastante satisfatoacuterios como foi mostrado Portanto

consideramos que valeria a pena fazer algum tratamento especial para estes

casos se fosse um procedimento simples Para a execuccedilatildeo do algoritmo de

Pauly o uso de MLS natildeo interfere significativamente porque a construccedilatildeo desta

representaccedilatildeo natildeo eacute feita somente para realizar operaccedilotildees booleanas Os testes

empiacutericos que fizemos com o algoritmo de Pauly natildeo incluem a construccedilatildeo desta

representaccedilatildeo

Aparentemente os dois algoritmos satildeo bastante parecidos um usa octrees

e o outro usa kd-tree As duas estruturas de dados satildeo simples e otimizam a

classificaccedilatildeo dos surfels de um modelo como dentro ou fora do outro modelo

Resultados 70

Mas existe uma diferenccedila conceitual entre dois que merece ser destacada O

algoritmo aqui implementado usa a Regra 2 para classificaccedilatildeo dos noacutes de uma

octree e armazena esta octree classificada (ver capiacutetulo 5) Assim na maioria dos

casos natildeo seraacute necessaacuterio encontrar o surfel mais proacuteximo para classificar um

ponto (ou um surfel) como fora ou dentro de um modelo Caso o ponto esteja em

uma aacuterea da octree classificada ele teraacute a classificaccedilatildeo dada agravequela aacuterea A

pesquisa ao surfel mais proacuteximo seraacute feita apenas nos casos em que o ponto a

ser classificado estaacute localizado entre os planos que subdividem um noacute cheio

O uso desta octree classificada levanta uma questatildeo que natildeo foi citada no

trabalho de Adams e Dutreacute que eacute a proximidade desta estrutura (armazenada)

de octree classificada com uma representaccedilatildeo volumeacutetrica do objeto Sendo

assim esta estrutura pode ser aproveitada para outras funccedilotildees aleacutem da

classificaccedilatildeo dos surfels Por exemplo podemos ter uma aproximaccedilatildeo do

volume de uma cena somando os volumes aproximados dos modelos que a

compotildeem Como o enfoque deste trabalho eacute operaccedilatildeo booleana natildeo vamos nos

aprofundar nesta questatildeo

Outra importante diferenccedila entre os dois trabalhos que jaacute foi explicada na

seccedilatildeo 432 eacute que o meacutetodo de Pauly aplica-se a modelos soacutelidos ou natildeo

soacutelidos enquanto que o meacutetodo de Adams e Dutreacute aplica-se somente a modelos

soacutelidos

Quanto ao tratamento de interseccedilatildeo em termos de visualizaccedilatildeo todos os

dois resolvem bem o problema O tratamento de interseccedilatildeo nos dois trabalhos

tambeacutem resolve o problema da validade da Regra 2 (ver seccedilatildeo 44) Entretanto

o tratamento de Adams e Dutreacute natildeo depende da renderizaccedilatildeo sendo portanto

mais portaacutevel Aleacutem disso uma desvantagem do meacutetodo de Pauly eacute o uso da

representaccedilatildeo impliacutecita MLS (ldquoMoving Least Squaresrdquo) do objeto para obter os

pontos exatamente na curva de interseccedilatildeo Esta representaccedilatildeo torna o

tratamento de interseccedilatildeo mais complexo e a vantagem apresentada natildeo eacute tatildeo

significativa para este tratamento de interseccedilatildeo

Conclusatildeo 71

7 Conclusatildeo

Concluiacutemos entatildeo que as escolhas de Adams e Dutreacute por usar uma

octree classificada e pelo tratamento dado agrave interseccedilatildeo satildeo mais abrangentes

que a escolha de Pauly E consideramos que quanto mais abrangente for uma

escolha conceitual mais resultados poderemos tirar dela No caso de Adams e

Dutreacute eles estendem o problema de classificar um ponto para classificar todo o

modelo Como foi citado ele quase fornece uma representaccedilatildeo volumeacutetrica do

modelo Esta aproximada representaccedilatildeo volumeacutetrica pode nos fornecer outras

informaccedilotildees como por exemplo o volume aproximado do modelo

Aleacutem disso o uso da representaccedilatildeo impliacutecita MLS no meacutetodo de Pauly cria

uma complexidade a mais para o meacutetodo sem apresentar vantagens para a

realizaccedilatildeo de operaccedilotildees booleanas que eacute o nosso enfoque

Logo podemos dizer que o meacutetodo de Adams e Dutreacute apresenta as

seguintes vantagens em relaccedilatildeo ao de Pauly

- a estrutura de octree classificada aleacutem de ser usada para classificaccedilatildeo

fornece informaccedilotildees adicionais como volume aproximado do objeto

- o tempo de processamento no meacutetodo de Adams e Dutreacute tende a ser

melhor que no meacutetodo de Pauly se implementadas as melhorias acima citadas e

se colocaacutessemos em consideraccedilatildeo o uso da representaccedilatildeo impliacutecita MLS

(Moving Least Squares)

- o tratamento de interseccedilatildeo de Adams e Dutreacute apresenta a vantagem da

portabilidade ou seja iraacute funcionar independente do algoritmo de renderizaccedilatildeo

utilizado

E as vantagens do meacutetodo de Pauly em relaccedilatildeo ao de Adams e Dutreacute

- a colocaccedilatildeo de surfels exatamente na curva de interseccedilatildeo

- a possibilidade de trabalhar com modelos soacutelidos ou natildeo soacutelidos

E finalizando concluiacutemos que o estudo relatado nesta dissertaccedilatildeo foi

importante por

- fornecer um breve estudo sobre modelagem por pontos uma nova e

promissora aacuterea dentro da computaccedilatildeo graacutefica

Conclusatildeo 72

- por apresentar uma avaliaccedilatildeo dos dois trabalhos existentes sobre

operaccedilotildees booleanas com pontos encontrando as vantagens de cada um

e levantando questotildees que natildeo tinham sido citadas nos trabalhos originais

- por propor e implementar melhorias ao trabalho de Adams e Dutreacute

71 Trabalhos Futuros

Nossa implementaccedilatildeo pode ser ainda evoluiacuteda com as propostas

apresentadas na seccedilatildeo 62 Como observamos o tempo de processamento do

algoritmo aqui implementado ainda pode ser melhorado com o uso do meacutetodo

TINN [19] - que foi proposto em Adams[2] - para otimizar a pesquisa do surfel

mais proacuteximo a um ponto que estaacute localizado na regiatildeo de um noacute que conteacutem

surfels Aleacutem disso o trabalho Simple and Efficient Trasversal Methods for

Quadtrees and Octrees de Sara F Frisken [12] citado no capiacutetulo 2 apresenta

uma otimizaccedilatildeo no uso de octrees Outra proposta para melhorar o tempo de

processamento do algoritmo aqui implementado eacute usar a forma de trabalhar com

octrees apresentada neste trabalho

O trabalho de Adams e Dutreacute [2] eacute aplicado apenas a objetos soacutelidos O

nosso plugin portanto aplica-se somente a este tipo de objeto Jaacute o trabalho de

Pauly[3] eacute aplicado tambeacutem a modelos natildeo soacutelidos Apresentamos como

proposta a um trabalho futuro a extensatildeo do algoritmo aqui implementado para

modelos natildeo soacutelidos O surfel pode conter uma informaccedilatildeo adicional que indica

se ele estaacute delimitando um volume ou natildeo Assim pode-se ter um modelo com

ldquopartes soacutelidasrdquo e ldquopartes natildeo soacutelidasrdquo Por exemplo a uniatildeo de um plano com

uma esfera poderia resultar numa esfera com ldquoabasrdquo (seriam as partes do plano

que estariam fora da esfera) O modelo resultado teria uma parte correspondente

a um espaccedilo 3D (esfera) e outra parte que seria uma superfiacutecie 2D posicionada

no espaccedilo 3D sem delimitar algum volume (abas)

Muitos trabalhos podem ser desenvolvidos aplicando-se o modelo por

pontos em animaccedilatildeo jogos visualizaccedilatildeo de terrenos criaccedilatildeo de protoacutetipos etc

considerando-se a eficiecircncia e simplicidade do modelo E mais especificamente

as operaccedilotildees booleanas com pontos podem ser aplicadas para criaccedilatildeo de

cenaacuterios testes de colisotildees e nestes casos a representaccedilatildeo usando octrees

pode ser mais explorada considerando-se o seu potencial de representaccedilatildeo

volumeacutetrica de um objeto

Referecircncias Bibliograacuteficas 73

8 Referecircncias Bibliograacuteficas

[1] MAumlNTYLAuml M An Introduction to Solid Modeling Computer Science Press 1988

[2] ADAMS B DUTREacute P Interactive Boolean Operations on Surfel-

Bounded Solids Proceedings of SIGGRAPH 2003 San Diego USA 2003

[3] PAULY M KEISER R KOBBELT L GROSS M Shape Modeling

with Point-Sampled Geometry SIGGRAPH 2003 Computer Graphics

Proceedings Annual Conference Series ACM Press ACM SIGGRAPH 2003

[4] LEVOY M WHITTED T The Use of Points as Display Primitives

Technical Report TR 85-022 The University of North Carolina at Chapel Hill

Department of Computer Science 1985

[5] PFISTER H ZWICKER M VAN BAAR J GROSS M 2000 Surfels

Surface Elements as Rendering Primitives SIGGRAPH 2000 pp 335ndash342 New

Orleans LA July 23-28 2000

[6] ZWICKER M PFISTER H VAN BAAR J GROSS M Surface

Splatting SIGGRAPH 2001

[7] PAULY M KOBBELT L GROSS M Multiresolution Modeling of

Point-Sampled Geometry CS Techinical Report 378 September 16 2002

[8] CURLESS B New Methods for Surface Reconstruction from Range Images PhD thesis Stanford University 1997

[9] RUSINKIEWICZ S Real-time Acquisition and Rendering of Large 3D Models PhD thesis Stanford University 2001

Referecircncias Bibliograacuteficas 74

[10] AMENTA N BERN M KAMVYSSELIS M A new Voronoi-Based

Surface Reconstruction Algorithm SIGGRAPH 98 Conference proceedings pp

415-421 New York 1998

[11] ZWICKER M PAULY M KNOLL O GROSS M Pointshop 3D an

Interactive System for Point-Based Surface Editing Proceedings of SIGGRAPH 2002 San Antonio TX July 2002

[12] FRISKEN S PERRY R Simple and Efficient Traversal Methods for

Quadtrees and Octrees Journal of Graphics Tools Vol 7 Issue 3 May 2003

[13] CORREcircA W T OLIVEIRA M M Silva C T Wang J

Modeling and Rendering of Real Environments

Revista de Informaacutetica Teoacuterica e Aplicada (Brazilian Journal of Theoretic and Applied Computing) 9(2)127-156 2002

[14] DAVIS J MARSCHNER S GARR M LEVOY M Filling Holes in

Complex Surfaces Using Volumetric Diffusion First International Symposium on 3D Data Processing Visualization Transmission June 2002

[15] RAumlSAumlNEN J Surface Splatting Theory Extensions and Implementation Masterrsquos Thesis Dept of Computer Science Helsinki

University of Technology May 28 2002

[16] PAULY M Point Primitives for Interactive Modeling and Processing of 3D Geometry PhD thesis Federal Institute of Technology (ETH)

of Zurich 2003

[17] HOPPE H DEROSE T DUCHAMP T MCDONALD J

STUELZLE W Surface Reconstruction from Unorganized Points Computer Graphics 26(2)71ndash78 July 1992

[18] ALEXA M BEHR J COHEN-OR D FLEISHMAN S LEVIN D

SILVA C T Point Set Surfaces IEEE Visualization 2001 pp 21ndash28 October

2001

Referecircncias Bibliograacuteficas 75

[19] GREENSPAN M GODIN G TALBOT J Acceleration of Binning

Nearest Neighbor Methods Proceedings of Vision Interface 2000 pp 337-

344

[20] MENCL R Reconstruction of Surfaces from Unorganized Three-Dimensional Point Clouds Dissertation Dortmund Univ 2001

[21] KRIVANEK J Representing and Rendering Surfaces With Points

httpciteseernjneccomkrivanek03representinghtml Acesso em 30 jul

2003

[22] KRISTJANSSON ET AL Approximate Boolean Operations on Free-

form Solids Proceedings of SIGGRAPH 01 2001

13

Figura 33 Modelo do PointShop MaxPlanck 65 Figura 34 Modelo do PointShop Male 66 Figura 35 Resultado da Uniatildeo do modelo Male com MaxPlanck 66 Figura 36 Resultado da interseccedilatildeo do modelo Male com o MaxPlanck 67 Figura 37 Resultado da diferenccedila do modelo Male do modelo MaxPlanck 67

14

Lista de tabelas

Tabela 1 Classificaccedilatildeo para operaccedilotildees booleanas 42

Tabela 2- Nuacutemero de surfels dos modelos resultantes 64 Tabela 3- Meacutedia dos tempos de processamento para as operaccedilotildees com duas

Igeas 65

Tabela 4-Tempo de processamento das operaccedilotildees com os modelos MaxPlanck

e Male 68 Tabela 5- Nuacutemero de surfels dos modelos resultados das operaccedilotildees com os

modelos MaxPlanck e Male 68

15

1 Introduccedilatildeo

O mundo digital estaacute conquistando cada vez mais espaccedilo nos meios de

comunicaccedilatildeo Sons imagens viacutedeos digitais satildeo miacutedias muito usadas em

diversas aacutereas como entretenimento medicina desenho industrial engenharia

arquitetura educaccedilatildeo arte ciecircncia entre outras Podemos citar alguns

exemplos dentro destas aacutereas como jogos efeitos especiais filmes digitais

visualizaccedilatildeo cientiacutefica viacutedeo-conferecircncia comeacutercio na internet Nos uacuteltimos anos

verificamos que o modelo 3D vem se tornando um novo meio de comunicaccedilatildeo

digital Com o desenvolvimento da tecnologia de aquisiccedilatildeo e do processamento

de modelos 3D ele vem sendo cada vez mais utilizado Jogos 3D animaccedilotildees

aplicaccedilotildees em realidade virtual visualizaccedilatildeo cientiacutefica aplicaccedilotildees para aacuterea

meacutedica e odontoloacutegica criaccedilatildeo de reacuteplicas para estudo e preservaccedilatildeo do

patrimocircnio histoacuterico sistemas CADCAM cataacutelogos de modelos 3D na Web para

comercializaccedilatildeo criaccedilatildeo de protoacutetipos para arquitetura engenharia satildeo alguns

exemplos de aplicaccedilotildees que usam modelos 3D

A aacuterea que estuda a representaccedilatildeo de um modelo 3D no computador eacute

chamada de modelagem em computaccedilatildeo graacutefica Existem diversos tipos de

modelagem para as diversas aplicaccedilotildees que usam um modelo 3D como por

exemplo representaccedilotildees poligonais como malhas triangulares que satildeo

geralmente usadas na aacuterea de entretenimento Este trabalho explora um novo

tipo de modelagem a modelagem por pontos

A modelagem por pontos comeccedilou a ser largamente explorada nesta

deacutecada e trata-se de uma aacuterea muito promissora em computaccedilatildeo graacutefica dadas

agraves vaacuterias e grandes vantagens em relaccedilatildeo aos outros tipos de representaccedilatildeo

como esquema de representaccedilatildeo CSG (Constructive Solid Geometry) [1] ou

malhas poligonais Dentre as principais vantagens podemos citar grande

simplicidade e flexibilidade boa performance robustez Mas a principal

vantagem desta modelagem que foi o fator que impulsionou o seu grande

desenvolvimento nesta deacutecada eacute que esta modelagem por pontos eacute a melhor

opccedilatildeo para tratar os dados de saiacuteda de equipamentos de aquisiccedilatildeo de modelos

3D O uso destes equipamentos tem aumentado muito nesta deacutecada A

16

tecnologia destes equipamentos tem progredido muito e eles tecircm se tornado

mais baratos A tendecircncia eacute que o uso destes equipamentos se torne o mais

utilizado meio de obtenccedilatildeo de modelos 3D Isto porque construir modelos 3D

bastante detalhados por meio de um software de modelagem eacute muito trabalhoso

O processo de aquisiccedilatildeo de modelos por meio destes equipamentos automatiza

este processo de construccedilatildeo

No trabalho com modelos 3D frequumlentemente satildeo usadas as operaccedilotildees

booleanas que satildeo operaccedilotildees de uniatildeo interseccedilatildeo ou diferenccedila No esquema

de representaccedilatildeo CSG estas operaccedilotildees fazem parte da representaccedilatildeo do

objeto Estas operaccedilotildees tambeacutem podem ser usadas para criar novos modelos ou

para alteraacute-los Na maioria dos tipos de representaccedilatildeo de objetos 3D estas

operaccedilotildees satildeo bastante complexas

A simplicidade da representaccedilatildeo por pontos permite que as operaccedilotildees

booleanas sejam realizadas com facilidade se compararmos com a realizaccedilatildeo

destas operaccedilotildees em outros tipos de representaccedilatildeo como malhas poligonais

Motivada pelas vantagens desta modelagem e pela utilidade destas operaccedilotildees

esta dissertaccedilatildeo apresenta uma introduccedilatildeo geral de modelagem por pontos e

trabalha mais especificamente com operaccedilotildees booleanas em objetos

modelados por pontos Dois trabalhos que exploram as operaccedilotildees booleanas na

modelagem por pontos seratildeo abordados o trabalho de Adams e Dutreacute [2] e o

trabalho de Pauly et al [3] O presente trabalho implementa o meacutetodo de Adams

e Dutreacute com algumas melhorias e faz uma comparaccedilatildeo entre o meacutetodo de Pauly

[3] e o meacutetodo de Adams e Dutreacute [2] com nossas melhorias

Como contribuiccedilotildees dadas por este trabalho apresentamos

- um estudo sobre modelagem por pontos

- um estudo sobre operaccedilotildees booleanas com pontos

- proposta de melhorias ao algoritmo proposto por Adams e Dutreacute [2]

- comparaccedilatildeo dos dois meacutetodos propostos para realizar estas operaccedilotildees

meacutetodo de Pauly et al [3] e de Adams e Dutreacute [2]

Este trabalho vem apresentado nesta dissertaccedilatildeo organizada em sete

capiacutetulos conforme descrito resumidamente a seguir

O capiacutetulo 2 cita alguns trabalhos sobre modelagem por pontos que estatildeo

relacionados a este trabalho

O capiacutetulo 3 apresenta uma visatildeo geral do modelo por pontos e explica

melhor alguns trabalhos citados no capiacutetulo 2

17

O capiacutetulo 4 apresenta operaccedilotildees booleanas com pontos e os dois

meacutetodos para realizaacute-las na modelagem por pontos meacutetodo de Pauly et al [3] e

de Adams e Dutreacute [2]

O capiacutetulo 5 apresenta algumas melhorias ao algoritmo de Adams e Dutreacute

[2] e a nossa implementaccedilatildeo deste algoritmo

O capiacutetulo 6 traz os resultados obtidos

E finalmente o capiacutetulo 7 encerra o trabalho com uma conclusatildeo e com

possiacuteveis trabalhos futuros

Trabalhos relacionados 18

2 Trabalhos relacionados

O primeiro pesquisador a propor o uso de pontos como primitiva graacutefica foi

Levoy em [4] Ele propotildee o uso de pontos como primitiva de renderizaccedilatildeo e

discute a conversatildeo dos outros modelos para o modelo por pontos

Nos uacuteltimos anos vaacuterios trabalhos importantes tecircm sido realizados na aacuterea

em diversos segmentos em visualizaccedilatildeo podemos destacar os trabalhos de

Pfister [5] e de Zwicker [6] que usam pontos como primitiva de renderizaccedilatildeo e

com resultados praacuteticos interativos muito bons

Em [7] Pauly et al propotildeem algoritmos para modelagem multi-resoluccedilatildeo

em modelos por pontos

Os trabalhos de Curless [8] e Rusinkiewicz [9] discutem os meacutetodos de

aquisiccedilatildeo que consistem em obter uma amostragem de pontos da superfiacutecie do

objeto real por meio de equipamentos como por exemplo o scanner 3D

Nas operaccedilotildees booleanas a interseccedilatildeo das superfiacutecies dos modelos

iniciais seraacute parte do modelo resultado e para ser representada corretamente

precisa ser reconstruiacuteda A reconstruccedilatildeo da superfiacutecie tambeacutem eacute usada na

visualizaccedilatildeo de um modelo Um trabalho significativo na aacuterea de reconstruccedilatildeo de

superfiacutecies estaacute em [10] de N Amenta etal Este trabalho apresenta uma

soluccedilatildeo praacutetica com garantias teoacutericas para este problema e uma heuriacutestica para

o tratamento de arestas vivas a questatildeo mais difiacutecil desta aacuterea Um exemplo

de uma aresta viva eacute o encontro de dois planos natildeo coincidentes

Frequumlentemente a interseccedilatildeo citada acima (interseccedilatildeo entre os modelos iniciais)

gera uma aresta viva (seccedilatildeo 4223)

O algoritmo aqui implementado eacute um plugin para o software PointShop 3D

[11] de Zwicker et al software de ediccedilatildeo de modelos com pontos O PointShop

tem seu coacutedigo aberto documentaccedilatildeo e trabalha com plugins Ele permite a

visualizaccedilatildeo e ediccedilatildeo interativa do modelo por pontos Eacute o uacutenico software livre

disponiacutevel com estas caracteriacutesticas Esta implementaccedilatildeo na forma de um plugin

facilitou muito o trabalho pois natildeo foi necessaacuterio implementar a visualizaccedilatildeo do

modelo 3D Aleacutem disso o Pointshop conteacutem tambeacutem um plugin com a

implementaccedilatildeo do meacutetodo de Pauly et al [3] discutido nesta dissertaccedilatildeo A

Trabalhos relacionados 19

execuccedilatildeo dos dois plugins que realizam operaccedilotildees booleanas pocircde ser

comparada

Os trabalhos aqui discutidos satildeo o de Bart Adams e Philip Dutreacute [2] e de

Pauly et al[3] que apresentam meacutetodos diferentes para realizaccedilatildeo de

operaccedilotildees booleanas com pontos Adams e Dutreacute utilizam octrees [1] e Pauly

Kd-Tree [16] e MLS (Moving Least Squares) [18] Estes algoritmos satildeo

discutidos no capiacutetulo 4

O trabalho de Sara F Frisken [12] apresenta um algoritmo para realizar

operaccedilotildees em octree de forma mais eficiente Como estas operaccedilotildees estatildeo

presentes em todo o nosso algoritmo este trabalho certamente oferece uma

forma de otimizaccedilatildeo mas que natildeo foi implementada

Modelagem por Pontos 20

3 Modelagem por Pontos

A computaccedilatildeo graacutefica natildeo lida diretamente com o objeto ou com o

fenocircmeno fiacutesico lida com modelos graacuteficos ou geomeacutetricos Modelos graacuteficos

satildeo estruturas computacionais (abstratas) que capturam aspectos de objetos de

interesse para uma aplicaccedilatildeo como forma cor textura etc Se apenas a forma

ou a geometria do objeto eacute relevante temos modelos geomeacutetricos

Estes modelos satildeo usados em vaacuterias aplicaccedilotildees em computaccedilatildeo graacutefica

como roboacutetica visatildeo computacional simulaccedilotildees realistas anaacutelises estruturais

prototipagem projeto e manufatura de produtos eletromecacircnicos arquitetura

Existem vaacuterios tipos de modelos graacuteficos Esta dissertaccedilatildeo trata de um tipo

muito em voga atualmente que eacute o modelo por pontos

Neste capiacutetulo daremos uma visatildeo geral do modelo por pontos

Introduziremos este modelo e seu processo de criaccedilatildeo Seraacute apresentado o que

eacute um modelo por pontos e o conceito de surfel [5] introduziremos os tipos de

distribuiccedilatildeo dos surfels uma estruturaccedilatildeo aplicada a estes surfels e dados que

eles podem conter As quatro proacuteximas subseccedilotildees (Ideacuteia da representaccedilatildeo

Tipos de distribuiccedilatildeo dos surfels Estrutura de multi-resoluccedilatildeo e Dados que um

surfel pode conter) tratam destes toacutepicos Um modelo por pontos pode ser criado

a partir da conversatildeo de outros tipos de modelagem NURBS por exemplo para

o modelo por pontos ou a partir de um processo de aquisiccedilatildeo Esta uacuteltima forma

de criaccedilatildeo pode ser dividida em duas etapas aquisiccedilatildeo do modelo reconstruccedilatildeo

da superfiacutecie As subseccedilotildees 35 e 36 tratam destas duas etapas

respectivamente A ediccedilatildeo do modelo 3D eacute tratada brevemente na subseccedilatildeo 38

e a sua visualizaccedilatildeo na subseccedilatildeo 37 A apresentaccedilatildeo do processo de aquisiccedilatildeo

(seccedilatildeo 35) eacute baseada no tutorial de W T Correcirca [13] A etapa de ediccedilatildeo 3D

consiste em operaccedilotildees para mudanccedila da cor textura ou forma do modelo Para

esta etapa enfocaremos as operaccedilotildees booleanas que modificam a forma do

modelo ou criam novos modelos

31 Ideacuteia da Representaccedilatildeo

Modelagem por Pontos 21

Figura 1 [20] -Um modelo por pontos e sua visualizaccedilatildeo

Um modelo por pontos representa um objeto atraveacutes de seu contorno Eacute

um tipo de representaccedilatildeo B-Rep (Boundary Representation) [1] Este contorno

consiste em uma superfiacutecie 2D posicionada no espaccedilo 3D Na modelagem por

pontos ela eacute representada por um conjunto de pontos 3D que satildeo uma

amostragem dos (infinitos) pontos que formam a superfiacutecie contiacutenua (Figura 1) A

amostragem pode ser obtida de diversas maneiras Uma delas o processo de

aquisiccedilatildeo progrediu muito nos uacuteltimos anos e este foi um dos fatores que tornou

muito importante o desenvolvimento deste modelo por pontos Outra forma de

gerar amostragem eacute fazer uma conversatildeo de um outro modelo NURBS por

exemplo para o modelo por pontos

Estes pontos satildeo denominados surfels e podem conter aleacutem da posiccedilatildeo

3D outras informaccedilotildees como normal agrave superfiacutecie cor textura raio de alcance A

Figura 2 mostra um conjunto de surfels representando uma superfiacutecie No surfel

em destaque podemos ver o raio de alcance rt e a normal n agrave superfiacutecie

Modelagem por Pontos 22

Figura 2 [5] A superfiacutecie modelada por surfels O surfel em destaque tem raio de alcance

rt e normal n

Como o modelo natildeo armazena qualquer informaccedilatildeo sobre a conexatildeo entre

os surfels a reconstruccedilatildeo da superfiacutecie contiacutenua a partir dele pode exigir

algumas restriccedilotildees na amostragem (seccedilatildeo 36)

32 Tipos de distribuiccedilatildeo dos surfels

Existem dois tipos de distribuiccedilatildeo dos surfels na modelagem por pontos

uniforme e natildeo uniforme Na distribuiccedilatildeo uniforme cada um deles descreve

partes de mesmo tamanho da superfiacutecie Na natildeo uniforme cada surfel armazena

a informaccedilatildeo de seu raio de alcance que eacute o raio do disco que este surfel

representa

A distribuiccedilatildeo uniforme tem a vantagem de ser mais simples e natildeo ser

necessaacuterio armazenar o raio de alcance do disco mas ela apresenta a seguinte

desvantagem se o modelo possui regiotildees com muito detalhe e regiotildees com

pouco detalhe ele teraacute que manter uma alta densidade mesmo nas regiotildees de

poucos detalhes

33 Estrutura de multi-resoluccedilatildeo

Um objeto pode ser representado em vaacuterios niacuteveis de detalhes Por

exemplo podemos representar um mesmo objeto com vaacuterias resoluccedilotildees

diferentes Este conceito pode ser aplicado ao modelo por pontos Desta forma

um modelo eacute representado por uma estrutura hieraacuterquica (uma aacutervore por

exemplo) onde em cada niacutevel temos uma representaccedilatildeo do objeto em uma

Modelagem por Pontos 23

determinada resoluccedilatildeo Em [7] Pauly et al propotildeem algoritmos para modelagem

multi-resoluccedilatildeo em modelos por pontos

34 Dados que um surfel pode conter

Cada surfel armazena sua localizaccedilatildeo e pode tambeacutem conter informaccedilotildees

como a cor ou coordenadas de textura Se a amostragem natildeo for uniforme o

surfel conteacutem a informaccedilatildeo do raio de alcance que eacute o raio de um disco cujo

centro eacute a posiccedilatildeo do surfel O surfel pode tambeacutem conter o vetor normal agrave

superfiacutecie e assim o surfel pode ser visto como um disco orientado A superfiacutecie

tambeacutem pode ser vista como uma superfiacutecie orientada

35 Aquisiccedilatildeo do modelo

Esta introduccedilatildeo sobre aquisiccedilatildeo do modelo aqui apresentada baseia-se no

tutorial de W T Correcirca [13]

O processo de aquisiccedilatildeo consiste em obter uma amostragem de pontos da

superfiacutecie do objeto real por meio de equipamentos como por exemplo o

scanner 3D Eacute uma aacuterea que tem progredido muito nos uacuteltimos anos A

resoluccedilatildeo e a precisatildeo dos equipamentos de aquisiccedilatildeo tecircm melhorado bastante

e o custo deles reduzido de forma significativa Isso possibilita que a aquisiccedilatildeo

de modelos 3D seja usada em aplicaccedilotildees de desenho industrial arte ou em

produtos para a aacuterea de entretenimento O consequumlente maior uso destes

equipamentos criou a necessidade de avanccedilos no tratamento dos seus dados de

saiacuteda que satildeo um conjunto de pontos

Este processo pode ser dividido em trecircs partes [13] aquisiccedilatildeo da

geometria aquisiccedilatildeo da textura e correccedilatildeo de falhas da aquisiccedilatildeo

351 Aquisiccedilatildeo da geometria

Existem vaacuterios meacutetodos de aquisiccedilatildeo da geometria Curless [8] e

Rusinkiewicz [9] classificaram estes meacutetodos em trecircs categorias meacutetodos por

contato transmissatildeo e reflexatildeo

O meacutetodo por contato toca a superfiacutecie do objeto com uma sonda e grava

a posiccedilatildeo Este meacutetodo do qual o Coordinate Measuring Machines (CMMs) eacute

Modelagem por Pontos 24

um exemplo eacute bastante preciso mas eacute muito lento e natildeo adequado a objetos

fraacutegeis

Meacutetodos por transmissatildeo projetam ondas de energia sobre o objeto e

gravam a energia transmitida Por exemplo tomografia computadorizada que

projeta ondas de raio-x sobre o objeto e mede a quantidade de radiaccedilatildeo que

passa atraveacutes dele O resultado eacute um modelo geomeacutetrico de alta resoluccedilatildeo Este

meacutetodo pode captar detalhes do objeto que natildeo satildeo visiacuteveis de fora do objeto

Por outro lado ele eacute caro e arriscado

Meacutetodos por reflexatildeo podem ser oacuteticos ou natildeo-oacuteticos Natildeo-oacuteticos incluem

radares que medem a distacircncia a um objeto enviando microondas ou ondas

sonoras para o objeto e gravando o tempo que a onda gasta para retornar Estes

meacutetodos natildeo satildeo muito precisos nem raacutepidos

Meacutetodos por reflexatildeo oacuteticos podem ser passivos ou ativos Meacutetodos oacuteticos

passivos natildeo interagem com o objeto e incluem teacutecnicas de visatildeo computacional

como shape-from-shading stereo triangulation optical flow e meacutetodos de

decomposiccedilatildeo para video streams Estes meacutetodos raramente constroem

modelos precisos e sua maior aplicaccedilatildeo eacute em reconhecimento de objetos

Meacutetodos oacuteticos ativos projetam luz sobre um objeto de maneira estruturada

e atraveacutes da reflexatildeo da luz determinam a forma do objeto Exemplos satildeo depth

from defocus photometric stereo projected-light triangulation time of flight

Meacutetodos por reflexatildeo oacuteticos ativos tecircm muitas vantagens sobre os passivos tecircm

um melhor desempenho quando natildeo existe textura satildeo mais baratos e mais

robustos e produzem uma amostragem precisa

352 Aquisiccedilatildeo da textura

Idealmente noacutes gostariacuteamos de ter uma completa descriccedilatildeo de como um

ponto da superfiacutecie reflete a luz dependendo do vetor normal a esta superfiacutecie

da direccedilatildeo do raio de luz incidente e do comprimento de onda Tal descriccedilatildeo eacute

conhecida como Bidirectional Reflectance Distribution Function (BRDF) Medir

BRDFs com precisatildeo eacute um problema difiacutecil

Pode-se ter uma aproximaccedilatildeo da aquisiccedilatildeo de cores do objeto tirando

fotos dele O objeto eacute fotografado e a cor de cada ponto da superfiacutecie eacute obtida a

partir de um mapeamento das fotos 2D para o modelo 3D Para mapear a

fotografia agrave geometria precisamos conhecer os paracircmetros de projeccedilatildeo da

cacircmera e a sua posiccedilatildeo no momento em que a foto foi batida Para cada ponto

Modelagem por Pontos 25

3D do modelo encontramos sua projeccedilatildeo 2D no plano da cacircmera e associamos

a cor do pixel nesta projeccedilatildeo agrave cor do ponto 3D

353 Correccedilatildeo das falhas da aquisiccedilatildeo

O processo de aquisiccedilatildeo deixa frequumlentemente buracos no modelo devido

a ruiacutedos no processo ou agrave impossibilidade de aquisiccedilatildeo de determinadas partes

de uma superfiacutecie Estes buracos devem ser corrigidos Pode-se usar por

exemplo um filtro de passa-baixa para remoccedilatildeo de ruiacutedos [14] Meacutetodos de

difusatildeo geomeacutetrica tecircm sido aplicados para preenchimento dos buracos [15] A

correccedilatildeo das falhas eacute tida como um preacute-processamento para o processo de

reconstruccedilatildeo da superfiacutecie contiacutenua (seccedilatildeo 36)

36 Reconstruccedilatildeo da superfiacutecie (contiacutenua) a partir do modelo (discreto)

A reconstruccedilatildeo da superfiacutecie contiacutenua consiste em a partir de um conjunto

natildeo estruturado de pontos obter um modelo contiacutenuo desta superfiacutecie Esta

reconstruccedilatildeo eacute frequumlentemente exigida para um modelo por pontos Na sua

visualizaccedilatildeo podemos desejar focar qualquer parte do modelo Para fazermos

operaccedilotildees booleanas com os modelos podemos querer determinar exatamente

onde eles se intersectam

No entanto natildeo precisamos ter necessariamente a representaccedilatildeo contiacutenua

de todo o objeto ao mesmo tempo A reconstruccedilatildeo desta superfiacutecie a partir dos

pontos amostrados pode ser feita no momento que for mais adequado agrave

aplicaccedilatildeo Na visualizaccedilatildeo a reconstruccedilatildeo pode ser feita na projeccedilatildeo 2D da

parte do modelo em foco (seccedilatildeo 37) Para operaccedilotildees booleanas pode-se

reconstruir apenas a aacuterea da interseccedilatildeo dos modelos

Este processo de reconstruccedilatildeo de superfiacutecie tem sido muito estudado em

modelagem geomeacutetrica e geometria computacional nos uacuteltimos anos O trabalho

mais importante desta aacuterea eacute o trabalho de Amenta et al [10] que foi a primeira

soluccedilatildeo com garantias demonstraacuteveis para este problema de reconstruccedilatildeo de

superfiacutecie A seccedilatildeo 44 explica estes conceitos e o trabalho [10] Este trabalho

demonstra que teoricamente para que a reconstruccedilatildeo da superfiacutecie (contiacutenua) a

partir das amostras seja correta a amostragem deve ser adequada Ele usa o

conceito de ldquoEixo Medialrdquo para definir o que eacute uma amostragem adequada

Modelagem por Pontos 26

(seccedilatildeo 44) Em duas dimensotildees os veacutertices de Voronoi de uma amostragem

densa aproximam o ldquoEixo Medialrdquo da amostragem

Por meio deste conceito de Eixo Medial [1016] obtecircm-se paracircmetros

teoacutericos para a definiccedilatildeo de amostragem adequada e baseado neste conceito

o algoritmo apresentado em [10] traz uma soluccedilatildeo praacutetica para o problema

obtendo uma malha poligonal a partir do modelo por pontos

O PointShop 3D [11] software de ediccedilatildeo de modelos por pontos utilizado

nesta pesquisa faz quando necessaacuterio a reconstruccedilatildeo da superfiacutecie Para isso

o PointShop 3D explora a vizinhanccedila local (surfels vizinhos de acordo com suas

posiccedilotildees) Ele usa o conceito de Eixo Medial para justificar seu meacutetodo de

reconstruccedilatildeo da superfiacutecie que na praacutetica apresenta resultados bastante

satisfatoacuterios apesar de teoricamente natildeo ter garantias [16]

37 Visualizaccedilatildeo do modelo

A primeira abordagem para visualizaccedilatildeo de um modelo por pontos foi

construir uma malha de poliacutegonos a partir dos surfels e renderizaacute-la Mas a

construccedilatildeo de malhas a partir dos surfels eacute um processo muito caro e lento

principalmente para modelos complexos Na tentativa de obter uma visualizaccedilatildeo

interativa do modelo por pontos estatildeo sendo estudadas teacutecnicas que utilizam

surfels como primitiva de visualizaccedilatildeo A ideacuteia foi apresentada inicialmente por

Levoy [4]

Figura 3 [21] -Modelo por pontos e sua renderizaccedilatildeo usando Surface Splatting

Modelagem por Pontos 27

O objetivo da renderizaccedilatildeo a partir dos surfels eacute projetaacute-los na tela e

reconstruir as superfiacutecies de forma contiacutenua sem buracos Para que esta

renderizaccedilatildeo seja amplamente utilizada deve-se ter cuidado com o uso de

memoacuteria e com a qualidade da imagem gerada Teacutecnicas recentes como Surface

Splatting [6] faz a renderizaccedilatildeo interativamente com qualidade (Figura 3)

comparada a outros meacutetodos de renderizaccedilatildeo como Image Based Rendering

Em geral a visualizaccedilatildeo do modelo por pontos pode ser dividida nas seguintes

etapas

- warping - projeccedilatildeo em perspectiva de cada ponto do modelo na tela

processo anaacutelogo agrave projeccedilatildeo de veacutertices dos triacircngulos na malha triangular Se

um pixel da tela estiver contido em mais de uma projeccedilatildeo de surfels (vizinhos)

ou seja mais de um ponto cobre este pixel os atributos destes pontos seratildeo

combinados

- shading por ponto - o processo de shading eacute realizado para cada ponto

visiacutevel (os pontos que natildeo satildeo vistos do ponto de vista em questatildeo devem ser

retirados) Qualquer modelo local de shading pode ser aplicado Uma nova

teacutecnica foi proposta em Surface Splatting [6]

- reconstruccedilatildeo da imagem ndash pixels que natildeo ldquoreceberamrdquo projeccedilatildeo de

nenhum ponto formam buracos na imagem Esta imagem deve ser reconstruiacuteda

sem buracos sem aliasing e as superfiacutecies devem ser reconstruiacutedas de forma

contiacutenua e devem ser ldquosuavizadasrdquo (smooth surface)

Os algoritmos de renderizaccedilatildeo por pontos podem tratar a questatildeo de

buracos na visualizaccedilatildeo de trecircs formas [17]

Detecccedilatildeo e preenchimento de buracos no espaccedilo da tela pontos satildeo

projetados na tela e pixels que natildeo receberam pontos satildeo detectados (buracos)

Para preencher estes buracos que natildeo receberam pontos eacute feita uma

interpolaccedilatildeo entre os vizinhos

Geraccedilatildeo de mais pontos a superfiacutecie eacute interpolada no espaccedilo do modelo

para garantir que todos os pixels recebam pelo menos a projeccedilatildeo de um ponto

Splatting um surfel eacute projetado na tela e sua contribuiccedilatildeo eacute espalhada de

forma diferenciada para os pixels vizinhos Agrave medida em que o vizinho se torna

mais distante a contribuiccedilatildeo do surfel diminui

Raumlsaumlnen faz uma analogia do processo de renderizaccedilatildeo proposto em [6]

com o mapeamento de textura [15] No mapeamento de textura para um

determinado pixel da tela satildeo encontrados os pontos da textura que afetam este

Modelagem por Pontos 28

pixel Num sentido inverso em splatting para um determinado surfel (que

representa a textura) satildeo encontrados os pixels da tela que este surfel afeta

38 Ediccedilatildeo do modelo

Ediccedilatildeo de um modelo 3D consiste em operaccedilotildees que modificam

caracteriacutesticas deste modelo como cor textura forma ou criam novos modelos

O software PointShop 3D [11] software de ediccedilatildeo de modelos por pontos 3D

implementa vaacuterias destas operaccedilotildees (ver seccedilatildeo 52)

Para modificar a forma de um modelo ou criar um novo satildeo muito usadas

as operaccedilotildees booleanas que eacute o nosso enfoque nesta dissertaccedilatildeo Na

modelagem CSG (Constructive Solid Geometry) as operaccedilotildees booleanas satildeo

usadas juntamente com primitivas soacutelidas para definir um modelo No entanto

em alguns tipos de modelos estas operaccedilotildees satildeo difiacuteceis como por exemplo

em malhas poligonais Com pontos elas podem ser feitas interativamente [32]

Operaccedilotildees Booleanas com Pontos 29

4 Operaccedilotildees Booleanas com Pontos

Operaccedilotildees booleanas satildeo as operaccedilotildees de uniatildeo interseccedilatildeo e diferenccedila

definidas na teoria matemaacutetica de conjuntos Estas operaccedilotildees satildeo aplicadas em

modelos soacutelidos para alteraacute-los ou para criar novos modelos A Figura 4 abaixo

mostra a criaccedilatildeo de trecircs novos modelos a partir de quatro modelos iniciais

Figura 4 [22] Trecircs modelos novos foram criados a partir dos quatro iniciais (esfera

cilindro dois cubos) O primeiro eacute a esfera menos um cubo em seguida retirou-se outro

cubo e por uacuteltimo retirou-se o cilindro

Estas operaccedilotildees satildeo aplicadas em objetos modelados por pontos em dois

trabalhos no trabalho de Bart Adams e Philip Dutreacute [2] e no trabalho de Pauly

et Al [3] Neste capiacutetulo a seccedilatildeo 41 apresenta a parte comum aos dois

trabalhos e as seccedilotildees 42 e 43 apresentam as particularidades de cada um A

seccedilatildeo 44 discute uma questatildeo natildeo explicitada em nenhum dos dois trabalhos

41 Meacutetodos para realizar operaccedilotildees booleanas em objetos modelados por pontos

A Figura 5 mostra o resultado do meacutetodo de Adams[2] operaccedilotildees de

uniatildeo diferenccedila e interseccedilatildeo de objetos soacutelidos 3D modelados por pontos

Operaccedilotildees Booleanas com Pontos 30

Figura 5 [2]-A partir de dois modelos por pontos uma heacutelice e uma cabeccedila as trecircs operaccedilotildees booleanas satildeo mostradas da esquerda para a direita uniatildeo diferenccedila e interseccedilatildeo

Sejam A e B objetos 3D soacutelidos modelados por pontos Definem-se os

seguintes elementos

Af ndash superfiacutecie (contorno) de A que estaacute fora de B

Ad ndash superfiacutecie (contorno) de A que estaacute dentro de B

Bf ndash superfiacutecie (contorno) de B que estaacute fora de A

Bd ndash superfiacutecie (contorno) de B que estaacute dentro de A

O resultado da operaccedilatildeo booleana entre A e B seraacute um modelo C cuja

superfiacutecie de contorno pode ser determinada pela seguinte regra [2] que aqui

chamamos de Regra 1

Regra 1 A U B Af + Bf

A cap B Ad + Bd

A ndash B Af + Bd (com a orientaccedilatildeo invertida)

B ndash A Ad (com a orientaccedilatildeo invertida) + Bf

A Figura 6 mostra as operaccedilotildees com dois modelos A e B

(a) (b)

Operaccedilotildees Booleanas com Pontos 31

(c) (d)

Figura 6 [22] (a) Dois modelos A e B (b) Posicionados de forma que A tem

uma parte dentro de B eacute mostrado o resultado A U B Af + Bf (c) Resultado de A ndash B Af

+ Bd (d) Resultado de A cap B Ad + Bd

Bart [2] e Pauly [3] apresentam dois meacutetodos para determinar os

elementos acima Estes dois meacutetodos satildeo construiacutedos a partir dos seguintes

conceitos os elementos Af Ad Bf Bd satildeo uma parte da superfiacutecie modelada por

pontos e portanto satildeo conjuntos de surfels Para determinaacute-los eacute necessaacuteria

entatildeo a classificaccedilatildeo de um surfel (que pode se resumir agrave classificaccedilatildeo de um

ponto que eacute o seu centro) de uma superfiacutecie como dentro ou fora de um outro

modelo Os dois meacutetodos utilizam a seguinte regra para esta classificaccedilatildeo aqui

denominada Regra 2

Regra 2 Dado um ponto x qualquer um volume V determinado por uma superfiacutecie

de contorno S uma amostragem P da superfiacutecie S um ponto p є P que eacute a

amostra mais proacutexima a x um vetor np normal agrave S em p e orientado para fora de

S temos que

(x ndash p) np gt 0 x notinV

Ou seja para classificar um ponto em relaccedilatildeo a um modelo verificamos o

produto interno entre a normal em p (surfel mais proacuteximo a x) e o vetor (x - p)

se este produto interno for maior que zero x natildeo pertence ao volume V e seraacute

classificado como fora senatildeo seraacute classificado como dentro De maneira

ainda mais informal se a normal em p apontar para a direccedilatildeo oposta a x x seraacute

classificado como dentro se apontar para x x seraacute classificado como fora

A Figura 7 mostra a Regra 2

Operaccedilotildees Booleanas com Pontos 32

Figura 7 Para classificar o ponto x encontra-se o surfel p (com normal np) mais proacuteximo

a x Se o produto interno entre np e (x ndash p) for maior que zero entatildeo x eacute classificado como

fora senatildeo seraacute classificado como dentro

A validade da Regra 2 eacute discutida na Seccedilatildeo 44 Uma das restriccedilotildees

teoacutericas para garantir-lhe a validade eacute que a superfiacutecie seja suave

Cada um dos dois meacutetodos daacute um tratamento diferente para o uso desta

regra Pauly usa a regra diretamente encontrando o surfel mais proacuteximo a um

ponto e classificando este ponto a partir deste surfel Ele utiliza tambeacutem a

representaccedilatildeo impliacutecita MLS (Moving Least Squares [18]) para casos em que a

Regra 2 poderia falhar e para tratamento de interseccedilotildees [3] Seu meacutetodo vale

para modelos soacutelidos ou natildeo soacutelidos O meacutetodo de Adams e Dutreacute [2] utiliza

octrees [1] criando uma classificaccedilatildeo dos noacutes da octree a partir desta Regra 2

Os pontos satildeo entatildeo classificados de acordo com o noacute da octree que o conteacutem

Este segundo meacutetodo aplica-se somente a modelos soacutelidos Os dois meacutetodos

seratildeo descritos em detalhes nas seccedilotildees abaixo

Como um surfel eacute considerado um disco podemos dizer que surfels de

dois modelos diferentes podem se intersectar A interseccedilatildeo destes dois surfels

corresponde agrave interseccedilatildeo destes dois discos Estes surfels geram problemas

para visualizaccedilatildeo se forem acrescentados ao resultado sem um tratamento

especiacutefico apresentaratildeo artefatos natildeo desejaacuteveis na renderizaccedilatildeo do modelo

resultado (Figura 8) se natildeo forem acrescentados ao resultado deixaratildeo buracos

no modelo

Operaccedilotildees Booleanas com Pontos 33

Figura 8 [2] -Interseccedilatildeo de duas esferas agrave esquerda sem nenhum tratamento de interseccedilatildeo agrave direita apoacutes o tratamento de interseccedilatildeo

Aleacutem disso nem sempre esta interseccedilatildeo forma uma superfiacutecie suave

Esta interseccedilatildeo pode formar uma aresta viva (seccedilatildeo 4223) gerando

problemas tambeacutem para o uso da Regra 2 que eacute vaacutelida apenas para superfiacutecies

suaves Eacute necessaacuterio entatildeo fazer um tratamento desta superfiacutecie de interseccedilatildeo

(formada por surfels originados de diferentes modelos) O tratamento de cada

um dos meacutetodos para este caso seraacute tambeacutem abaixo apresentado

42 Meacutetodo de Adams e Dutreacute

O meacutetodo aplica-se somente a modelos soacutelidos Para determinaccedilatildeo dos

elementos da aqui chamada Regra 1 (seccedilatildeo 41) este meacutetodo utiliza uma octree

[1] que subdivide o espaccedilo do modelo em trecircs fora dentro ou no contorno do

modelo Estes espaccedilos satildeo determinados pela classificaccedilatildeo dos noacutes da octree a

partir da Regra 2 Tambeacutem eacute usado o meacutetodo TINN - Triangle Inequality Nearest

Neighbour [19] - para otimizar a pesquisa dentro do noacute A seguir descrevemos o

modelo usado neste meacutetodo apresentando os dados associados aos pontos o

tipo de distribuiccedilatildeo e o algoritmo que realiza as operaccedilotildees

421 Modelo por Pontos em Adams e Dutreacute

Os surfels neste meacutetodo contecircm as seguintes informaccedilotildees posiccedilatildeo do

surfel xs orientaccedilatildeo do surfel ns e raio de alcance do surfel rs O surfel pode ser

pensado como um disco ortogonal a ns com centro xs e raio rs O raio eacute

escolhido de tal forma que a projeccedilatildeo dos discos no plano da imagem se

sobreponham

Operaccedilotildees Booleanas com Pontos 34

Os objetos representados satildeo soacutelidos A distribuiccedilatildeo dos surfels eacute

uniforme embora o algoritmo natildeo exija esta condiccedilatildeo Para cada soacutelido eacute

definido um rmax = Max rs o raio de alcance do maior surfel pertencente agrave

superfiacutecie do soacutelido Como o raio eacute escolhido de tal forma que a projeccedilatildeo dos

discos no plano da imagem se sobreponham o controle da amostragem eacute

entatildeo ligado agrave renderizaccedilatildeo

422 Algoritmo de Operaccedilotildees Booleanas

Utilizando objetos modelados da forma descrita acima o meacutetodo realiza

operaccedilotildees de uniatildeo interseccedilatildeo e diferenccedila com modelos soacutelidos Supondo dois

modelos soacutelidos S1 e S2 O algoritmo pode ser dividido nas seguintes etapas

Criaccedilatildeo de uma octree para cada modelo Teste Dentro-Fora Tratamento da

interseccedilatildeo Estas etapas satildeo apresentadas nas proacuteximas seccedilotildees

4221 Criaccedilatildeo de uma octree para cada modelo

Eacute criada uma octree [1] para cada modelo A criaccedilatildeo de uma octree eacute feita

da seguinte forma

Gera-se a ldquoCaixa envolventerdquo caixa alinhada com os eixos que conteacutem

todo o modelo A ldquoCaixa envolventerdquo corresponde ao noacute raiz da octree Este noacute

conteacutem inicialmente todos os surfels do modelo Em seguida o noacute raiz eacute

dividido em oito noacutes filhos Os surfels satildeo distribuiacutedos entre estes oito noacutes Cada

um deles caso contenha surfels eacute dividido novamente em 8 filhos e seus surfels

satildeo redistribuiacutedos entre eles Este processo eacute repetido recursivamente enquanto

o nuacutemero de surfels do noacute for maior que zero ou ateacute uma profundidade maacutexima

preacute-definida da octree ser alcanccedilada

Cada noacute da octree deve ser classificado O objetivo desta classificaccedilatildeo eacute

determinar que parte da octree estaacute dentro do modelo e que parte estaacute fora Os

noacutes da octree satildeo entatildeo classificados como ldquodentrordquo ldquoforardquo e ldquocontornordquo

Podemos ilustrar esta classificaccedilatildeo em 2D a Figura 9 mostra uma quadtree

classificada

Operaccedilotildees Booleanas com Pontos 35

Figura 9-Um objeto representado por pontos com suas normais e sua quadtree correspondente classificada os noacutes cinza claro estatildeo dentro do modelo noacutes cinza mais escuro estatildeo fora do modelo e noacutes com cinza intermediaacuterio satildeo noacutes cheios noacutes que conteacutem pontos

O noacutes que conteacutem surfels satildeo classificados como ldquocontornordquo Para

classificar um noacute vazio existem trecircs casos

o noacute vazio tem apenas um vizinho-irmatildeo natildeo vazio

o noacute vazio tem mais de um vizinho-irmatildeo natildeo vazio

o noacute vazio natildeo tem vizinhos-irmatildeos natildeo vazios

No primeiro caso o noacute vazio eacute classificado pelo seu vizinho natildeo vazio No

segundo caso considera-se qualquer um dos vizinhos natildeo vazios No terceiro

caso classifica-se primeiro os noacutes vizinhos e eacute dada a mesma classificaccedilatildeo para

o noacute vazio Como cada noacute natildeo folha de uma octree tem pelo menos um noacute filho

natildeo vazio sempre pode ser feita a classificaccedilatildeo dos noacutes vazios A classificaccedilatildeo

eacute feita da seguinte forma dentre os surfels do vizinho-irmatildeo escolhido encontra-

se o surfel mais proacuteximo ao noacute a ser classificado Se a normal deste surfel

aponta para o noacute vazio a ser classificado entatildeo ele eacute classificado como ldquoforardquo

Se a normal aponta no sentido contraacuterio entatildeo ele eacute classificado como ldquodentrordquo

De maneira mais formal sejam cv e cc coordenadas dos centros do noacute vazio e

do noacute contorno respectivamente Seja s o surfel mais proacuteximo ao noacute vazio e ns

a normal em s Se ( cv - cc )٠ ns gt 0 ( produto interno entre a normal em s e o

vetor cv - cc for maior que zero ) o noacute vazio seraacute classificado como ldquoforardquo

Senatildeo seraacute classificado como ldquodentrordquo

Em geral os noacutes ldquocontornordquo satildeo subdivididos em trecircs partes uma que estaacute

fora do modelo uma que estaacute dentro do modelo e uma terceira que conteacutem os

surfels Esta subdivisatildeo eacute feita por meio da criaccedilatildeo de dois planos paralelos que

Operaccedilotildees Booleanas com Pontos 36

dividem o noacute Para determinar estes planos calcula-se o vetor nm igual agrave

meacutedia das normais dos surfels do noacute nm = sum ns sum ns onde ns eacute a normal de

cada surfel do noacute

Em seguida encontra-se o surfel com maior produto interno entre a sua

normal e a normal meacutedia d1=Max(nm ٠ ns) Este surfel juntamente com a normal

meacutedia define um dos planos Encontra-se tambeacutem o surfel com menor produto

interno entre a sua normal e a normal meacutedia d2=Min(nm ٠ ns) Este surfel

juntamente com a normal meacutedia define o outro plano A Figura 10 mostra a

divisatildeo de um noacute de uma quadtree nas trecircs partes dentro do modelo fora do

modelo e no ldquocontornordquo

Esta subdivisatildeo aplica-se apenas a noacutes que conteacutem surfels cujas direccedilotildees

natildeo variem em mais de 90 graus Caso isso ocorra ele natildeo seraacute subdividido Ou

seja se um noacute possuir dois vetores normais (de dois surfels diferentes) que

formem um acircngulo maior que 90 graus ele natildeo seraacute subdividido

Figura 10 [2] -Divisatildeo de noacute de contorno a parte agrave esquerda estaacute fora do modelo a parte agrave direita estaacute dentro do modelo e a faixa intermediaacuteria conteacutem os surfels

4222 Teste Dentro-Fora

O Teste Dentro-Fora faz a classificaccedilatildeo dos surfels de um modelo como

ldquodentrordquo ou ldquoforardquo de outro modelo Portanto aplicaremos este mesmo teste duas

vezes uma para o modelo S1 em relaccedilatildeo ao modelo S2 e outra para S2 em

relaccedilatildeo a S1 Vamos mostrar o teste Dentro-Fora para o caso da classificaccedilatildeo

dos surfels do modelo S1 em relaccedilatildeo a S2

Operaccedilotildees Booleanas com Pontos 37

No item anterior foram criadas duas octrees uma para o modelo S1 e

outra para o modelo S2 Chamemos de A e B as octrees de S1 e S2

respectivamente Para classificar S1 em relaccedilatildeo a S2 inicialmente eacute feita uma

avaliaccedilatildeo da posiccedilatildeo de A em relaccedilatildeo a B A e B podem estar nas seguintes

situaccedilotildees

- A natildeo intersecta B

- A intersecta apenas noacutes ldquoforardquo de B

- A intersecta apenas noacutes ldquodentrordquo de B

- A intersecta noacutes ldquoforardquo e noacutes ldquodentrordquo de B

Para testar estas situaccedilotildees os noacutes satildeo aumentados de rmax o raio do

maior surfel do modelo soacutelido Isto eacute feito para compensar o fato de que o surfel

natildeo eacute apenas um ponto mas sim considerado como um disco

No primeiro e no segundo caso todos os surfels de A satildeo classificados

como ldquoforardquo No terceiro caso todos os surfels de A satildeo classificados como

ldquodentrordquo

No quarto caso temos que percorrer a octree A Comeccedilando pelo noacute raiz

percorre-se os filhos deste noacute Para cada filho os quatro testes acima satildeo feitos

Se o noacute filho encontra-se em um dos trecircs primeiros casos a classificaccedilatildeo eacute dada

como foi citada acima Se um filho estaacute no quarto caso e natildeo eacute um noacute folha

repete-se recursivamente o mesmo procedimento para seus filhos ateacute encontrar-

se um noacute folha Para um noacute que estaacute no quarto caso e eacute folha percorre-se a lista

de surfels que este noacute conteacutem classificando cada um destes surfels Seja sa um

surfel desta lista Para este caso percorre-se a octree B para classificar sa

Primeiramente encontramos o noacute de B que conteacutem sa Se este noacute de B foi

dividido testa-se de acordo com esta divisatildeo do noacute se o surfel sa estaacute na parte

do noacute que estaacute dentro do modelo ele eacute classificado como ldquodentrordquo se sa estaacute na

parte que estaacute fora do modelo ele eacute classificado como ldquoforardquo se sa estaacute na parte

intermediaacuteria ou se o noacute de B natildeo foi subdividido em planos encontra-se sb que

eacute o surfel pertencente a este noacute de B que estaacute mais proacuteximo de sa sa seraacute

entatildeo classificado de acordo com sb Se ( sa - sb )٠ nb gt 0 sa eacute classificado

como ldquoforardquo senatildeo eacute classificado como ldquodentrordquo Se os discos de sb e sa se

intersectam sa eacute marcado como interseccedilatildeo Para encontrar sb o algoritmo

implementa o meacutetodo TINN ndash Triangle Inequality Nearest Neighbour [19]

Operaccedilotildees Booleanas com Pontos 38

4223 Tratamento da interseccedilatildeo

Os surfels de A que intersectam surfels de B satildeo classificados como

ldquointerseccedilatildeordquo Se eles natildeo forem incluiacutedos no modelo resultado o soacutelido resultado

teraacute buracos Se eles forem incluiacutedos sem algum tratamento eles natildeo

representaratildeo adequadamente a regiatildeo Em geral o surfel sa (um surfel

ldquointerseccedilatildeordquo de A) eacute dividido em dois pelo plano que conteacutem o surfel sb (surfel de

B que sa intersecta) uma parte que estaacute fora de B e outra que estaacute dentro de B

Dependendo da operaccedilatildeo que estaacute sendo realizada vamos querer manter uma

destas partes do surfel sa no modelo resultado Seja xa a posiccedilatildeo do surfel sa e o

surfel sa uma circunferecircncia de centro xa e raio ra igual ao raio de alcance de sa

O plano que conteacutem o surfel sb define uma corda desta circunferecircncia como

mostra a Figura 11 O surfel sa seraacute substituiacutedo por um surfel menor que

ultrapassa esta corda de uma distacircncia e definida pelo usuaacuterio Para cobrir

completamente a interseccedilatildeo seratildeo adicionados surfels menores que cruzam a

corda de interseccedilatildeo

Figura 11 -Interseccedilatildeo do surfel s e do plano que passa pelo surfel t o surfel mais proacuteximo a s O surfel s eacute substituiacutedo por trecircs surfels menores

Operaccedilotildees Booleanas com Pontos 39

O tratamento de interseccedilatildeo proposto por Adams e Dutreacute [2] natildeo soacute evita

os buracos mas tambeacutem cria uma forma de renderizaccedilatildeo de arestas vivas A

colocaccedilatildeo de vaacuterios pequenos surfels na regiatildeo da interseccedilatildeo permite esta

correta renderizaccedilatildeo das ldquoarestas vivasrdquo Desta forma o problema das arestas

vivas eacute resolvido na modelagem (Figura 12) A vantagem de se resolver o caso

na modelagem eacute que natildeo eacute necessaacuterio fazer um tratamento especial na

renderizaccedilatildeo para que mostre esta aresta viva Diferente do tratamento feito

em Pauly (seccedilatildeo 431) que resolve esta questatildeo em tempo de renderizaccedilatildeo

Aleacutem disso o tratamento resolve alguns casos onde a Regra 2 poderia falhar

(veja em Validade da Regra 2-seccedilatildeo 44)

Figura 12 [2] -Agrave direita eacute mostrado o resultado do tratamento de interseccedilatildeo para o caso de Arestas Vivas do objeto agrave esquerda

43 Meacutetodo de Pauly

O meacutetodo aplica-se a objetos soacutelidos e natildeo soacutelidos Os modelos podem ser

obtidos a partir de diferentes entradas como nuvem de pontos irregulares ou por

meio de scanners 3D Cria um modelo hiacutebrido destes objetos usa o modelo por

pontos juntamente com a representaccedilatildeo impliacutecita Moving Least Squares - MLS

[18] Realiza operaccedilotildees booleanas com pontos e utiliza adicionalmente MLS

para alguns casos de classificaccedilatildeo de surfels e no tratamento de interseccedilatildeo A

seguir apresentamos as caracteriacutesticas do modelo por pontos deste meacutetodo e o

algoritmo que realiza as operaccedilotildees

Operaccedilotildees Booleanas com Pontos 40

431 Modelo em Pauly

O modelo eacute uma estrutura hiacutebrida de pontos com a representaccedilatildeo impliacutecita

Moving Least Squares - MLS [18] Esta estrutura eacute usada para fazer operaccedilotildees

booleanas e tambeacutem operaccedilotildees de free-form (natildeo abordadas nesta

dissertaccedilatildeo) Para operaccedilotildees booleanas a representaccedilatildeo MLS permite que a

curva de interseccedilatildeo entre os modelos seja reconstruiacuteda e surfels sejam

colocados nesta curva e em alguns casos de classificaccedilatildeo de surfels mostrados

na seccedilatildeo 432 Para este modelo natildeo existem restriccedilotildees quanto agrave forma do

objeto

Os surfels contecircm informaccedilotildees sobre sua posiccedilatildeo e sua normal Aleacutem

disso surfels podem conter informaccedilotildees adicionais como textura cor

propriedades de materiais

A distribuiccedilatildeo dos surfels eacute natildeo-uniforme e a amostragem eacute

aproximadamente adequada (Veja seccedilatildeo 44)

432 Algoritmo de Operaccedilotildees Booleanas

O algoritmo classifica surfels de um modelo como ldquodentrordquo ou ldquoforardquo de

outro modelo Antes de colocarmos como eacute feita esta classificaccedilatildeo devemos

acrescentar que Pauly estende esta classificaccedilatildeo para modelos que natildeo satildeo

soacutelidos Ou seja mesmo um modelo natildeo soacutelido divide o espaccedilo da cena (espaccedilo

em que se encontra o modelo) em dois sub-espaccedilos dentro ou fora do modelo

Pauly faz esta subdivisatildeo da seguinte forma

Como a superfiacutecie que determina o modelo eacute orientada (conteacutem vetores

normais agrave superfiacutecie que apontam para ldquoforardquo do modelo) Pauly considera que

um modelo natildeo soacutelido divide o espaccedilo em dois sub-espaccedilos um ldquoforardquo do

modelo (os vetores normais apontam para este sub-espaccedilo) e um que estaacute

ldquodentrordquo do modelo (os vetores normais apontam para direccedilatildeo oposta a este sub-

espaccedilo) Por exemplo um plano eacute representado como um conjunto de surfels

contidos num determinado espaccedilo geomeacutetrico plano π Cada surfel conteacutem um

vetor normal direcionado Este modelo divide entatildeo o espaccedilo em dois sub-

espaccedilos o sub-espaccedilo que eacute apontado por estes surfels (considerado ldquoforardquo do

modelo) e o sub-espaccedilo que estaacute na direccedilatildeo oposta (considerado ldquodentrordquo do

modelo) Desta forma ele aplica as classificaccedilotildees de ldquodentrordquo e ldquoforardquo de um

modelo tambeacutem a modelos natildeo soacutelidos A partir desta consideraccedilatildeo as

Operaccedilotildees Booleanas com Pontos 41

operaccedilotildees booleanas satildeo realizadas com os modelos natildeo soacutelidos da mesma

forma que com os modelos soacutelidos

Para determinar esta classificaccedilatildeo (dentro ou fora do modelo) Pauly utiliza

a Regra 2 Para pesquisa do surfel mais proacuteximo o meacutetodo usa a estrutura Kd-

tree [16] e tambeacutem o algoritmo ANN [16] No entanto o meacutetodo apresenta uma

restriccedilatildeo da Regra 2 ela soacute deve ser usada para classificaccedilotildees de pontos x se

a distacircncia x-p for maior que o espaccedilamento da amostragem local ηp em p

Este espaccedilamento da amostragem local ηp em p eacute um caacutelculo aproximado da

distacircncia meacutedia entre os surfels vizinhos a p Se x estaacute muito proacuteximo agrave

superfiacutecie a classificaccedilatildeo pode falhar Neste caso ele calcula o ponto exato de

S mais proacuteximo a x usando a projeccedilatildeo MLS (ldquoMoving Least Squaresrdquo)

Por questotildees de melhoria de desempenho utiliza-se o fato de que sendo

Ωp (x) a classificaccedilatildeo do ponto x em relaccedilatildeo agrave amostragem P tem-se que Ωp (x)

= Ωp (xrsquo) para todos os pontos de xrsquo que estatildeo dentro da esfera de centro x e

raio igual a x-p - ηp (onde p eacute o surfel mais proacuteximo e ηp eacute o espaccedilamento

local da amostragem em p acima citado) Ou seja sendo x um ponto qualquer p

o surfel mais proacuteximo a x ηp eacute o espaccedilamento local da amostragem em p se

desenharmos uma esfera com centro x e raio igual a x-p - ηp temos que

todos os pontos xrsquo que estatildeo dentro da esfera teratildeo a mesma classificaccedilatildeo de x

Desta forma o nuacutemero de vezes que a classificaccedilatildeo eacute feita (pesquisando-se o

surfel mais proacuteximo ao ponto e usando a Regra 2) diminui em ateacute 90 Assim

em geral a classificaccedilatildeo de um surfel eacute obtida a partir do seu surfel vizinho

Dados

S1 a superfiacutecie MLS de contorno que define o modelo A

S2 a superfiacutecie MLS de contorno que define o modelo B

P1 o conjunto de surfels que representa a superfiacutecie S1

P2 o conjunto de surfels que representa a superfiacutecie S2

Ωp1 (x) a classificaccedilatildeo do ponto p em relaccedilatildeo a uma amostragem P1

Q1 o subconjunto de P1 que vai compor o resultado

Ωp2 (x) a classificaccedilatildeo do ponto p em relaccedilatildeo a uma amostragem P2

Q2 o subconjunto de P2 que vai compor o resultado

Os conjuntos Q1 e Q2 satildeo obtidos por meio da Tabela 1 mostrada abaixo

Operaccedilotildees Booleanas com Pontos 42

Tabela 1 Classificaccedilatildeo para operaccedilotildees booleanas

Para o tratamento de interseccedilatildeo neste meacutetodo satildeo computados pontos

que caem exatamente na curva de interseccedilatildeo e estes satildeo acrescentados ao

modelo resultado Estes pontos satildeo determinados de forma que a densidade da

amostragem vai crescendo agrave medida que os surfels se aproximam da curva de

interseccedilatildeo e convergem para este ponto de interseccedilatildeo como mostra a Figura

13

(a) (b) (c)

Figura 13 - Os novos surfels satildeo colocados exatamente na curva de interseccedilatildeo

e convergem para o ponto de interseccedilatildeo

A Figura 14 mostra o processo de encontrar os surfels que caem nesta

curva de interseccedilatildeo Inicialmente satildeo encontrados todos os pontos de Q1 e Q2

que estatildeo proacuteximos agrave curva de interseccedilatildeo por meio da funccedilatildeo de distacircncia do

operador de projeccedilatildeo MLS Em seguida procura-se todos os pares mais

proacuteximos (q1 є Q1 q2 є Q2 ) e computa-se o ponto q na curva de interseccedilatildeo da

seguinte forma (veja a Figura 14)Seja r o ponto na linha de interseccedilatildeo dos dois

planos tangentes em q1 e q2 e que estaacute mais proacuteximo a estes dois pontos isto eacute

que minimiza a distacircncia ||r-q1|| + ||r-q2|| r eacute a primeira aproximaccedilatildeo de q e agora

pode ser projetado sobre S1 e S2 para obter dois novos pontos de partida q1rsquo e q2

rsquo

para a iteraccedilatildeo Este procedimento pode ser repetido iterativamente ateacute que os

pontos q1 e q2 convirjam ao ponto q na curva de interseccedilatildeo Normalmente este

processo requer menos de trecircs iteraccedilotildees

Operaccedilotildees Booleanas com Pontos 43

(a) (b)

(c)

Figura 14 (a) Suponhamos a reta que eacute a interseccedilatildeo do plano tangente a S1 em q1 e o

plano tangente a S2 em q2 O ponto r eacute o ponto desta reta que estaacute mais proacuteximo a q1 e

q2 (b) r eacute projetado sobre S1 e S2 obtendo-se q1acute e q2acute dois novos pontos de partida

para nova iteraccedilatildeo (c) A nova iteraccedilatildeo gera r que eacute uma aproximaccedilatildeo melhor de q

Pauly faz o tratamento de arestas vivas em tempo de renderizaccedilatildeo Ele

faz uma alteraccedilatildeo no renderizador Marca os surfels de interseccedilatildeo e ao

renderizaacute-los satildeo cortados para gerar uma aresta viva

44 Validade da Regra 2

Os dois meacutetodos analisados nesta dissertaccedilatildeo utilizam a seguinte regra

para a classificaccedilatildeo de um surfel

Regra 2 dado um volume V determinado por uma superfiacutecie de contorno

S uma amostragem P da superfiacutecie S um ponto x qualquer um ponto p є P que

eacute a amostra mais proacutexima a x um vetor ny normal a S em p e orientado para

fora de S temos que (x ndash p) np gt 0 x notinV

Em [16] eacute colocado que esta regra eacute tirada da seguinte propriedade da

geometria diferencial (aqui chamada Propriedade 1)

Propriedade 1 Dado um volume V determinado por uma superfiacutecie de

contorno S contiacutenua e duplamente diferenciaacutevel um ponto x qualquer um ponto

Operaccedilotildees Booleanas com Pontos 44

y є S que eacute o ponto de S mais proacuteximo a x um vetor ny normal a S em y e

orientado para fora de S temos que (x ndash y) ny gt 0 x notinV

A Figura 15 ilustra esta propriedade

Figura 15 Para verificar se o ponto x estaacute fora de um contorno C encontra-se o ponto y

de C Se o produto interno entre a normal em y e o vetor que liga y a x for maior que

zero entatildeo x estaacute fora de C senatildeo estaacute dentro de C

Pauly assume que tendo uma amostragem P da superfiacutecie S podemos

usar a Propriedade 1 substituindo y por p o surfel mais proacuteximo ao ponto x (x ndash

p) np gt 0 x notinV (Regra 2) Esta amostragem P em seu trabalho eacute

(aproximadamente) uma ldquoamostragem adequadardquo Tambeacutem seu tratamento de

interseccedilatildeo cria uma aproximaccedilatildeo dela (seccedilatildeo 43) Empiricamente a

ldquodiscretizaccedilatildeo da propriedaderdquo eacute vaacutelida a partir desta suposiccedilatildeo Mas isso natildeo foi

demonstrado teoricamente em seu trabalho

Pauly coloca em [16] que natildeo existe ainda uma teoria matemaacutetica rigorosa

de amostragem anaacuteloga a teoria de Fourier para superfiacutecies discretas

A melhor aproximaccedilatildeo teoacuterica para esta aacuterea eacute o uso do Eixo Medial que

foi colocado em [10] Vamos descrever este trabalho brevemente nesta seccedilatildeo

Este trabalho apresenta um algoritmo de reconstruccedilatildeo de superfiacutecie que parte de

uma amostragem adequada (abaixo definida) de pontos e obteacutem uma malha

que eacute topologicamente equivalente agrave superfiacutecie do objeto e agrave medida que a

densidade da amostragem cresce a saiacuteda converge para esta superfiacutecie

Para definir amostragem adequada o trabalho parte do conceito de Eixo

Medial

Operaccedilotildees Booleanas com Pontos 45

ldquoEixo Medialrdquo de uma superfiacutecie 2D posicionada no R3 eacute o conjunto

(fechado) de pontos pi para os quais buscando-se o ponto da superfiacutecie que

estaacute mais proacuteximo a pi mais de um ponto pertencentes a esta superfiacutecie satildeo

encontrados A Figura 16 abaixo ilustra o Eixo Medial em 2D

Figura 16 [10] As curvas de cor mais clara satildeo o Eixo Medial da curva em preto

Em duas dimensotildees os veacutertices de Voronoi de uma amostragem densa

aproximam o ldquoEixo Medialrdquo da amostragem (mas esta propriedade natildeo se

estende a 3D) A Figura 17 mostra o Eixo Medial em 3D

Figura 17 [10] Em 3D geralmente o Eixo Medial eacute uma superfiacutecie 2D (em cor mais

clara) Aqui o quadrado eacute o Eixo Medial da superfiacutecie transparente que o contorna

Podemos definir agora a amostragem adequada da seguinte forma

Supondo uma superfiacutecie suave que quer dizer uma 2-manifold duplamente

diferenciaacutevel posicionada no R3 uma ldquoamostragem adequadardquo desta superfiacutecie eacute

aquela na qual a densidade da amostragem eacute (pelo menos) inversamente

proporcional agrave distacircncia ao ldquoEixo Medialrdquo A Figura 18 mostra uma amostragem

adequada

Operaccedilotildees Booleanas com Pontos 46

Figura 18 [10] A figura mostra o diagrama de Voronoi de uma amostragem de pontos S

Da mesma forma que o a amostragem aproxima a curva os veacutertices de Voronoi

aproximam o Eixo Medial

Na praacutetica na reconstruccedilatildeo da superfiacutecie uma aproximaccedilatildeo deste ldquoEixo

Medialrdquo eacute computada (devido agrave dificuldade de computaacute-lo exatamente e em

alguns casos ateacute impossibilidade)

Melhorias Propostas 47

5 Melhorias Propostas

No capiacutetulo 4 apresentamos dois meacutetodos que realizam operaccedilotildees

booleanas em modelos por pontos o meacutetodo de Adams e Dutreacute [2] e o meacutetodo

de Pauly[3] Para esta dissertaccedilatildeo usamos o meacutetodo de Adams e Dutreacute [2] e

propomos as seguintes melhorias

- Alteramos o momento em que eacute feita a classificaccedilatildeo da octree Fazemos

esta classificaccedilatildeo durante a sua criaccedilatildeo Os noacutes filhos de um noacute pai P qualquer

satildeo classificados logo apoacutes a criaccedilatildeo de todos estes filhos de P

independentemente do restante da octree ter sido criada Isso pode ser feito

porque a octree eacute construiacuteda na ordem raiz-esquerda-direita (preorder

traversal) e portanto apoacutes todos os filhos de um noacute pai serem criados a parte

necessaacuteria da octree para a classificaccedilatildeo destes filhos jaacute estaacute criada

- A classificaccedilatildeo da octree eacute otimizada classificando-se os cantos dos seus

noacutes como dentro ou fora do modelo Na classificaccedilatildeo de um noacute n1 a partir de seu

vizinho n2 se os cantos que satildeo comuns a n1 e n2 tiverem a mesma

classificaccedilatildeo esta seraacute dada ao noacute Assim diminuiacutemos o nuacutemero de pesquisas

pelo surfel mais proacuteximo que eacute a parte criacutetica da classificaccedilatildeo dos noacutes da octree

em termos de tempo de processamento

- Acrescentamos um valor miacutenimo (maior que zero) para o nuacutemero de

surfels contidos em um noacute que eacute uma das condiccedilotildees de parada na criaccedilatildeo da

octree Verificamos que desta forma diminui-se a chance de erro na classificaccedilatildeo

de partes criacuteticas como ldquoarestas vivasrdquo

Uma comparaccedilatildeo entre a nossa implementaccedilatildeo e a de Pauly tambeacutem seraacute

feita no capiacutetulo 6

51 Descriccedilatildeo do algoritmo

O algoritmo implementado para esta dissertaccedilatildeo baseado no meacutetodo de

Adams e Dutreacute [2] pode ser dividido nas seguintes partes Criaccedilatildeo e

classificaccedilatildeo de uma octree para cada modelo Teste DentroFora Criaccedilatildeo do

modelo resultado Natildeo foi implementado tratamento especial algum de

interseccedilatildeo para o nosso plugin As proacuteximas seccedilotildees apresentam estas partes

Melhorias Propostas 48

511 Criaccedilatildeo e classificaccedilatildeo de uma octree para cada modelo

As ideacuteias do algoritmo satildeo aqui ilustradas em 2D mas a extensatildeo delas

para 3D eacute feita facilmente

Para cada modelo a octree eacute criada e classificada da seguinte forma

Figura 19-Quadtree classificada Os noacutes mais escuros estatildeo fora do modelo os mais claros dentro e os em tom intermediaacuterio satildeo noacutes de contorno

Gera-se uma ldquocaixa envolventerdquo do modelo contendo todos os surfels e

cria-se o noacute raiz da octree que corresponde a esta ldquocaixa envolventerdquo Este noacute

raiz eacute subdividido em oito filhos e seus surfels satildeo distribuiacutedos entre eles Ao

inveacutes de testarmos os valores de xy e z para cada surfel a fim de determinar

para qual filho ele iraacute utilizamos listas auxiliares Primeiro os surfels satildeo

subdivididos em dois grupos pelos valores de x e armazenados em uma lista

auxiliar Em seguida cada uma das listas eacute subdividida pelo valor de y e as

quatro listas obtidas seratildeo subdivididas pelo valor de z Ao final teremos 8 listas

de surfels cada uma delas pertencente a um filho

Cada noacute seraacute entatildeo novamente subdividido enquanto contiver um nuacutemero

de surfels gt nmin (valor preacute-definido) ou enquanto a profundidade da aacutervore lt pmax

(valor preacute-definido) Na figura 19 pmax = 3 e nmin = 3

Melhorias Propostas 49

Figura 20-O noacute cheio eacute dividido em trecircs partes agrave esquerda a regiatildeo estaacute dentro do modelo agrave direita estaacute fora e entre as duas linhas que dividem o noacute estaacute a regiatildeo que conteacutem os surfels

Os noacutes cheios recebem um tratamento especial Eles satildeo subdivididos em

trecircs partes da seguinte forma uma que estaacute fora do modelo outra que estaacute

dentro e uma que conteacutem os surfels Esta subdivisatildeo eacute feita por meio da criaccedilatildeo

de dois planos paralelos que dividem o noacute Para determinar estes planos

calcula-se o vetor nm igual agrave meacutedia das normais dos surfels do noacute nm = sum ns

sum ns onde ns eacute a normal de cada surfel do noacute Em seguida encontra-se o

surfel com maior produto interno entre a sua normal e a normal meacutedia

d1=Max(nm ٠ ns) Este surfel juntamente com a normal meacutedia define um dos

planos Encontra-se tambeacutem o surfel com menor produto interno entre a sua

normal e a normal meacutedia d2=Min (nm ٠ ns) Este surfel juntamente com a normal

meacutedia define o outro plano (Figura 20) Se o noacute conteacutem surfels de superfiacutecies de

orientaccedilotildees diferentes ele natildeo seraacute subdividido ou seja os planos coincidiratildeo

com os planos que delimitam o proacuteprio noacute Este teste foi implementado da

seguinte forma escolhe-se um surfel qualquer do noacute Calcula-se o produto

interno entre a normal deste surfel e as outras normais dos outros surfels deste

noacute Se algum produto interno for menor que zero este noacute natildeo seraacute subdividido

Apoacutes a etapa de subdivisatildeo classificam-se os oito cantos deste noacute como

dentro ou fora do modelo por meio da classificaccedilatildeo de um ponto que

descreveremos na sub-seccedilatildeo 5111

Melhorias Propostas 50

a b

c d

Figura 21-O noacute a eacute classificado pelo noacute c o noacute d tambeacutem eacute classificado pelo noacute c a classificaccedilatildeo do noacute a eacute propagada para o noacute b

Jaacute os noacutes vazios da octree seratildeo classificados como ldquodentrordquo ou ldquoforardquo do

modelo da seguinte forma cada noacute folha vazio eacute classificado a partir de um de

seus irmatildeos vizinhos adjacentes Se ele possuir um vizinho adjacente cheio ele

seraacute classificado por este vizinho se natildeo possuir os vizinhos adjacentes seratildeo

classificados primeiro e ele teraacute esta mesma classificaccedilatildeo (Figura 21) Como tem

que existir sempre pelo menos um noacute cheio entre os filhos de um noacute pai entatildeo

sempre esta classificaccedilatildeo poderaacute ser feita Com a classificaccedilatildeo de todos os

filhos tem-se tambeacutem a classificaccedilatildeo dos cantos do noacute pai

Mf03c003fmx a b

Figura 22-Os cantos a e b do noacute cheio possuem a mesma classificaccedilatildeo fora do modelo Esta classificaccedilatildeo foi dada ao noacute vazio adjacente

Melhorias Propostas 51

Para classificar um noacute vazio por meio de um noacute cheio verificam-se os

cantos comuns destes dois noacutes se todos os cantos tiverem a mesma

classificaccedilatildeo esta seraacute dada ao noacute vazio (Figura 22) Se houver classificaccedilotildees

diferentes escolhe-se o surfel do noacute cheio mais proacuteximo ao noacute vazio faz-se o

produto interno entre a normal deste surfel e o vetor que liga o centro do noacute

cheio ao centro do noacute vazio (ou o vetor que liga o surfel ao centro do noacute vazio)

Se o produto interno for maior que zero o noacute eacute classificado como ldquoforardquo senatildeo eacute

classificado como ldquodentrordquo Para encontrar o surfel (pertencente a um noacute cheio)

mais proacuteximo ao noacute vazio existem dois casos

- O noacute cheio eacute folha percorre-se toda a lista de surfels e escolhe o surfel

mais proacuteximo da fronteira entre o noacute cheio e o vazio

- O noacute cheio natildeo eacute um noacute folha percorrem-se os filhos do noacute cheio ou seja

esta pesquisa eacute feita descendo na octree a partir do noacute cheio procurando o

surfel mais proacuteximo agrave fronteira do pai com o noacute vazio a ser classificado

Classificando o centro do noacute vazio todo o noacute deve ter a mesma

classificaccedilatildeo pois este noacute natildeo conteacutem surfels Para encontrar o surfel do noacute

vazio mais proacuteximo da fronteira entre o noacute cheio e o vazio basta testar o valor da

coordenada se a fronteira eacute o lado direito do noacute cheio escolhe-se o surfel com

maior coordenada lsquoxrsquo se eacute o lado esquerdo escolhe-se o surfel com menor lsquoxrsquo

se lado superior surfel com maior lsquoyrsquo etc A seguir apresentamos a classificaccedilatildeo

de um ponto qualquer pertencente a um noacute cheio

Figura 23- Quadtree classificada

Melhorias Propostas 52

5111 Classificaccedilatildeo de um ponto de um noacute cheio

Figura 24 [2] A normal n eacute a normal meacutedia e os surfels s1 e s2 juntamente com a normal

n definem as retas que dividem o noacute O ponto a estaacute fora do modelo e o ponto b estaacute

dentro do modelo

Para um ponto localizado dentro do noacute faz-se o seguinte teste se o noacute foi

dividido testa-se de acordo com a divisatildeo do noacute se o ponto estaacute na parte do noacute

que estaacute dentro do modelo ele eacute classificado como ldquodentrordquo se o ponto estaacute na

parte que estaacute fora do modelo ele eacute classificado como ldquoforardquo (Figura 24) se o

ponto estaacute na parte que conteacutem os surfels encontra-se o surfel s pertencente ao

noacute mais proacuteximo do ponto e o classifica de acordo com s seja ns a normal em s

cs a coordenada de s cp a coordenada do ponto Se (cp - cs )٠ ns gt 0 o ponto

seraacute classificado como ldquoforardquo Senatildeo seraacute classificado como ldquodentrordquo

Se o noacute natildeo foi dividido em planos esta classificaccedilatildeo a partir do surfel

mais proacuteximo seraacute sempre feita

512 Teste DentroFora

Melhorias Propostas 53

Figura 25-Duas circunferecircncias e suas quadtrees correspondentes

O Teste DentroFora classifica os surfels de um modelo como dentro ou

fora de outro modelo ou na sua interseccedilatildeo Este teste foi aqui implementado

exatamente como foi proposto em Adams e Dutreacute [2] exceto que natildeo foi

implementado o meacutetodo TINN - Triangle Inequality Nearest Neighbour [19]

Cada octree eacute percorrida verificando-se se os seus noacutes ou surfels estatildeo dentro

fora ou no contorno do outro modelo (Figura 25) Sejam A e B duas octrees e

queremos classificar a octree A As duas octrees (AB) satildeo percorridas partindo

da raiz

Para cada noacute de A existem quatro casos (Figura 26) Para testar estas

situaccedilotildees os boxes dos noacutes satildeo aumentados de rmax o raio do maior surfel do

modelo Isto eacute feito para compensar o fato de que o surfel natildeo eacute apenas um

ponto mas sim considerado como um disco

Os quatro casos satildeo

Se o noacute de A natildeo intersecta B entatildeo todos os surfels deste noacute satildeo

classificados como fora

Se o noacute de A intersecta apenas noacutes de B que estatildeo fora do modelo

todos os surfels deste noacute satildeo fora

Se o noacute de A intersecta apenas noacutes de B que estatildeo dentro do modelo

todos os surfels deste noacute satildeo dentro

Melhorias Propostas 54

Se o noacute de A intersecta noacutes de B que estatildeo dentro e tambeacutem noacutes de B

que estatildeo fora testa-se se este noacute de A eacute ou natildeo folha Se natildeo for folha

percorre-se os filhos deste noacute de A ateacute encontrar um noacute folha cheio que

intersecta B Para cada surfel sa deste noacute folha de A encontra-se o surfel de B

mais proacuteximo e classifica-se a coordenada de sa da forma apresentada na seccedilatildeo

5111 Seja sb o surfel usado na classificaccedilatildeo de sa Se os discos de sb e sa

se intersectam sa eacute classificado como ldquointerseccedilatildeordquo

(a) (b)

(c) (d)

Figura 26- a modelos natildeo se intersectam b modelo intersecta noacutes fora c modelo intersecta apenas noacutes dentro d modelo intersecta noacutes dentro e noacutes fora

513 Criaccedilatildeo do modelo resultado

Um novo modelo eacute criado com os seguintes surfels (de acordo com a

operaccedilatildeo booleana escolhida pelo usuaacuterio - veja Regra 1 da seccedilatildeo 41)

Uniatildeo - surfels de A que estatildeo fora de B + surfels de B que estatildeo fora de A

Melhorias Propostas 55

Interseccedilatildeo - surfels de A que estatildeo dentro de B + surfels de B que estatildeo

dentro de A

Diferenccedila A-B - surfels de A que estatildeo fora de B + surfels de B que estatildeo

dentro de A (com orientaccedilatildeo invertida)

Como natildeo foi implementado tratamento especial algum de interseccedilatildeo para

o nosso plugin os surfels que se intersectam satildeo mantidos no modelo resultado

final sem modificaccedilotildees

Descrito o algoritmo vejamos a seguir a sua implementaccedilatildeo

52 Implementaccedilatildeo

Este algoritmo foi implementado na forma de um plugin para o software

PointShop 3D [11] Este plugin foi desenvolvido na linguagem C e no sistema

operacional Windows

A escolha deste tipo de implementaccedilatildeo permitiu-nos usar o software

PointShop para os testes do algoritmo Estes testes foram feitos com os modelos

disponibilizados para o PointShop [11] Nesta seccedilatildeo apresentaremos o software

PointShop e as principais estruturas de dados usadas em nosso plugin

O Pointshop eacute um software aberto com seu coacutedigo disponiacutevel e preparado

para trabalhar com plugins Eacute um software de ediccedilatildeo de modelos 3D por pontos

Ele permite aleacutem de visualizar o modelo alterar as suas caracteriacutesticas como

cor brilho e fazer mapeamento de textura iluminaccedilatildeo filtragem (Figura 27)

Melhorias Propostas 56

Figura 27-Software PointShop 3D com dois modelos carregados na sua cena

Aleacutem disso pode-se criar uma cena com vaacuterios modelos e visualizaacute-los de

qualquer ponto de vista Implementa o virtual trackball para rotacionaacute-los e

transladaacute-los Usa uma iluminaccedilatildeo simples direcional A sua arquitetura eacute

extensiacutevel permite que o usuaacuterio adicione seus proacuteprios componentes ao

sistema Possui trecircs tipos de componentes

ldquoToolsrdquo fornece funcionalidades para ediccedilatildeo interativa de superfiacutecie Satildeo

disponibilizados na ldquotoolbarrdquo

Plugins fornece funcionalidades para processar em um soacute passo

modelos ou partes deles selecionadas Satildeo disponibilizados no menu ldquoPluginsrdquo

Renderes fornece funcionalidades de display para os modelos

Para esta dissertaccedilatildeo foi escolhida a construccedilatildeo do componente Plugin

por adequar-se agrave nossa proposta e ser a mais simples de ser construiacuteda O

PointShop [11] jaacute conteacutem uma tool que executa operaccedilotildees booleanas e

deformaccedilatildeo free-form sobre os modelos carregados na cena usando o meacutetodo

de Pauly [3] apresentado no capiacutetulo 4 O nosso plugin Operaccedilotildees Booleanas

implementa o algoritmo descrito na seccedilatildeo anterior baseado na proposta de

Melhorias Propostas 57

Adams e Dutreacute [2] Uma comparaccedilatildeo entre o nosso plugin e a tool de Pauly [3] eacute

feita no capiacutetulo 6

Figura 28-Menu do PointShop com o plugin e as opccedilotildees para operaccedilotildees booleanas

Para se executar o plugin o usuaacuterio precisa carregar dois modelos na

cena do PointShop acionar o plugin informando a operaccedilatildeo que seraacute executada

O plugin executaraacute o algoritmo acima proposto e carregaraacute o resultado na cena

do Pointshop retirando os modelos anteriores

521 Estruturas de Dados

Como vimos o software PointShop [11] trabalha com modelos por pontos

Um modelo deste software descrito na seccedilatildeo 42 conteacutem todas as informaccedilotildees

que o algoritmo proposto em Bart [2] necessita Abaixo relacionamos as

Melhorias Propostas 58

principais estruturas de dados do PointShop usadas no plugin e as principais

estruturas de dados do nosso plugin

As principais classes do PointShop usadas no plugin satildeo

Classe Scene

Classe Objects

Classe SurfelColections

Classe Surfel

Classe StatusBar

Classe Transformer

A hierarquia de dados eacute a seguinte a Scene conteacutem vaacuterios Objects os

quais conteacutem SurfelColections Cada SurfelColections conteacutem Surfels que

suportam uma ou mais propriedades tais como cor difusa cor especular

Classe Scene Classe que representa uma cena que conteacutem modelos

Classe Object Um modelo eacute representado pela classe Object que

conteacutem uma SurfelCollection e as matrizes de transformaccedilatildeo para rotaccedilatildeo

escala e translaccedilatildeo Cada Object eacute identificado pelo seu nome que eacute uacutenico na

Scene O meacutetodo getUniqueName retorna um nome uacutenico Cada Object tem sua

proacutepria matriz de transformaccedilatildeo que pode ser modificada com setRotation

rotate setPosition translate setScale e scale Objects podem ser copiados com

copy Objects consiste em um conjunto de surfels os quais podem ser

recuperados pela getSurfelCollection O Object pode ser ativado com

setActiveObject e recuperado com getActiveObject

Objects podem ser adicionados ou removidos com addObject e

removeObject Os Objects podem ser obtidos pela getFirstObject e

getNextObject

Classe SurfelCollection representa o conjunto de surfels de um modelo

Cada surfelcollection consiste em um conjunto de surfels (SurfelInterface) de

tamanho obtido por getNofSurfels Os surfels podem ser recuperados com

getFirstSurfel getCurrentSurfel e getNextSurfel

A SurfelCollection conteacutem um PropertyDescriptor e uma SurfelList

A SurfelList eacute uma lista duplamente encadeada de surfels Possui os

atributos firstSurfel lastSurfel currentSurfel que satildeo ponteiros para uma

SurfelInterface nSurfels que eacute o nuacutemero de Surfels

A SurfelInterface define a API para os surfels que satildeo os menores

elementos que compotildeem um Object Podem ser considerados como pontos com

uma normal que define a orientaccedilatildeo do ciacuterculo (ou elipse) que seraacute desenhado

Melhorias Propostas 59

tatildeo logo o surfel seja renderizado Tem como atributos dois ponteiros (next e

prev) para SurfelInterface

PropertyDescriptor consiste em ateacute 32 valores descrevendo quais as

propriedades a SurfelInterface suporta

Classe Surfel classe que representa o surfel

Classe StatusBar classe que imprime mensagens na tela Os plugins

podem mandar mensagens para o usuaacuterio pela StatusBar

Mensagens texto podem ser impressas com showMessage O progresso

de uma operaccedilatildeo pode ser indicado com setProgress ou resetProgress

Classe Transformer representa a transformaccedilatildeo entre sistemas de

coordenadas Esta classe fornece meacutetodos para transformar pontos e vetores

entre os diferentes sistemas de coordenadas do Pointshop

A seguir apresentamos as principais estruturas de dados do plugin

Operaccedilotildees Booleanas

As principais estruturas de dados do plugin satildeo boundingbox tree no

lista_surfel surfel

Boundingbox conteacutem dois pontos 3D que definem uma caixa que conteacutem

o modelo um ponto com menores coordenadas xy e z e outro ponto com

maiores xyz

Tree representa a octree do modelo Cada registro conteacutem um ponteiro

para um noacute e oito ponteiros para as 8 octrees filhas

No representa um noacute da octree Conteacutem os seguintes dados

- localizaccedilatildeo do noacute que eacute o canto inferior esquerdo do noacute

- lista_surfel (preenchida apenas para noacutes folha cheios)

- quantidade de surfels do noacute

- classificaccedilatildeo do noacute como dentro fora ou contorno

- classificaccedilatildeo do noacute em relaccedilatildeo a outro modelo

- indica se o noacute eacute folha ou natildeo

- vetor que eacute a meacutedia das normais dos surfels do noacute

- ponto que eacute a meacutedia das localizaccedilotildees dos surfels do noacute

- surfel que tem (entre todos os surfels do noacute) o maior produto interno

entre a sua normal e a normal meacutedia

- surfel que tem (entre todos os surfels do noacute) o menor produto interno

entre a sua normal e a normal meacutedia

- produto interno maacuteximo e miacutenimo entre as normais dos surfels do noacute e a

normal meacutedia deste noacute

Melhorias Propostas 60

- indica se o noacute conteacutem surfels com normais em sentido oposto (produto

interno entre elas eacute menor que zero)

- classificaccedilatildeo dos oito cantos do noacute

lista_surfels lista em que cada registro conteacutem um apontador para um

surfel e um apontador para o proacuteximo registro

surfel representa o surfel da octree Conteacutem a classificaccedilatildeo em relaccedilatildeo a

outro modelo e um ponteiro para o surfel do Poinshop

Resultados 61

6 Resultados

Neste capiacutetulo apresentamos os testes realizados com o plugin para o

PointShop implementado para esta dissertaccedilatildeo a comparaccedilatildeo deste plugin com

o plugin de Pauly [3] e a comparaccedilatildeo entre o meacutetodo de Adams e Dutreacute [2] e o

meacutetodo de Pauly [3]

61 Testes

Os testes foram feitos em um PC x86 Family 6 261600 KB de RAM sem

placa graacutefica sistema operacional Windows 2000 O plugin foi implementado na

linguagem C

Os modelos usados para os testes satildeo modelos disponibilizados no

PointShop [11] Vale lembrar que o meacutetodo implementado em nosso plugin eacute

restrito a modelos soacutelidos e portanto foram usados apenas estes modelos

soacutelidos para os testes

O modelo na Figura 29 que eacute um dos modelos disponibilizados no

PointShop [11] foi usado para mostrar o resultado das operaccedilotildees realizadas

pelo plugin implementado nesta dissertaccedilatildeo O modelo Igea eacute um modelo soacutelido

que conteacutem 134345 surfels

Resultados 62

Figura 29-Modelo do PointShop Igea

Para realizar as operaccedilotildees este modelo foi carregado na cena do

PointShop duas vezes e um deles colorido de vermelho As Figuras 30 31 32

mostram o resultado da operaccedilatildeo de uniatildeo interseccedilatildeo e diferenccedila

respectivamente Os nuacutemeros de surfels dos modelos resultantes satildeo mostrados

na Tabela 2

Resultados 63

Figura 30-Resultado da uniatildeo de duas Igeas

Figura 31-Resultado da interseccedilatildeo de duas Igeas

Resultados 64

Figura 32-Resultado da diferenccedila entre duas Igeas

Tabela 2-Nuacutemero de surfels dos modelos resultantes

Observamos que o nuacutemero de surfels dos modelos resultantes estaacute

coerente com as figuras dos seus modelos

Para avaliar o tempo de processamento das operaccedilotildees foram realizados

vaacuterios testes com o objetivo de obter uma meacutedia dos tempos de realizaccedilatildeo de

cada operaccedilatildeo Tambeacutem foram armazenados os tempos da criaccedilatildeo das duas

octrees e da classificaccedilatildeo de todos os surfels dos dois objetos (como dentro ou

fora do outro modelo) Estes testes foram feitos usando o modelo Igea A meacutedia

dos tempos de processamento foi calculada e os resultados satildeo mostrados na

Tabela 3 Verificamos que o maior tempo gasto eacute para criaccedilatildeo das octrees

Verificamos tambeacutem que este resultado apresentado eacute similar ao resultado

verificado empiricamente com o plugin de Pauly [3] Os tempos gastos para

realizar as operaccedilotildees satildeo similares e o maior tempo gasto no plugin de Pauly

tambeacutem eacute para inicializaccedilatildeo de suas estruturas de dados que incluem a kd-tree

Operaccedilatildeo Nuacutemero de surfels do modelo resultado

Uniatildeo 189715

Interseccedilatildeo 72225

Diferenccedila 134552

Resultados 65

Operaccedilatildeo Criaccedilatildeo das

Octrees (seg)

Classificaccedilatildeo

(seg)

Criaccedilatildeo do

resultado (seg)

Total (seg)

Uniatildeo 39375 1324 18925 7154

Interseccedilatildeo 38585 1585 09547 63982

Diferenccedila 399875 1504 1729 729475

Tabela 3- Meacutedia dos tempos de processamento para as operaccedilotildees com duas Igeas

Com o objetivo de expor melhor os resultados deste trabalho

apresentamos abaixo mais um teste das operaccedilotildees booleanas usando o nosso

plugin Os modelos usados para este segundo teste satildeo o Max Planck e o Male

ambos modelos soacutelidos disponibilizados no PointShop Estes modelos satildeo

mostrados nas figura 33 e 34

O primeiro Max Planck conteacutem 52809 surfels

Figura 33-Modelo do PointShop MaxPlanck

O segundo modelo abaixo Male conteacutem 148138 surfels

Resultados 66

Figura 34-Modelo do PointShop Male

As Figuras 353637 mostram o resultado da operaccedilatildeo de uniatildeo interseccedilatildeo

e diferenccedila respectivamente usando os dois modelos acima Podemos observar

pela figura 35 que o resultado da operaccedilatildeo de diferenccedila neste caso gerou um

modelo resultado com trecircs partes desconexas Os nuacutemeros de surfels de cada

modelo resultado satildeo mostrados na Tabela 5

Figura 35- Resultado da Uniatildeo do modelo Male com MaxPlanck

Resultados 67

Figura 36-Resultado da interseccedilatildeo do modelo Male com o MaxPlanck

Figura 37-Resultado da diferenccedila do modelo Male do modelo MaxPlanck

As meacutedias de tempos de processamento foram calculadas da mesma

forma que o primeiro teste com o modelo Igea acima apresentado Os

resultados satildeo mostrados na Tabela 4 Podemos observar que este teste

Resultados 68

apresenta tempos um pouco menores que o teste com o modelo Igea Isto se

deve ao fato de que o modelo MaxPlanck ser significativamente menor que o

modelo Igea MaxPlanck possui 52809 surfels e Igea conteacutem 134345 surfels

Operaccedilatildeo Criaccedilatildeo das

Octrees (seg)

Classificaccedilatildeo

(seg)

Criaccedilatildeo do

resultado (seg)

Total

(seg)

Uniatildeo 3012 1254 102 5285

Interseccedilatildeo 2985 0901 0861 4747

Diferenccedila 2965 0911 0791 4667

Tabela 4-Tempo de processamento das operaccedilotildees com os modelos MaxPlanck e Male

Operaccedilatildeo Nuacutemero de surfels do resultado

Uniatildeo 126532

Interseccedilatildeo 88414

Diferenccedila 77635

Tabela 5-Nuacutemero de surfels dos modelos resultados das operaccedilotildees com os modelos MaxPlanck e Male

Em seguida apresentaremos uma comparaccedilatildeo entre o nosso plugin e o

plugin de Pauly[3] e tambeacutem uma comparaccedilatildeo entre o meacutetodo de Adams e Dutreacute

[2] e o meacutetodo de Pauly [3]

62 Comparaccedilatildeo entre os dois meacutetodos que realizam operaccedilotildees booleanas

A comparaccedilatildeo entre os meacutetodos de Pauly[3] e de Adams e Dutreacute foi feita

em termos de tempo de processamento e em termos conceituais Em termos de

tempo de processamento comparamos o plugin de Pauly[3] com o nosso plugin

Em termos de tempo de processamento verifica-se empiricamente que os

dois meacutetodos apresentam tempos bastante similares Entretanto o tempo de

processamento do algoritmo aqui implementado ainda pode ser melhorado com

Resultados 69

o uso do meacutetodo TINN [19] que foi proposto em Adams[2] - para otimizar a

pesquisa do surfel mais proacuteximo a um ponto que estaacute localizado na regiatildeo de um

noacute que conteacutem surfels - veja seccedilatildeo 42 O uso deste meacutetodo natildeo foi

implementado para este trabalho e a sua implementaccedilatildeo melhoraria o tempo de

resposta do algoritmo Aleacutem disso o trabalho de Sara F Frisken [12] citado no

capiacutetulo 2 apresenta uma otimizaccedilatildeo no uso de octrees que pode ser

incorporada no algoritmo implementado neste trabalho

Em termos conceituais vamos fazer a comparaccedilatildeo do uso do que

chamamos aqui de Regra 2 do tratamento de interseccedilatildeo e do tratamento de

ldquoarestas vivasrdquo

Como vimos na seccedilatildeo 41 tanto o algoritmo implementado nesta

dissertaccedilatildeo baseado no trabalho de Adams e Dutreacute como o meacutetodo de Pauly

[3] parte do que chamamos aqui de Regra 2 para realizar operaccedilotildees booleanas

com pontos Mas cada um destes meacutetodos daacute um tratamento diferente para o

uso desta regra

O meacutetodo de Pauly usa a Regra 2 para classificaccedilatildeo de cada ponto ou de

cada surfel Para classificar um surfel de B sb como dentro ou fora de A eacute

encontrado o surfel de A sa mais proacuteximo a sb e sb eacute classificado a partir de sa

Para encontrar sa Pauly utiliza uma kd-tree Como esta pesquisa para encontrar

sa eacute cara (mesmo usando uma kd-tree) Pauly utiliza uma esfera que conteacutem

pontos com a mesma classificaccedilatildeo (seccedilatildeo 432) e diminui em 90 este nuacutemero

de pesquisas Pauly utiliza tambeacutem a representaccedilatildeo impliacutecita MLS (Moving Least

Squares) para casos em que a Regra 2 poderia falhar e para tratamento de

interseccedilotildees Entretanto o nuacutemero destes casos em que a Regra 2 poderia falhar

eacute muito pequeno E a representaccedilatildeo MLS natildeo eacute uma estrutura simples de ser

implementada Portanto natildeo encontramos vantagens em usar MLS para estes

casos O meacutetodo de Adams e Dutreacute natildeo trata estes casos e na praacutetica

apresenta resultados bastante satisfatoacuterios como foi mostrado Portanto

consideramos que valeria a pena fazer algum tratamento especial para estes

casos se fosse um procedimento simples Para a execuccedilatildeo do algoritmo de

Pauly o uso de MLS natildeo interfere significativamente porque a construccedilatildeo desta

representaccedilatildeo natildeo eacute feita somente para realizar operaccedilotildees booleanas Os testes

empiacutericos que fizemos com o algoritmo de Pauly natildeo incluem a construccedilatildeo desta

representaccedilatildeo

Aparentemente os dois algoritmos satildeo bastante parecidos um usa octrees

e o outro usa kd-tree As duas estruturas de dados satildeo simples e otimizam a

classificaccedilatildeo dos surfels de um modelo como dentro ou fora do outro modelo

Resultados 70

Mas existe uma diferenccedila conceitual entre dois que merece ser destacada O

algoritmo aqui implementado usa a Regra 2 para classificaccedilatildeo dos noacutes de uma

octree e armazena esta octree classificada (ver capiacutetulo 5) Assim na maioria dos

casos natildeo seraacute necessaacuterio encontrar o surfel mais proacuteximo para classificar um

ponto (ou um surfel) como fora ou dentro de um modelo Caso o ponto esteja em

uma aacuterea da octree classificada ele teraacute a classificaccedilatildeo dada agravequela aacuterea A

pesquisa ao surfel mais proacuteximo seraacute feita apenas nos casos em que o ponto a

ser classificado estaacute localizado entre os planos que subdividem um noacute cheio

O uso desta octree classificada levanta uma questatildeo que natildeo foi citada no

trabalho de Adams e Dutreacute que eacute a proximidade desta estrutura (armazenada)

de octree classificada com uma representaccedilatildeo volumeacutetrica do objeto Sendo

assim esta estrutura pode ser aproveitada para outras funccedilotildees aleacutem da

classificaccedilatildeo dos surfels Por exemplo podemos ter uma aproximaccedilatildeo do

volume de uma cena somando os volumes aproximados dos modelos que a

compotildeem Como o enfoque deste trabalho eacute operaccedilatildeo booleana natildeo vamos nos

aprofundar nesta questatildeo

Outra importante diferenccedila entre os dois trabalhos que jaacute foi explicada na

seccedilatildeo 432 eacute que o meacutetodo de Pauly aplica-se a modelos soacutelidos ou natildeo

soacutelidos enquanto que o meacutetodo de Adams e Dutreacute aplica-se somente a modelos

soacutelidos

Quanto ao tratamento de interseccedilatildeo em termos de visualizaccedilatildeo todos os

dois resolvem bem o problema O tratamento de interseccedilatildeo nos dois trabalhos

tambeacutem resolve o problema da validade da Regra 2 (ver seccedilatildeo 44) Entretanto

o tratamento de Adams e Dutreacute natildeo depende da renderizaccedilatildeo sendo portanto

mais portaacutevel Aleacutem disso uma desvantagem do meacutetodo de Pauly eacute o uso da

representaccedilatildeo impliacutecita MLS (ldquoMoving Least Squaresrdquo) do objeto para obter os

pontos exatamente na curva de interseccedilatildeo Esta representaccedilatildeo torna o

tratamento de interseccedilatildeo mais complexo e a vantagem apresentada natildeo eacute tatildeo

significativa para este tratamento de interseccedilatildeo

Conclusatildeo 71

7 Conclusatildeo

Concluiacutemos entatildeo que as escolhas de Adams e Dutreacute por usar uma

octree classificada e pelo tratamento dado agrave interseccedilatildeo satildeo mais abrangentes

que a escolha de Pauly E consideramos que quanto mais abrangente for uma

escolha conceitual mais resultados poderemos tirar dela No caso de Adams e

Dutreacute eles estendem o problema de classificar um ponto para classificar todo o

modelo Como foi citado ele quase fornece uma representaccedilatildeo volumeacutetrica do

modelo Esta aproximada representaccedilatildeo volumeacutetrica pode nos fornecer outras

informaccedilotildees como por exemplo o volume aproximado do modelo

Aleacutem disso o uso da representaccedilatildeo impliacutecita MLS no meacutetodo de Pauly cria

uma complexidade a mais para o meacutetodo sem apresentar vantagens para a

realizaccedilatildeo de operaccedilotildees booleanas que eacute o nosso enfoque

Logo podemos dizer que o meacutetodo de Adams e Dutreacute apresenta as

seguintes vantagens em relaccedilatildeo ao de Pauly

- a estrutura de octree classificada aleacutem de ser usada para classificaccedilatildeo

fornece informaccedilotildees adicionais como volume aproximado do objeto

- o tempo de processamento no meacutetodo de Adams e Dutreacute tende a ser

melhor que no meacutetodo de Pauly se implementadas as melhorias acima citadas e

se colocaacutessemos em consideraccedilatildeo o uso da representaccedilatildeo impliacutecita MLS

(Moving Least Squares)

- o tratamento de interseccedilatildeo de Adams e Dutreacute apresenta a vantagem da

portabilidade ou seja iraacute funcionar independente do algoritmo de renderizaccedilatildeo

utilizado

E as vantagens do meacutetodo de Pauly em relaccedilatildeo ao de Adams e Dutreacute

- a colocaccedilatildeo de surfels exatamente na curva de interseccedilatildeo

- a possibilidade de trabalhar com modelos soacutelidos ou natildeo soacutelidos

E finalizando concluiacutemos que o estudo relatado nesta dissertaccedilatildeo foi

importante por

- fornecer um breve estudo sobre modelagem por pontos uma nova e

promissora aacuterea dentro da computaccedilatildeo graacutefica

Conclusatildeo 72

- por apresentar uma avaliaccedilatildeo dos dois trabalhos existentes sobre

operaccedilotildees booleanas com pontos encontrando as vantagens de cada um

e levantando questotildees que natildeo tinham sido citadas nos trabalhos originais

- por propor e implementar melhorias ao trabalho de Adams e Dutreacute

71 Trabalhos Futuros

Nossa implementaccedilatildeo pode ser ainda evoluiacuteda com as propostas

apresentadas na seccedilatildeo 62 Como observamos o tempo de processamento do

algoritmo aqui implementado ainda pode ser melhorado com o uso do meacutetodo

TINN [19] - que foi proposto em Adams[2] - para otimizar a pesquisa do surfel

mais proacuteximo a um ponto que estaacute localizado na regiatildeo de um noacute que conteacutem

surfels Aleacutem disso o trabalho Simple and Efficient Trasversal Methods for

Quadtrees and Octrees de Sara F Frisken [12] citado no capiacutetulo 2 apresenta

uma otimizaccedilatildeo no uso de octrees Outra proposta para melhorar o tempo de

processamento do algoritmo aqui implementado eacute usar a forma de trabalhar com

octrees apresentada neste trabalho

O trabalho de Adams e Dutreacute [2] eacute aplicado apenas a objetos soacutelidos O

nosso plugin portanto aplica-se somente a este tipo de objeto Jaacute o trabalho de

Pauly[3] eacute aplicado tambeacutem a modelos natildeo soacutelidos Apresentamos como

proposta a um trabalho futuro a extensatildeo do algoritmo aqui implementado para

modelos natildeo soacutelidos O surfel pode conter uma informaccedilatildeo adicional que indica

se ele estaacute delimitando um volume ou natildeo Assim pode-se ter um modelo com

ldquopartes soacutelidasrdquo e ldquopartes natildeo soacutelidasrdquo Por exemplo a uniatildeo de um plano com

uma esfera poderia resultar numa esfera com ldquoabasrdquo (seriam as partes do plano

que estariam fora da esfera) O modelo resultado teria uma parte correspondente

a um espaccedilo 3D (esfera) e outra parte que seria uma superfiacutecie 2D posicionada

no espaccedilo 3D sem delimitar algum volume (abas)

Muitos trabalhos podem ser desenvolvidos aplicando-se o modelo por

pontos em animaccedilatildeo jogos visualizaccedilatildeo de terrenos criaccedilatildeo de protoacutetipos etc

considerando-se a eficiecircncia e simplicidade do modelo E mais especificamente

as operaccedilotildees booleanas com pontos podem ser aplicadas para criaccedilatildeo de

cenaacuterios testes de colisotildees e nestes casos a representaccedilatildeo usando octrees

pode ser mais explorada considerando-se o seu potencial de representaccedilatildeo

volumeacutetrica de um objeto

Referecircncias Bibliograacuteficas 73

8 Referecircncias Bibliograacuteficas

[1] MAumlNTYLAuml M An Introduction to Solid Modeling Computer Science Press 1988

[2] ADAMS B DUTREacute P Interactive Boolean Operations on Surfel-

Bounded Solids Proceedings of SIGGRAPH 2003 San Diego USA 2003

[3] PAULY M KEISER R KOBBELT L GROSS M Shape Modeling

with Point-Sampled Geometry SIGGRAPH 2003 Computer Graphics

Proceedings Annual Conference Series ACM Press ACM SIGGRAPH 2003

[4] LEVOY M WHITTED T The Use of Points as Display Primitives

Technical Report TR 85-022 The University of North Carolina at Chapel Hill

Department of Computer Science 1985

[5] PFISTER H ZWICKER M VAN BAAR J GROSS M 2000 Surfels

Surface Elements as Rendering Primitives SIGGRAPH 2000 pp 335ndash342 New

Orleans LA July 23-28 2000

[6] ZWICKER M PFISTER H VAN BAAR J GROSS M Surface

Splatting SIGGRAPH 2001

[7] PAULY M KOBBELT L GROSS M Multiresolution Modeling of

Point-Sampled Geometry CS Techinical Report 378 September 16 2002

[8] CURLESS B New Methods for Surface Reconstruction from Range Images PhD thesis Stanford University 1997

[9] RUSINKIEWICZ S Real-time Acquisition and Rendering of Large 3D Models PhD thesis Stanford University 2001

Referecircncias Bibliograacuteficas 74

[10] AMENTA N BERN M KAMVYSSELIS M A new Voronoi-Based

Surface Reconstruction Algorithm SIGGRAPH 98 Conference proceedings pp

415-421 New York 1998

[11] ZWICKER M PAULY M KNOLL O GROSS M Pointshop 3D an

Interactive System for Point-Based Surface Editing Proceedings of SIGGRAPH 2002 San Antonio TX July 2002

[12] FRISKEN S PERRY R Simple and Efficient Traversal Methods for

Quadtrees and Octrees Journal of Graphics Tools Vol 7 Issue 3 May 2003

[13] CORREcircA W T OLIVEIRA M M Silva C T Wang J

Modeling and Rendering of Real Environments

Revista de Informaacutetica Teoacuterica e Aplicada (Brazilian Journal of Theoretic and Applied Computing) 9(2)127-156 2002

[14] DAVIS J MARSCHNER S GARR M LEVOY M Filling Holes in

Complex Surfaces Using Volumetric Diffusion First International Symposium on 3D Data Processing Visualization Transmission June 2002

[15] RAumlSAumlNEN J Surface Splatting Theory Extensions and Implementation Masterrsquos Thesis Dept of Computer Science Helsinki

University of Technology May 28 2002

[16] PAULY M Point Primitives for Interactive Modeling and Processing of 3D Geometry PhD thesis Federal Institute of Technology (ETH)

of Zurich 2003

[17] HOPPE H DEROSE T DUCHAMP T MCDONALD J

STUELZLE W Surface Reconstruction from Unorganized Points Computer Graphics 26(2)71ndash78 July 1992

[18] ALEXA M BEHR J COHEN-OR D FLEISHMAN S LEVIN D

SILVA C T Point Set Surfaces IEEE Visualization 2001 pp 21ndash28 October

2001

Referecircncias Bibliograacuteficas 75

[19] GREENSPAN M GODIN G TALBOT J Acceleration of Binning

Nearest Neighbor Methods Proceedings of Vision Interface 2000 pp 337-

344

[20] MENCL R Reconstruction of Surfaces from Unorganized Three-Dimensional Point Clouds Dissertation Dortmund Univ 2001

[21] KRIVANEK J Representing and Rendering Surfaces With Points

httpciteseernjneccomkrivanek03representinghtml Acesso em 30 jul

2003

[22] KRISTJANSSON ET AL Approximate Boolean Operations on Free-

form Solids Proceedings of SIGGRAPH 01 2001

14

Lista de tabelas

Tabela 1 Classificaccedilatildeo para operaccedilotildees booleanas 42

Tabela 2- Nuacutemero de surfels dos modelos resultantes 64 Tabela 3- Meacutedia dos tempos de processamento para as operaccedilotildees com duas

Igeas 65

Tabela 4-Tempo de processamento das operaccedilotildees com os modelos MaxPlanck

e Male 68 Tabela 5- Nuacutemero de surfels dos modelos resultados das operaccedilotildees com os

modelos MaxPlanck e Male 68

15

1 Introduccedilatildeo

O mundo digital estaacute conquistando cada vez mais espaccedilo nos meios de

comunicaccedilatildeo Sons imagens viacutedeos digitais satildeo miacutedias muito usadas em

diversas aacutereas como entretenimento medicina desenho industrial engenharia

arquitetura educaccedilatildeo arte ciecircncia entre outras Podemos citar alguns

exemplos dentro destas aacutereas como jogos efeitos especiais filmes digitais

visualizaccedilatildeo cientiacutefica viacutedeo-conferecircncia comeacutercio na internet Nos uacuteltimos anos

verificamos que o modelo 3D vem se tornando um novo meio de comunicaccedilatildeo

digital Com o desenvolvimento da tecnologia de aquisiccedilatildeo e do processamento

de modelos 3D ele vem sendo cada vez mais utilizado Jogos 3D animaccedilotildees

aplicaccedilotildees em realidade virtual visualizaccedilatildeo cientiacutefica aplicaccedilotildees para aacuterea

meacutedica e odontoloacutegica criaccedilatildeo de reacuteplicas para estudo e preservaccedilatildeo do

patrimocircnio histoacuterico sistemas CADCAM cataacutelogos de modelos 3D na Web para

comercializaccedilatildeo criaccedilatildeo de protoacutetipos para arquitetura engenharia satildeo alguns

exemplos de aplicaccedilotildees que usam modelos 3D

A aacuterea que estuda a representaccedilatildeo de um modelo 3D no computador eacute

chamada de modelagem em computaccedilatildeo graacutefica Existem diversos tipos de

modelagem para as diversas aplicaccedilotildees que usam um modelo 3D como por

exemplo representaccedilotildees poligonais como malhas triangulares que satildeo

geralmente usadas na aacuterea de entretenimento Este trabalho explora um novo

tipo de modelagem a modelagem por pontos

A modelagem por pontos comeccedilou a ser largamente explorada nesta

deacutecada e trata-se de uma aacuterea muito promissora em computaccedilatildeo graacutefica dadas

agraves vaacuterias e grandes vantagens em relaccedilatildeo aos outros tipos de representaccedilatildeo

como esquema de representaccedilatildeo CSG (Constructive Solid Geometry) [1] ou

malhas poligonais Dentre as principais vantagens podemos citar grande

simplicidade e flexibilidade boa performance robustez Mas a principal

vantagem desta modelagem que foi o fator que impulsionou o seu grande

desenvolvimento nesta deacutecada eacute que esta modelagem por pontos eacute a melhor

opccedilatildeo para tratar os dados de saiacuteda de equipamentos de aquisiccedilatildeo de modelos

3D O uso destes equipamentos tem aumentado muito nesta deacutecada A

16

tecnologia destes equipamentos tem progredido muito e eles tecircm se tornado

mais baratos A tendecircncia eacute que o uso destes equipamentos se torne o mais

utilizado meio de obtenccedilatildeo de modelos 3D Isto porque construir modelos 3D

bastante detalhados por meio de um software de modelagem eacute muito trabalhoso

O processo de aquisiccedilatildeo de modelos por meio destes equipamentos automatiza

este processo de construccedilatildeo

No trabalho com modelos 3D frequumlentemente satildeo usadas as operaccedilotildees

booleanas que satildeo operaccedilotildees de uniatildeo interseccedilatildeo ou diferenccedila No esquema

de representaccedilatildeo CSG estas operaccedilotildees fazem parte da representaccedilatildeo do

objeto Estas operaccedilotildees tambeacutem podem ser usadas para criar novos modelos ou

para alteraacute-los Na maioria dos tipos de representaccedilatildeo de objetos 3D estas

operaccedilotildees satildeo bastante complexas

A simplicidade da representaccedilatildeo por pontos permite que as operaccedilotildees

booleanas sejam realizadas com facilidade se compararmos com a realizaccedilatildeo

destas operaccedilotildees em outros tipos de representaccedilatildeo como malhas poligonais

Motivada pelas vantagens desta modelagem e pela utilidade destas operaccedilotildees

esta dissertaccedilatildeo apresenta uma introduccedilatildeo geral de modelagem por pontos e

trabalha mais especificamente com operaccedilotildees booleanas em objetos

modelados por pontos Dois trabalhos que exploram as operaccedilotildees booleanas na

modelagem por pontos seratildeo abordados o trabalho de Adams e Dutreacute [2] e o

trabalho de Pauly et al [3] O presente trabalho implementa o meacutetodo de Adams

e Dutreacute com algumas melhorias e faz uma comparaccedilatildeo entre o meacutetodo de Pauly

[3] e o meacutetodo de Adams e Dutreacute [2] com nossas melhorias

Como contribuiccedilotildees dadas por este trabalho apresentamos

- um estudo sobre modelagem por pontos

- um estudo sobre operaccedilotildees booleanas com pontos

- proposta de melhorias ao algoritmo proposto por Adams e Dutreacute [2]

- comparaccedilatildeo dos dois meacutetodos propostos para realizar estas operaccedilotildees

meacutetodo de Pauly et al [3] e de Adams e Dutreacute [2]

Este trabalho vem apresentado nesta dissertaccedilatildeo organizada em sete

capiacutetulos conforme descrito resumidamente a seguir

O capiacutetulo 2 cita alguns trabalhos sobre modelagem por pontos que estatildeo

relacionados a este trabalho

O capiacutetulo 3 apresenta uma visatildeo geral do modelo por pontos e explica

melhor alguns trabalhos citados no capiacutetulo 2

17

O capiacutetulo 4 apresenta operaccedilotildees booleanas com pontos e os dois

meacutetodos para realizaacute-las na modelagem por pontos meacutetodo de Pauly et al [3] e

de Adams e Dutreacute [2]

O capiacutetulo 5 apresenta algumas melhorias ao algoritmo de Adams e Dutreacute

[2] e a nossa implementaccedilatildeo deste algoritmo

O capiacutetulo 6 traz os resultados obtidos

E finalmente o capiacutetulo 7 encerra o trabalho com uma conclusatildeo e com

possiacuteveis trabalhos futuros

Trabalhos relacionados 18

2 Trabalhos relacionados

O primeiro pesquisador a propor o uso de pontos como primitiva graacutefica foi

Levoy em [4] Ele propotildee o uso de pontos como primitiva de renderizaccedilatildeo e

discute a conversatildeo dos outros modelos para o modelo por pontos

Nos uacuteltimos anos vaacuterios trabalhos importantes tecircm sido realizados na aacuterea

em diversos segmentos em visualizaccedilatildeo podemos destacar os trabalhos de

Pfister [5] e de Zwicker [6] que usam pontos como primitiva de renderizaccedilatildeo e

com resultados praacuteticos interativos muito bons

Em [7] Pauly et al propotildeem algoritmos para modelagem multi-resoluccedilatildeo

em modelos por pontos

Os trabalhos de Curless [8] e Rusinkiewicz [9] discutem os meacutetodos de

aquisiccedilatildeo que consistem em obter uma amostragem de pontos da superfiacutecie do

objeto real por meio de equipamentos como por exemplo o scanner 3D

Nas operaccedilotildees booleanas a interseccedilatildeo das superfiacutecies dos modelos

iniciais seraacute parte do modelo resultado e para ser representada corretamente

precisa ser reconstruiacuteda A reconstruccedilatildeo da superfiacutecie tambeacutem eacute usada na

visualizaccedilatildeo de um modelo Um trabalho significativo na aacuterea de reconstruccedilatildeo de

superfiacutecies estaacute em [10] de N Amenta etal Este trabalho apresenta uma

soluccedilatildeo praacutetica com garantias teoacutericas para este problema e uma heuriacutestica para

o tratamento de arestas vivas a questatildeo mais difiacutecil desta aacuterea Um exemplo

de uma aresta viva eacute o encontro de dois planos natildeo coincidentes

Frequumlentemente a interseccedilatildeo citada acima (interseccedilatildeo entre os modelos iniciais)

gera uma aresta viva (seccedilatildeo 4223)

O algoritmo aqui implementado eacute um plugin para o software PointShop 3D

[11] de Zwicker et al software de ediccedilatildeo de modelos com pontos O PointShop

tem seu coacutedigo aberto documentaccedilatildeo e trabalha com plugins Ele permite a

visualizaccedilatildeo e ediccedilatildeo interativa do modelo por pontos Eacute o uacutenico software livre

disponiacutevel com estas caracteriacutesticas Esta implementaccedilatildeo na forma de um plugin

facilitou muito o trabalho pois natildeo foi necessaacuterio implementar a visualizaccedilatildeo do

modelo 3D Aleacutem disso o Pointshop conteacutem tambeacutem um plugin com a

implementaccedilatildeo do meacutetodo de Pauly et al [3] discutido nesta dissertaccedilatildeo A

Trabalhos relacionados 19

execuccedilatildeo dos dois plugins que realizam operaccedilotildees booleanas pocircde ser

comparada

Os trabalhos aqui discutidos satildeo o de Bart Adams e Philip Dutreacute [2] e de

Pauly et al[3] que apresentam meacutetodos diferentes para realizaccedilatildeo de

operaccedilotildees booleanas com pontos Adams e Dutreacute utilizam octrees [1] e Pauly

Kd-Tree [16] e MLS (Moving Least Squares) [18] Estes algoritmos satildeo

discutidos no capiacutetulo 4

O trabalho de Sara F Frisken [12] apresenta um algoritmo para realizar

operaccedilotildees em octree de forma mais eficiente Como estas operaccedilotildees estatildeo

presentes em todo o nosso algoritmo este trabalho certamente oferece uma

forma de otimizaccedilatildeo mas que natildeo foi implementada

Modelagem por Pontos 20

3 Modelagem por Pontos

A computaccedilatildeo graacutefica natildeo lida diretamente com o objeto ou com o

fenocircmeno fiacutesico lida com modelos graacuteficos ou geomeacutetricos Modelos graacuteficos

satildeo estruturas computacionais (abstratas) que capturam aspectos de objetos de

interesse para uma aplicaccedilatildeo como forma cor textura etc Se apenas a forma

ou a geometria do objeto eacute relevante temos modelos geomeacutetricos

Estes modelos satildeo usados em vaacuterias aplicaccedilotildees em computaccedilatildeo graacutefica

como roboacutetica visatildeo computacional simulaccedilotildees realistas anaacutelises estruturais

prototipagem projeto e manufatura de produtos eletromecacircnicos arquitetura

Existem vaacuterios tipos de modelos graacuteficos Esta dissertaccedilatildeo trata de um tipo

muito em voga atualmente que eacute o modelo por pontos

Neste capiacutetulo daremos uma visatildeo geral do modelo por pontos

Introduziremos este modelo e seu processo de criaccedilatildeo Seraacute apresentado o que

eacute um modelo por pontos e o conceito de surfel [5] introduziremos os tipos de

distribuiccedilatildeo dos surfels uma estruturaccedilatildeo aplicada a estes surfels e dados que

eles podem conter As quatro proacuteximas subseccedilotildees (Ideacuteia da representaccedilatildeo

Tipos de distribuiccedilatildeo dos surfels Estrutura de multi-resoluccedilatildeo e Dados que um

surfel pode conter) tratam destes toacutepicos Um modelo por pontos pode ser criado

a partir da conversatildeo de outros tipos de modelagem NURBS por exemplo para

o modelo por pontos ou a partir de um processo de aquisiccedilatildeo Esta uacuteltima forma

de criaccedilatildeo pode ser dividida em duas etapas aquisiccedilatildeo do modelo reconstruccedilatildeo

da superfiacutecie As subseccedilotildees 35 e 36 tratam destas duas etapas

respectivamente A ediccedilatildeo do modelo 3D eacute tratada brevemente na subseccedilatildeo 38

e a sua visualizaccedilatildeo na subseccedilatildeo 37 A apresentaccedilatildeo do processo de aquisiccedilatildeo

(seccedilatildeo 35) eacute baseada no tutorial de W T Correcirca [13] A etapa de ediccedilatildeo 3D

consiste em operaccedilotildees para mudanccedila da cor textura ou forma do modelo Para

esta etapa enfocaremos as operaccedilotildees booleanas que modificam a forma do

modelo ou criam novos modelos

31 Ideacuteia da Representaccedilatildeo

Modelagem por Pontos 21

Figura 1 [20] -Um modelo por pontos e sua visualizaccedilatildeo

Um modelo por pontos representa um objeto atraveacutes de seu contorno Eacute

um tipo de representaccedilatildeo B-Rep (Boundary Representation) [1] Este contorno

consiste em uma superfiacutecie 2D posicionada no espaccedilo 3D Na modelagem por

pontos ela eacute representada por um conjunto de pontos 3D que satildeo uma

amostragem dos (infinitos) pontos que formam a superfiacutecie contiacutenua (Figura 1) A

amostragem pode ser obtida de diversas maneiras Uma delas o processo de

aquisiccedilatildeo progrediu muito nos uacuteltimos anos e este foi um dos fatores que tornou

muito importante o desenvolvimento deste modelo por pontos Outra forma de

gerar amostragem eacute fazer uma conversatildeo de um outro modelo NURBS por

exemplo para o modelo por pontos

Estes pontos satildeo denominados surfels e podem conter aleacutem da posiccedilatildeo

3D outras informaccedilotildees como normal agrave superfiacutecie cor textura raio de alcance A

Figura 2 mostra um conjunto de surfels representando uma superfiacutecie No surfel

em destaque podemos ver o raio de alcance rt e a normal n agrave superfiacutecie

Modelagem por Pontos 22

Figura 2 [5] A superfiacutecie modelada por surfels O surfel em destaque tem raio de alcance

rt e normal n

Como o modelo natildeo armazena qualquer informaccedilatildeo sobre a conexatildeo entre

os surfels a reconstruccedilatildeo da superfiacutecie contiacutenua a partir dele pode exigir

algumas restriccedilotildees na amostragem (seccedilatildeo 36)

32 Tipos de distribuiccedilatildeo dos surfels

Existem dois tipos de distribuiccedilatildeo dos surfels na modelagem por pontos

uniforme e natildeo uniforme Na distribuiccedilatildeo uniforme cada um deles descreve

partes de mesmo tamanho da superfiacutecie Na natildeo uniforme cada surfel armazena

a informaccedilatildeo de seu raio de alcance que eacute o raio do disco que este surfel

representa

A distribuiccedilatildeo uniforme tem a vantagem de ser mais simples e natildeo ser

necessaacuterio armazenar o raio de alcance do disco mas ela apresenta a seguinte

desvantagem se o modelo possui regiotildees com muito detalhe e regiotildees com

pouco detalhe ele teraacute que manter uma alta densidade mesmo nas regiotildees de

poucos detalhes

33 Estrutura de multi-resoluccedilatildeo

Um objeto pode ser representado em vaacuterios niacuteveis de detalhes Por

exemplo podemos representar um mesmo objeto com vaacuterias resoluccedilotildees

diferentes Este conceito pode ser aplicado ao modelo por pontos Desta forma

um modelo eacute representado por uma estrutura hieraacuterquica (uma aacutervore por

exemplo) onde em cada niacutevel temos uma representaccedilatildeo do objeto em uma

Modelagem por Pontos 23

determinada resoluccedilatildeo Em [7] Pauly et al propotildeem algoritmos para modelagem

multi-resoluccedilatildeo em modelos por pontos

34 Dados que um surfel pode conter

Cada surfel armazena sua localizaccedilatildeo e pode tambeacutem conter informaccedilotildees

como a cor ou coordenadas de textura Se a amostragem natildeo for uniforme o

surfel conteacutem a informaccedilatildeo do raio de alcance que eacute o raio de um disco cujo

centro eacute a posiccedilatildeo do surfel O surfel pode tambeacutem conter o vetor normal agrave

superfiacutecie e assim o surfel pode ser visto como um disco orientado A superfiacutecie

tambeacutem pode ser vista como uma superfiacutecie orientada

35 Aquisiccedilatildeo do modelo

Esta introduccedilatildeo sobre aquisiccedilatildeo do modelo aqui apresentada baseia-se no

tutorial de W T Correcirca [13]

O processo de aquisiccedilatildeo consiste em obter uma amostragem de pontos da

superfiacutecie do objeto real por meio de equipamentos como por exemplo o

scanner 3D Eacute uma aacuterea que tem progredido muito nos uacuteltimos anos A

resoluccedilatildeo e a precisatildeo dos equipamentos de aquisiccedilatildeo tecircm melhorado bastante

e o custo deles reduzido de forma significativa Isso possibilita que a aquisiccedilatildeo

de modelos 3D seja usada em aplicaccedilotildees de desenho industrial arte ou em

produtos para a aacuterea de entretenimento O consequumlente maior uso destes

equipamentos criou a necessidade de avanccedilos no tratamento dos seus dados de

saiacuteda que satildeo um conjunto de pontos

Este processo pode ser dividido em trecircs partes [13] aquisiccedilatildeo da

geometria aquisiccedilatildeo da textura e correccedilatildeo de falhas da aquisiccedilatildeo

351 Aquisiccedilatildeo da geometria

Existem vaacuterios meacutetodos de aquisiccedilatildeo da geometria Curless [8] e

Rusinkiewicz [9] classificaram estes meacutetodos em trecircs categorias meacutetodos por

contato transmissatildeo e reflexatildeo

O meacutetodo por contato toca a superfiacutecie do objeto com uma sonda e grava

a posiccedilatildeo Este meacutetodo do qual o Coordinate Measuring Machines (CMMs) eacute

Modelagem por Pontos 24

um exemplo eacute bastante preciso mas eacute muito lento e natildeo adequado a objetos

fraacutegeis

Meacutetodos por transmissatildeo projetam ondas de energia sobre o objeto e

gravam a energia transmitida Por exemplo tomografia computadorizada que

projeta ondas de raio-x sobre o objeto e mede a quantidade de radiaccedilatildeo que

passa atraveacutes dele O resultado eacute um modelo geomeacutetrico de alta resoluccedilatildeo Este

meacutetodo pode captar detalhes do objeto que natildeo satildeo visiacuteveis de fora do objeto

Por outro lado ele eacute caro e arriscado

Meacutetodos por reflexatildeo podem ser oacuteticos ou natildeo-oacuteticos Natildeo-oacuteticos incluem

radares que medem a distacircncia a um objeto enviando microondas ou ondas

sonoras para o objeto e gravando o tempo que a onda gasta para retornar Estes

meacutetodos natildeo satildeo muito precisos nem raacutepidos

Meacutetodos por reflexatildeo oacuteticos podem ser passivos ou ativos Meacutetodos oacuteticos

passivos natildeo interagem com o objeto e incluem teacutecnicas de visatildeo computacional

como shape-from-shading stereo triangulation optical flow e meacutetodos de

decomposiccedilatildeo para video streams Estes meacutetodos raramente constroem

modelos precisos e sua maior aplicaccedilatildeo eacute em reconhecimento de objetos

Meacutetodos oacuteticos ativos projetam luz sobre um objeto de maneira estruturada

e atraveacutes da reflexatildeo da luz determinam a forma do objeto Exemplos satildeo depth

from defocus photometric stereo projected-light triangulation time of flight

Meacutetodos por reflexatildeo oacuteticos ativos tecircm muitas vantagens sobre os passivos tecircm

um melhor desempenho quando natildeo existe textura satildeo mais baratos e mais

robustos e produzem uma amostragem precisa

352 Aquisiccedilatildeo da textura

Idealmente noacutes gostariacuteamos de ter uma completa descriccedilatildeo de como um

ponto da superfiacutecie reflete a luz dependendo do vetor normal a esta superfiacutecie

da direccedilatildeo do raio de luz incidente e do comprimento de onda Tal descriccedilatildeo eacute

conhecida como Bidirectional Reflectance Distribution Function (BRDF) Medir

BRDFs com precisatildeo eacute um problema difiacutecil

Pode-se ter uma aproximaccedilatildeo da aquisiccedilatildeo de cores do objeto tirando

fotos dele O objeto eacute fotografado e a cor de cada ponto da superfiacutecie eacute obtida a

partir de um mapeamento das fotos 2D para o modelo 3D Para mapear a

fotografia agrave geometria precisamos conhecer os paracircmetros de projeccedilatildeo da

cacircmera e a sua posiccedilatildeo no momento em que a foto foi batida Para cada ponto

Modelagem por Pontos 25

3D do modelo encontramos sua projeccedilatildeo 2D no plano da cacircmera e associamos

a cor do pixel nesta projeccedilatildeo agrave cor do ponto 3D

353 Correccedilatildeo das falhas da aquisiccedilatildeo

O processo de aquisiccedilatildeo deixa frequumlentemente buracos no modelo devido

a ruiacutedos no processo ou agrave impossibilidade de aquisiccedilatildeo de determinadas partes

de uma superfiacutecie Estes buracos devem ser corrigidos Pode-se usar por

exemplo um filtro de passa-baixa para remoccedilatildeo de ruiacutedos [14] Meacutetodos de

difusatildeo geomeacutetrica tecircm sido aplicados para preenchimento dos buracos [15] A

correccedilatildeo das falhas eacute tida como um preacute-processamento para o processo de

reconstruccedilatildeo da superfiacutecie contiacutenua (seccedilatildeo 36)

36 Reconstruccedilatildeo da superfiacutecie (contiacutenua) a partir do modelo (discreto)

A reconstruccedilatildeo da superfiacutecie contiacutenua consiste em a partir de um conjunto

natildeo estruturado de pontos obter um modelo contiacutenuo desta superfiacutecie Esta

reconstruccedilatildeo eacute frequumlentemente exigida para um modelo por pontos Na sua

visualizaccedilatildeo podemos desejar focar qualquer parte do modelo Para fazermos

operaccedilotildees booleanas com os modelos podemos querer determinar exatamente

onde eles se intersectam

No entanto natildeo precisamos ter necessariamente a representaccedilatildeo contiacutenua

de todo o objeto ao mesmo tempo A reconstruccedilatildeo desta superfiacutecie a partir dos

pontos amostrados pode ser feita no momento que for mais adequado agrave

aplicaccedilatildeo Na visualizaccedilatildeo a reconstruccedilatildeo pode ser feita na projeccedilatildeo 2D da

parte do modelo em foco (seccedilatildeo 37) Para operaccedilotildees booleanas pode-se

reconstruir apenas a aacuterea da interseccedilatildeo dos modelos

Este processo de reconstruccedilatildeo de superfiacutecie tem sido muito estudado em

modelagem geomeacutetrica e geometria computacional nos uacuteltimos anos O trabalho

mais importante desta aacuterea eacute o trabalho de Amenta et al [10] que foi a primeira

soluccedilatildeo com garantias demonstraacuteveis para este problema de reconstruccedilatildeo de

superfiacutecie A seccedilatildeo 44 explica estes conceitos e o trabalho [10] Este trabalho

demonstra que teoricamente para que a reconstruccedilatildeo da superfiacutecie (contiacutenua) a

partir das amostras seja correta a amostragem deve ser adequada Ele usa o

conceito de ldquoEixo Medialrdquo para definir o que eacute uma amostragem adequada

Modelagem por Pontos 26

(seccedilatildeo 44) Em duas dimensotildees os veacutertices de Voronoi de uma amostragem

densa aproximam o ldquoEixo Medialrdquo da amostragem

Por meio deste conceito de Eixo Medial [1016] obtecircm-se paracircmetros

teoacutericos para a definiccedilatildeo de amostragem adequada e baseado neste conceito

o algoritmo apresentado em [10] traz uma soluccedilatildeo praacutetica para o problema

obtendo uma malha poligonal a partir do modelo por pontos

O PointShop 3D [11] software de ediccedilatildeo de modelos por pontos utilizado

nesta pesquisa faz quando necessaacuterio a reconstruccedilatildeo da superfiacutecie Para isso

o PointShop 3D explora a vizinhanccedila local (surfels vizinhos de acordo com suas

posiccedilotildees) Ele usa o conceito de Eixo Medial para justificar seu meacutetodo de

reconstruccedilatildeo da superfiacutecie que na praacutetica apresenta resultados bastante

satisfatoacuterios apesar de teoricamente natildeo ter garantias [16]

37 Visualizaccedilatildeo do modelo

A primeira abordagem para visualizaccedilatildeo de um modelo por pontos foi

construir uma malha de poliacutegonos a partir dos surfels e renderizaacute-la Mas a

construccedilatildeo de malhas a partir dos surfels eacute um processo muito caro e lento

principalmente para modelos complexos Na tentativa de obter uma visualizaccedilatildeo

interativa do modelo por pontos estatildeo sendo estudadas teacutecnicas que utilizam

surfels como primitiva de visualizaccedilatildeo A ideacuteia foi apresentada inicialmente por

Levoy [4]

Figura 3 [21] -Modelo por pontos e sua renderizaccedilatildeo usando Surface Splatting

Modelagem por Pontos 27

O objetivo da renderizaccedilatildeo a partir dos surfels eacute projetaacute-los na tela e

reconstruir as superfiacutecies de forma contiacutenua sem buracos Para que esta

renderizaccedilatildeo seja amplamente utilizada deve-se ter cuidado com o uso de

memoacuteria e com a qualidade da imagem gerada Teacutecnicas recentes como Surface

Splatting [6] faz a renderizaccedilatildeo interativamente com qualidade (Figura 3)

comparada a outros meacutetodos de renderizaccedilatildeo como Image Based Rendering

Em geral a visualizaccedilatildeo do modelo por pontos pode ser dividida nas seguintes

etapas

- warping - projeccedilatildeo em perspectiva de cada ponto do modelo na tela

processo anaacutelogo agrave projeccedilatildeo de veacutertices dos triacircngulos na malha triangular Se

um pixel da tela estiver contido em mais de uma projeccedilatildeo de surfels (vizinhos)

ou seja mais de um ponto cobre este pixel os atributos destes pontos seratildeo

combinados

- shading por ponto - o processo de shading eacute realizado para cada ponto

visiacutevel (os pontos que natildeo satildeo vistos do ponto de vista em questatildeo devem ser

retirados) Qualquer modelo local de shading pode ser aplicado Uma nova

teacutecnica foi proposta em Surface Splatting [6]

- reconstruccedilatildeo da imagem ndash pixels que natildeo ldquoreceberamrdquo projeccedilatildeo de

nenhum ponto formam buracos na imagem Esta imagem deve ser reconstruiacuteda

sem buracos sem aliasing e as superfiacutecies devem ser reconstruiacutedas de forma

contiacutenua e devem ser ldquosuavizadasrdquo (smooth surface)

Os algoritmos de renderizaccedilatildeo por pontos podem tratar a questatildeo de

buracos na visualizaccedilatildeo de trecircs formas [17]

Detecccedilatildeo e preenchimento de buracos no espaccedilo da tela pontos satildeo

projetados na tela e pixels que natildeo receberam pontos satildeo detectados (buracos)

Para preencher estes buracos que natildeo receberam pontos eacute feita uma

interpolaccedilatildeo entre os vizinhos

Geraccedilatildeo de mais pontos a superfiacutecie eacute interpolada no espaccedilo do modelo

para garantir que todos os pixels recebam pelo menos a projeccedilatildeo de um ponto

Splatting um surfel eacute projetado na tela e sua contribuiccedilatildeo eacute espalhada de

forma diferenciada para os pixels vizinhos Agrave medida em que o vizinho se torna

mais distante a contribuiccedilatildeo do surfel diminui

Raumlsaumlnen faz uma analogia do processo de renderizaccedilatildeo proposto em [6]

com o mapeamento de textura [15] No mapeamento de textura para um

determinado pixel da tela satildeo encontrados os pontos da textura que afetam este

Modelagem por Pontos 28

pixel Num sentido inverso em splatting para um determinado surfel (que

representa a textura) satildeo encontrados os pixels da tela que este surfel afeta

38 Ediccedilatildeo do modelo

Ediccedilatildeo de um modelo 3D consiste em operaccedilotildees que modificam

caracteriacutesticas deste modelo como cor textura forma ou criam novos modelos

O software PointShop 3D [11] software de ediccedilatildeo de modelos por pontos 3D

implementa vaacuterias destas operaccedilotildees (ver seccedilatildeo 52)

Para modificar a forma de um modelo ou criar um novo satildeo muito usadas

as operaccedilotildees booleanas que eacute o nosso enfoque nesta dissertaccedilatildeo Na

modelagem CSG (Constructive Solid Geometry) as operaccedilotildees booleanas satildeo

usadas juntamente com primitivas soacutelidas para definir um modelo No entanto

em alguns tipos de modelos estas operaccedilotildees satildeo difiacuteceis como por exemplo

em malhas poligonais Com pontos elas podem ser feitas interativamente [32]

Operaccedilotildees Booleanas com Pontos 29

4 Operaccedilotildees Booleanas com Pontos

Operaccedilotildees booleanas satildeo as operaccedilotildees de uniatildeo interseccedilatildeo e diferenccedila

definidas na teoria matemaacutetica de conjuntos Estas operaccedilotildees satildeo aplicadas em

modelos soacutelidos para alteraacute-los ou para criar novos modelos A Figura 4 abaixo

mostra a criaccedilatildeo de trecircs novos modelos a partir de quatro modelos iniciais

Figura 4 [22] Trecircs modelos novos foram criados a partir dos quatro iniciais (esfera

cilindro dois cubos) O primeiro eacute a esfera menos um cubo em seguida retirou-se outro

cubo e por uacuteltimo retirou-se o cilindro

Estas operaccedilotildees satildeo aplicadas em objetos modelados por pontos em dois

trabalhos no trabalho de Bart Adams e Philip Dutreacute [2] e no trabalho de Pauly

et Al [3] Neste capiacutetulo a seccedilatildeo 41 apresenta a parte comum aos dois

trabalhos e as seccedilotildees 42 e 43 apresentam as particularidades de cada um A

seccedilatildeo 44 discute uma questatildeo natildeo explicitada em nenhum dos dois trabalhos

41 Meacutetodos para realizar operaccedilotildees booleanas em objetos modelados por pontos

A Figura 5 mostra o resultado do meacutetodo de Adams[2] operaccedilotildees de

uniatildeo diferenccedila e interseccedilatildeo de objetos soacutelidos 3D modelados por pontos

Operaccedilotildees Booleanas com Pontos 30

Figura 5 [2]-A partir de dois modelos por pontos uma heacutelice e uma cabeccedila as trecircs operaccedilotildees booleanas satildeo mostradas da esquerda para a direita uniatildeo diferenccedila e interseccedilatildeo

Sejam A e B objetos 3D soacutelidos modelados por pontos Definem-se os

seguintes elementos

Af ndash superfiacutecie (contorno) de A que estaacute fora de B

Ad ndash superfiacutecie (contorno) de A que estaacute dentro de B

Bf ndash superfiacutecie (contorno) de B que estaacute fora de A

Bd ndash superfiacutecie (contorno) de B que estaacute dentro de A

O resultado da operaccedilatildeo booleana entre A e B seraacute um modelo C cuja

superfiacutecie de contorno pode ser determinada pela seguinte regra [2] que aqui

chamamos de Regra 1

Regra 1 A U B Af + Bf

A cap B Ad + Bd

A ndash B Af + Bd (com a orientaccedilatildeo invertida)

B ndash A Ad (com a orientaccedilatildeo invertida) + Bf

A Figura 6 mostra as operaccedilotildees com dois modelos A e B

(a) (b)

Operaccedilotildees Booleanas com Pontos 31

(c) (d)

Figura 6 [22] (a) Dois modelos A e B (b) Posicionados de forma que A tem

uma parte dentro de B eacute mostrado o resultado A U B Af + Bf (c) Resultado de A ndash B Af

+ Bd (d) Resultado de A cap B Ad + Bd

Bart [2] e Pauly [3] apresentam dois meacutetodos para determinar os

elementos acima Estes dois meacutetodos satildeo construiacutedos a partir dos seguintes

conceitos os elementos Af Ad Bf Bd satildeo uma parte da superfiacutecie modelada por

pontos e portanto satildeo conjuntos de surfels Para determinaacute-los eacute necessaacuteria

entatildeo a classificaccedilatildeo de um surfel (que pode se resumir agrave classificaccedilatildeo de um

ponto que eacute o seu centro) de uma superfiacutecie como dentro ou fora de um outro

modelo Os dois meacutetodos utilizam a seguinte regra para esta classificaccedilatildeo aqui

denominada Regra 2

Regra 2 Dado um ponto x qualquer um volume V determinado por uma superfiacutecie

de contorno S uma amostragem P da superfiacutecie S um ponto p є P que eacute a

amostra mais proacutexima a x um vetor np normal agrave S em p e orientado para fora de

S temos que

(x ndash p) np gt 0 x notinV

Ou seja para classificar um ponto em relaccedilatildeo a um modelo verificamos o

produto interno entre a normal em p (surfel mais proacuteximo a x) e o vetor (x - p)

se este produto interno for maior que zero x natildeo pertence ao volume V e seraacute

classificado como fora senatildeo seraacute classificado como dentro De maneira

ainda mais informal se a normal em p apontar para a direccedilatildeo oposta a x x seraacute

classificado como dentro se apontar para x x seraacute classificado como fora

A Figura 7 mostra a Regra 2

Operaccedilotildees Booleanas com Pontos 32

Figura 7 Para classificar o ponto x encontra-se o surfel p (com normal np) mais proacuteximo

a x Se o produto interno entre np e (x ndash p) for maior que zero entatildeo x eacute classificado como

fora senatildeo seraacute classificado como dentro

A validade da Regra 2 eacute discutida na Seccedilatildeo 44 Uma das restriccedilotildees

teoacutericas para garantir-lhe a validade eacute que a superfiacutecie seja suave

Cada um dos dois meacutetodos daacute um tratamento diferente para o uso desta

regra Pauly usa a regra diretamente encontrando o surfel mais proacuteximo a um

ponto e classificando este ponto a partir deste surfel Ele utiliza tambeacutem a

representaccedilatildeo impliacutecita MLS (Moving Least Squares [18]) para casos em que a

Regra 2 poderia falhar e para tratamento de interseccedilotildees [3] Seu meacutetodo vale

para modelos soacutelidos ou natildeo soacutelidos O meacutetodo de Adams e Dutreacute [2] utiliza

octrees [1] criando uma classificaccedilatildeo dos noacutes da octree a partir desta Regra 2

Os pontos satildeo entatildeo classificados de acordo com o noacute da octree que o conteacutem

Este segundo meacutetodo aplica-se somente a modelos soacutelidos Os dois meacutetodos

seratildeo descritos em detalhes nas seccedilotildees abaixo

Como um surfel eacute considerado um disco podemos dizer que surfels de

dois modelos diferentes podem se intersectar A interseccedilatildeo destes dois surfels

corresponde agrave interseccedilatildeo destes dois discos Estes surfels geram problemas

para visualizaccedilatildeo se forem acrescentados ao resultado sem um tratamento

especiacutefico apresentaratildeo artefatos natildeo desejaacuteveis na renderizaccedilatildeo do modelo

resultado (Figura 8) se natildeo forem acrescentados ao resultado deixaratildeo buracos

no modelo

Operaccedilotildees Booleanas com Pontos 33

Figura 8 [2] -Interseccedilatildeo de duas esferas agrave esquerda sem nenhum tratamento de interseccedilatildeo agrave direita apoacutes o tratamento de interseccedilatildeo

Aleacutem disso nem sempre esta interseccedilatildeo forma uma superfiacutecie suave

Esta interseccedilatildeo pode formar uma aresta viva (seccedilatildeo 4223) gerando

problemas tambeacutem para o uso da Regra 2 que eacute vaacutelida apenas para superfiacutecies

suaves Eacute necessaacuterio entatildeo fazer um tratamento desta superfiacutecie de interseccedilatildeo

(formada por surfels originados de diferentes modelos) O tratamento de cada

um dos meacutetodos para este caso seraacute tambeacutem abaixo apresentado

42 Meacutetodo de Adams e Dutreacute

O meacutetodo aplica-se somente a modelos soacutelidos Para determinaccedilatildeo dos

elementos da aqui chamada Regra 1 (seccedilatildeo 41) este meacutetodo utiliza uma octree

[1] que subdivide o espaccedilo do modelo em trecircs fora dentro ou no contorno do

modelo Estes espaccedilos satildeo determinados pela classificaccedilatildeo dos noacutes da octree a

partir da Regra 2 Tambeacutem eacute usado o meacutetodo TINN - Triangle Inequality Nearest

Neighbour [19] - para otimizar a pesquisa dentro do noacute A seguir descrevemos o

modelo usado neste meacutetodo apresentando os dados associados aos pontos o

tipo de distribuiccedilatildeo e o algoritmo que realiza as operaccedilotildees

421 Modelo por Pontos em Adams e Dutreacute

Os surfels neste meacutetodo contecircm as seguintes informaccedilotildees posiccedilatildeo do

surfel xs orientaccedilatildeo do surfel ns e raio de alcance do surfel rs O surfel pode ser

pensado como um disco ortogonal a ns com centro xs e raio rs O raio eacute

escolhido de tal forma que a projeccedilatildeo dos discos no plano da imagem se

sobreponham

Operaccedilotildees Booleanas com Pontos 34

Os objetos representados satildeo soacutelidos A distribuiccedilatildeo dos surfels eacute

uniforme embora o algoritmo natildeo exija esta condiccedilatildeo Para cada soacutelido eacute

definido um rmax = Max rs o raio de alcance do maior surfel pertencente agrave

superfiacutecie do soacutelido Como o raio eacute escolhido de tal forma que a projeccedilatildeo dos

discos no plano da imagem se sobreponham o controle da amostragem eacute

entatildeo ligado agrave renderizaccedilatildeo

422 Algoritmo de Operaccedilotildees Booleanas

Utilizando objetos modelados da forma descrita acima o meacutetodo realiza

operaccedilotildees de uniatildeo interseccedilatildeo e diferenccedila com modelos soacutelidos Supondo dois

modelos soacutelidos S1 e S2 O algoritmo pode ser dividido nas seguintes etapas

Criaccedilatildeo de uma octree para cada modelo Teste Dentro-Fora Tratamento da

interseccedilatildeo Estas etapas satildeo apresentadas nas proacuteximas seccedilotildees

4221 Criaccedilatildeo de uma octree para cada modelo

Eacute criada uma octree [1] para cada modelo A criaccedilatildeo de uma octree eacute feita

da seguinte forma

Gera-se a ldquoCaixa envolventerdquo caixa alinhada com os eixos que conteacutem

todo o modelo A ldquoCaixa envolventerdquo corresponde ao noacute raiz da octree Este noacute

conteacutem inicialmente todos os surfels do modelo Em seguida o noacute raiz eacute

dividido em oito noacutes filhos Os surfels satildeo distribuiacutedos entre estes oito noacutes Cada

um deles caso contenha surfels eacute dividido novamente em 8 filhos e seus surfels

satildeo redistribuiacutedos entre eles Este processo eacute repetido recursivamente enquanto

o nuacutemero de surfels do noacute for maior que zero ou ateacute uma profundidade maacutexima

preacute-definida da octree ser alcanccedilada

Cada noacute da octree deve ser classificado O objetivo desta classificaccedilatildeo eacute

determinar que parte da octree estaacute dentro do modelo e que parte estaacute fora Os

noacutes da octree satildeo entatildeo classificados como ldquodentrordquo ldquoforardquo e ldquocontornordquo

Podemos ilustrar esta classificaccedilatildeo em 2D a Figura 9 mostra uma quadtree

classificada

Operaccedilotildees Booleanas com Pontos 35

Figura 9-Um objeto representado por pontos com suas normais e sua quadtree correspondente classificada os noacutes cinza claro estatildeo dentro do modelo noacutes cinza mais escuro estatildeo fora do modelo e noacutes com cinza intermediaacuterio satildeo noacutes cheios noacutes que conteacutem pontos

O noacutes que conteacutem surfels satildeo classificados como ldquocontornordquo Para

classificar um noacute vazio existem trecircs casos

o noacute vazio tem apenas um vizinho-irmatildeo natildeo vazio

o noacute vazio tem mais de um vizinho-irmatildeo natildeo vazio

o noacute vazio natildeo tem vizinhos-irmatildeos natildeo vazios

No primeiro caso o noacute vazio eacute classificado pelo seu vizinho natildeo vazio No

segundo caso considera-se qualquer um dos vizinhos natildeo vazios No terceiro

caso classifica-se primeiro os noacutes vizinhos e eacute dada a mesma classificaccedilatildeo para

o noacute vazio Como cada noacute natildeo folha de uma octree tem pelo menos um noacute filho

natildeo vazio sempre pode ser feita a classificaccedilatildeo dos noacutes vazios A classificaccedilatildeo

eacute feita da seguinte forma dentre os surfels do vizinho-irmatildeo escolhido encontra-

se o surfel mais proacuteximo ao noacute a ser classificado Se a normal deste surfel

aponta para o noacute vazio a ser classificado entatildeo ele eacute classificado como ldquoforardquo

Se a normal aponta no sentido contraacuterio entatildeo ele eacute classificado como ldquodentrordquo

De maneira mais formal sejam cv e cc coordenadas dos centros do noacute vazio e

do noacute contorno respectivamente Seja s o surfel mais proacuteximo ao noacute vazio e ns

a normal em s Se ( cv - cc )٠ ns gt 0 ( produto interno entre a normal em s e o

vetor cv - cc for maior que zero ) o noacute vazio seraacute classificado como ldquoforardquo

Senatildeo seraacute classificado como ldquodentrordquo

Em geral os noacutes ldquocontornordquo satildeo subdivididos em trecircs partes uma que estaacute

fora do modelo uma que estaacute dentro do modelo e uma terceira que conteacutem os

surfels Esta subdivisatildeo eacute feita por meio da criaccedilatildeo de dois planos paralelos que

Operaccedilotildees Booleanas com Pontos 36

dividem o noacute Para determinar estes planos calcula-se o vetor nm igual agrave

meacutedia das normais dos surfels do noacute nm = sum ns sum ns onde ns eacute a normal de

cada surfel do noacute

Em seguida encontra-se o surfel com maior produto interno entre a sua

normal e a normal meacutedia d1=Max(nm ٠ ns) Este surfel juntamente com a normal

meacutedia define um dos planos Encontra-se tambeacutem o surfel com menor produto

interno entre a sua normal e a normal meacutedia d2=Min(nm ٠ ns) Este surfel

juntamente com a normal meacutedia define o outro plano A Figura 10 mostra a

divisatildeo de um noacute de uma quadtree nas trecircs partes dentro do modelo fora do

modelo e no ldquocontornordquo

Esta subdivisatildeo aplica-se apenas a noacutes que conteacutem surfels cujas direccedilotildees

natildeo variem em mais de 90 graus Caso isso ocorra ele natildeo seraacute subdividido Ou

seja se um noacute possuir dois vetores normais (de dois surfels diferentes) que

formem um acircngulo maior que 90 graus ele natildeo seraacute subdividido

Figura 10 [2] -Divisatildeo de noacute de contorno a parte agrave esquerda estaacute fora do modelo a parte agrave direita estaacute dentro do modelo e a faixa intermediaacuteria conteacutem os surfels

4222 Teste Dentro-Fora

O Teste Dentro-Fora faz a classificaccedilatildeo dos surfels de um modelo como

ldquodentrordquo ou ldquoforardquo de outro modelo Portanto aplicaremos este mesmo teste duas

vezes uma para o modelo S1 em relaccedilatildeo ao modelo S2 e outra para S2 em

relaccedilatildeo a S1 Vamos mostrar o teste Dentro-Fora para o caso da classificaccedilatildeo

dos surfels do modelo S1 em relaccedilatildeo a S2

Operaccedilotildees Booleanas com Pontos 37

No item anterior foram criadas duas octrees uma para o modelo S1 e

outra para o modelo S2 Chamemos de A e B as octrees de S1 e S2

respectivamente Para classificar S1 em relaccedilatildeo a S2 inicialmente eacute feita uma

avaliaccedilatildeo da posiccedilatildeo de A em relaccedilatildeo a B A e B podem estar nas seguintes

situaccedilotildees

- A natildeo intersecta B

- A intersecta apenas noacutes ldquoforardquo de B

- A intersecta apenas noacutes ldquodentrordquo de B

- A intersecta noacutes ldquoforardquo e noacutes ldquodentrordquo de B

Para testar estas situaccedilotildees os noacutes satildeo aumentados de rmax o raio do

maior surfel do modelo soacutelido Isto eacute feito para compensar o fato de que o surfel

natildeo eacute apenas um ponto mas sim considerado como um disco

No primeiro e no segundo caso todos os surfels de A satildeo classificados

como ldquoforardquo No terceiro caso todos os surfels de A satildeo classificados como

ldquodentrordquo

No quarto caso temos que percorrer a octree A Comeccedilando pelo noacute raiz

percorre-se os filhos deste noacute Para cada filho os quatro testes acima satildeo feitos

Se o noacute filho encontra-se em um dos trecircs primeiros casos a classificaccedilatildeo eacute dada

como foi citada acima Se um filho estaacute no quarto caso e natildeo eacute um noacute folha

repete-se recursivamente o mesmo procedimento para seus filhos ateacute encontrar-

se um noacute folha Para um noacute que estaacute no quarto caso e eacute folha percorre-se a lista

de surfels que este noacute conteacutem classificando cada um destes surfels Seja sa um

surfel desta lista Para este caso percorre-se a octree B para classificar sa

Primeiramente encontramos o noacute de B que conteacutem sa Se este noacute de B foi

dividido testa-se de acordo com esta divisatildeo do noacute se o surfel sa estaacute na parte

do noacute que estaacute dentro do modelo ele eacute classificado como ldquodentrordquo se sa estaacute na

parte que estaacute fora do modelo ele eacute classificado como ldquoforardquo se sa estaacute na parte

intermediaacuteria ou se o noacute de B natildeo foi subdividido em planos encontra-se sb que

eacute o surfel pertencente a este noacute de B que estaacute mais proacuteximo de sa sa seraacute

entatildeo classificado de acordo com sb Se ( sa - sb )٠ nb gt 0 sa eacute classificado

como ldquoforardquo senatildeo eacute classificado como ldquodentrordquo Se os discos de sb e sa se

intersectam sa eacute marcado como interseccedilatildeo Para encontrar sb o algoritmo

implementa o meacutetodo TINN ndash Triangle Inequality Nearest Neighbour [19]

Operaccedilotildees Booleanas com Pontos 38

4223 Tratamento da interseccedilatildeo

Os surfels de A que intersectam surfels de B satildeo classificados como

ldquointerseccedilatildeordquo Se eles natildeo forem incluiacutedos no modelo resultado o soacutelido resultado

teraacute buracos Se eles forem incluiacutedos sem algum tratamento eles natildeo

representaratildeo adequadamente a regiatildeo Em geral o surfel sa (um surfel

ldquointerseccedilatildeordquo de A) eacute dividido em dois pelo plano que conteacutem o surfel sb (surfel de

B que sa intersecta) uma parte que estaacute fora de B e outra que estaacute dentro de B

Dependendo da operaccedilatildeo que estaacute sendo realizada vamos querer manter uma

destas partes do surfel sa no modelo resultado Seja xa a posiccedilatildeo do surfel sa e o

surfel sa uma circunferecircncia de centro xa e raio ra igual ao raio de alcance de sa

O plano que conteacutem o surfel sb define uma corda desta circunferecircncia como

mostra a Figura 11 O surfel sa seraacute substituiacutedo por um surfel menor que

ultrapassa esta corda de uma distacircncia e definida pelo usuaacuterio Para cobrir

completamente a interseccedilatildeo seratildeo adicionados surfels menores que cruzam a

corda de interseccedilatildeo

Figura 11 -Interseccedilatildeo do surfel s e do plano que passa pelo surfel t o surfel mais proacuteximo a s O surfel s eacute substituiacutedo por trecircs surfels menores

Operaccedilotildees Booleanas com Pontos 39

O tratamento de interseccedilatildeo proposto por Adams e Dutreacute [2] natildeo soacute evita

os buracos mas tambeacutem cria uma forma de renderizaccedilatildeo de arestas vivas A

colocaccedilatildeo de vaacuterios pequenos surfels na regiatildeo da interseccedilatildeo permite esta

correta renderizaccedilatildeo das ldquoarestas vivasrdquo Desta forma o problema das arestas

vivas eacute resolvido na modelagem (Figura 12) A vantagem de se resolver o caso

na modelagem eacute que natildeo eacute necessaacuterio fazer um tratamento especial na

renderizaccedilatildeo para que mostre esta aresta viva Diferente do tratamento feito

em Pauly (seccedilatildeo 431) que resolve esta questatildeo em tempo de renderizaccedilatildeo

Aleacutem disso o tratamento resolve alguns casos onde a Regra 2 poderia falhar

(veja em Validade da Regra 2-seccedilatildeo 44)

Figura 12 [2] -Agrave direita eacute mostrado o resultado do tratamento de interseccedilatildeo para o caso de Arestas Vivas do objeto agrave esquerda

43 Meacutetodo de Pauly

O meacutetodo aplica-se a objetos soacutelidos e natildeo soacutelidos Os modelos podem ser

obtidos a partir de diferentes entradas como nuvem de pontos irregulares ou por

meio de scanners 3D Cria um modelo hiacutebrido destes objetos usa o modelo por

pontos juntamente com a representaccedilatildeo impliacutecita Moving Least Squares - MLS

[18] Realiza operaccedilotildees booleanas com pontos e utiliza adicionalmente MLS

para alguns casos de classificaccedilatildeo de surfels e no tratamento de interseccedilatildeo A

seguir apresentamos as caracteriacutesticas do modelo por pontos deste meacutetodo e o

algoritmo que realiza as operaccedilotildees

Operaccedilotildees Booleanas com Pontos 40

431 Modelo em Pauly

O modelo eacute uma estrutura hiacutebrida de pontos com a representaccedilatildeo impliacutecita

Moving Least Squares - MLS [18] Esta estrutura eacute usada para fazer operaccedilotildees

booleanas e tambeacutem operaccedilotildees de free-form (natildeo abordadas nesta

dissertaccedilatildeo) Para operaccedilotildees booleanas a representaccedilatildeo MLS permite que a

curva de interseccedilatildeo entre os modelos seja reconstruiacuteda e surfels sejam

colocados nesta curva e em alguns casos de classificaccedilatildeo de surfels mostrados

na seccedilatildeo 432 Para este modelo natildeo existem restriccedilotildees quanto agrave forma do

objeto

Os surfels contecircm informaccedilotildees sobre sua posiccedilatildeo e sua normal Aleacutem

disso surfels podem conter informaccedilotildees adicionais como textura cor

propriedades de materiais

A distribuiccedilatildeo dos surfels eacute natildeo-uniforme e a amostragem eacute

aproximadamente adequada (Veja seccedilatildeo 44)

432 Algoritmo de Operaccedilotildees Booleanas

O algoritmo classifica surfels de um modelo como ldquodentrordquo ou ldquoforardquo de

outro modelo Antes de colocarmos como eacute feita esta classificaccedilatildeo devemos

acrescentar que Pauly estende esta classificaccedilatildeo para modelos que natildeo satildeo

soacutelidos Ou seja mesmo um modelo natildeo soacutelido divide o espaccedilo da cena (espaccedilo

em que se encontra o modelo) em dois sub-espaccedilos dentro ou fora do modelo

Pauly faz esta subdivisatildeo da seguinte forma

Como a superfiacutecie que determina o modelo eacute orientada (conteacutem vetores

normais agrave superfiacutecie que apontam para ldquoforardquo do modelo) Pauly considera que

um modelo natildeo soacutelido divide o espaccedilo em dois sub-espaccedilos um ldquoforardquo do

modelo (os vetores normais apontam para este sub-espaccedilo) e um que estaacute

ldquodentrordquo do modelo (os vetores normais apontam para direccedilatildeo oposta a este sub-

espaccedilo) Por exemplo um plano eacute representado como um conjunto de surfels

contidos num determinado espaccedilo geomeacutetrico plano π Cada surfel conteacutem um

vetor normal direcionado Este modelo divide entatildeo o espaccedilo em dois sub-

espaccedilos o sub-espaccedilo que eacute apontado por estes surfels (considerado ldquoforardquo do

modelo) e o sub-espaccedilo que estaacute na direccedilatildeo oposta (considerado ldquodentrordquo do

modelo) Desta forma ele aplica as classificaccedilotildees de ldquodentrordquo e ldquoforardquo de um

modelo tambeacutem a modelos natildeo soacutelidos A partir desta consideraccedilatildeo as

Operaccedilotildees Booleanas com Pontos 41

operaccedilotildees booleanas satildeo realizadas com os modelos natildeo soacutelidos da mesma

forma que com os modelos soacutelidos

Para determinar esta classificaccedilatildeo (dentro ou fora do modelo) Pauly utiliza

a Regra 2 Para pesquisa do surfel mais proacuteximo o meacutetodo usa a estrutura Kd-

tree [16] e tambeacutem o algoritmo ANN [16] No entanto o meacutetodo apresenta uma

restriccedilatildeo da Regra 2 ela soacute deve ser usada para classificaccedilotildees de pontos x se

a distacircncia x-p for maior que o espaccedilamento da amostragem local ηp em p

Este espaccedilamento da amostragem local ηp em p eacute um caacutelculo aproximado da

distacircncia meacutedia entre os surfels vizinhos a p Se x estaacute muito proacuteximo agrave

superfiacutecie a classificaccedilatildeo pode falhar Neste caso ele calcula o ponto exato de

S mais proacuteximo a x usando a projeccedilatildeo MLS (ldquoMoving Least Squaresrdquo)

Por questotildees de melhoria de desempenho utiliza-se o fato de que sendo

Ωp (x) a classificaccedilatildeo do ponto x em relaccedilatildeo agrave amostragem P tem-se que Ωp (x)

= Ωp (xrsquo) para todos os pontos de xrsquo que estatildeo dentro da esfera de centro x e

raio igual a x-p - ηp (onde p eacute o surfel mais proacuteximo e ηp eacute o espaccedilamento

local da amostragem em p acima citado) Ou seja sendo x um ponto qualquer p

o surfel mais proacuteximo a x ηp eacute o espaccedilamento local da amostragem em p se

desenharmos uma esfera com centro x e raio igual a x-p - ηp temos que

todos os pontos xrsquo que estatildeo dentro da esfera teratildeo a mesma classificaccedilatildeo de x

Desta forma o nuacutemero de vezes que a classificaccedilatildeo eacute feita (pesquisando-se o

surfel mais proacuteximo ao ponto e usando a Regra 2) diminui em ateacute 90 Assim

em geral a classificaccedilatildeo de um surfel eacute obtida a partir do seu surfel vizinho

Dados

S1 a superfiacutecie MLS de contorno que define o modelo A

S2 a superfiacutecie MLS de contorno que define o modelo B

P1 o conjunto de surfels que representa a superfiacutecie S1

P2 o conjunto de surfels que representa a superfiacutecie S2

Ωp1 (x) a classificaccedilatildeo do ponto p em relaccedilatildeo a uma amostragem P1

Q1 o subconjunto de P1 que vai compor o resultado

Ωp2 (x) a classificaccedilatildeo do ponto p em relaccedilatildeo a uma amostragem P2

Q2 o subconjunto de P2 que vai compor o resultado

Os conjuntos Q1 e Q2 satildeo obtidos por meio da Tabela 1 mostrada abaixo

Operaccedilotildees Booleanas com Pontos 42

Tabela 1 Classificaccedilatildeo para operaccedilotildees booleanas

Para o tratamento de interseccedilatildeo neste meacutetodo satildeo computados pontos

que caem exatamente na curva de interseccedilatildeo e estes satildeo acrescentados ao

modelo resultado Estes pontos satildeo determinados de forma que a densidade da

amostragem vai crescendo agrave medida que os surfels se aproximam da curva de

interseccedilatildeo e convergem para este ponto de interseccedilatildeo como mostra a Figura

13

(a) (b) (c)

Figura 13 - Os novos surfels satildeo colocados exatamente na curva de interseccedilatildeo

e convergem para o ponto de interseccedilatildeo

A Figura 14 mostra o processo de encontrar os surfels que caem nesta

curva de interseccedilatildeo Inicialmente satildeo encontrados todos os pontos de Q1 e Q2

que estatildeo proacuteximos agrave curva de interseccedilatildeo por meio da funccedilatildeo de distacircncia do

operador de projeccedilatildeo MLS Em seguida procura-se todos os pares mais

proacuteximos (q1 є Q1 q2 є Q2 ) e computa-se o ponto q na curva de interseccedilatildeo da

seguinte forma (veja a Figura 14)Seja r o ponto na linha de interseccedilatildeo dos dois

planos tangentes em q1 e q2 e que estaacute mais proacuteximo a estes dois pontos isto eacute

que minimiza a distacircncia ||r-q1|| + ||r-q2|| r eacute a primeira aproximaccedilatildeo de q e agora

pode ser projetado sobre S1 e S2 para obter dois novos pontos de partida q1rsquo e q2

rsquo

para a iteraccedilatildeo Este procedimento pode ser repetido iterativamente ateacute que os

pontos q1 e q2 convirjam ao ponto q na curva de interseccedilatildeo Normalmente este

processo requer menos de trecircs iteraccedilotildees

Operaccedilotildees Booleanas com Pontos 43

(a) (b)

(c)

Figura 14 (a) Suponhamos a reta que eacute a interseccedilatildeo do plano tangente a S1 em q1 e o

plano tangente a S2 em q2 O ponto r eacute o ponto desta reta que estaacute mais proacuteximo a q1 e

q2 (b) r eacute projetado sobre S1 e S2 obtendo-se q1acute e q2acute dois novos pontos de partida

para nova iteraccedilatildeo (c) A nova iteraccedilatildeo gera r que eacute uma aproximaccedilatildeo melhor de q

Pauly faz o tratamento de arestas vivas em tempo de renderizaccedilatildeo Ele

faz uma alteraccedilatildeo no renderizador Marca os surfels de interseccedilatildeo e ao

renderizaacute-los satildeo cortados para gerar uma aresta viva

44 Validade da Regra 2

Os dois meacutetodos analisados nesta dissertaccedilatildeo utilizam a seguinte regra

para a classificaccedilatildeo de um surfel

Regra 2 dado um volume V determinado por uma superfiacutecie de contorno

S uma amostragem P da superfiacutecie S um ponto x qualquer um ponto p є P que

eacute a amostra mais proacutexima a x um vetor ny normal a S em p e orientado para

fora de S temos que (x ndash p) np gt 0 x notinV

Em [16] eacute colocado que esta regra eacute tirada da seguinte propriedade da

geometria diferencial (aqui chamada Propriedade 1)

Propriedade 1 Dado um volume V determinado por uma superfiacutecie de

contorno S contiacutenua e duplamente diferenciaacutevel um ponto x qualquer um ponto

Operaccedilotildees Booleanas com Pontos 44

y є S que eacute o ponto de S mais proacuteximo a x um vetor ny normal a S em y e

orientado para fora de S temos que (x ndash y) ny gt 0 x notinV

A Figura 15 ilustra esta propriedade

Figura 15 Para verificar se o ponto x estaacute fora de um contorno C encontra-se o ponto y

de C Se o produto interno entre a normal em y e o vetor que liga y a x for maior que

zero entatildeo x estaacute fora de C senatildeo estaacute dentro de C

Pauly assume que tendo uma amostragem P da superfiacutecie S podemos

usar a Propriedade 1 substituindo y por p o surfel mais proacuteximo ao ponto x (x ndash

p) np gt 0 x notinV (Regra 2) Esta amostragem P em seu trabalho eacute

(aproximadamente) uma ldquoamostragem adequadardquo Tambeacutem seu tratamento de

interseccedilatildeo cria uma aproximaccedilatildeo dela (seccedilatildeo 43) Empiricamente a

ldquodiscretizaccedilatildeo da propriedaderdquo eacute vaacutelida a partir desta suposiccedilatildeo Mas isso natildeo foi

demonstrado teoricamente em seu trabalho

Pauly coloca em [16] que natildeo existe ainda uma teoria matemaacutetica rigorosa

de amostragem anaacuteloga a teoria de Fourier para superfiacutecies discretas

A melhor aproximaccedilatildeo teoacuterica para esta aacuterea eacute o uso do Eixo Medial que

foi colocado em [10] Vamos descrever este trabalho brevemente nesta seccedilatildeo

Este trabalho apresenta um algoritmo de reconstruccedilatildeo de superfiacutecie que parte de

uma amostragem adequada (abaixo definida) de pontos e obteacutem uma malha

que eacute topologicamente equivalente agrave superfiacutecie do objeto e agrave medida que a

densidade da amostragem cresce a saiacuteda converge para esta superfiacutecie

Para definir amostragem adequada o trabalho parte do conceito de Eixo

Medial

Operaccedilotildees Booleanas com Pontos 45

ldquoEixo Medialrdquo de uma superfiacutecie 2D posicionada no R3 eacute o conjunto

(fechado) de pontos pi para os quais buscando-se o ponto da superfiacutecie que

estaacute mais proacuteximo a pi mais de um ponto pertencentes a esta superfiacutecie satildeo

encontrados A Figura 16 abaixo ilustra o Eixo Medial em 2D

Figura 16 [10] As curvas de cor mais clara satildeo o Eixo Medial da curva em preto

Em duas dimensotildees os veacutertices de Voronoi de uma amostragem densa

aproximam o ldquoEixo Medialrdquo da amostragem (mas esta propriedade natildeo se

estende a 3D) A Figura 17 mostra o Eixo Medial em 3D

Figura 17 [10] Em 3D geralmente o Eixo Medial eacute uma superfiacutecie 2D (em cor mais

clara) Aqui o quadrado eacute o Eixo Medial da superfiacutecie transparente que o contorna

Podemos definir agora a amostragem adequada da seguinte forma

Supondo uma superfiacutecie suave que quer dizer uma 2-manifold duplamente

diferenciaacutevel posicionada no R3 uma ldquoamostragem adequadardquo desta superfiacutecie eacute

aquela na qual a densidade da amostragem eacute (pelo menos) inversamente

proporcional agrave distacircncia ao ldquoEixo Medialrdquo A Figura 18 mostra uma amostragem

adequada

Operaccedilotildees Booleanas com Pontos 46

Figura 18 [10] A figura mostra o diagrama de Voronoi de uma amostragem de pontos S

Da mesma forma que o a amostragem aproxima a curva os veacutertices de Voronoi

aproximam o Eixo Medial

Na praacutetica na reconstruccedilatildeo da superfiacutecie uma aproximaccedilatildeo deste ldquoEixo

Medialrdquo eacute computada (devido agrave dificuldade de computaacute-lo exatamente e em

alguns casos ateacute impossibilidade)

Melhorias Propostas 47

5 Melhorias Propostas

No capiacutetulo 4 apresentamos dois meacutetodos que realizam operaccedilotildees

booleanas em modelos por pontos o meacutetodo de Adams e Dutreacute [2] e o meacutetodo

de Pauly[3] Para esta dissertaccedilatildeo usamos o meacutetodo de Adams e Dutreacute [2] e

propomos as seguintes melhorias

- Alteramos o momento em que eacute feita a classificaccedilatildeo da octree Fazemos

esta classificaccedilatildeo durante a sua criaccedilatildeo Os noacutes filhos de um noacute pai P qualquer

satildeo classificados logo apoacutes a criaccedilatildeo de todos estes filhos de P

independentemente do restante da octree ter sido criada Isso pode ser feito

porque a octree eacute construiacuteda na ordem raiz-esquerda-direita (preorder

traversal) e portanto apoacutes todos os filhos de um noacute pai serem criados a parte

necessaacuteria da octree para a classificaccedilatildeo destes filhos jaacute estaacute criada

- A classificaccedilatildeo da octree eacute otimizada classificando-se os cantos dos seus

noacutes como dentro ou fora do modelo Na classificaccedilatildeo de um noacute n1 a partir de seu

vizinho n2 se os cantos que satildeo comuns a n1 e n2 tiverem a mesma

classificaccedilatildeo esta seraacute dada ao noacute Assim diminuiacutemos o nuacutemero de pesquisas

pelo surfel mais proacuteximo que eacute a parte criacutetica da classificaccedilatildeo dos noacutes da octree

em termos de tempo de processamento

- Acrescentamos um valor miacutenimo (maior que zero) para o nuacutemero de

surfels contidos em um noacute que eacute uma das condiccedilotildees de parada na criaccedilatildeo da

octree Verificamos que desta forma diminui-se a chance de erro na classificaccedilatildeo

de partes criacuteticas como ldquoarestas vivasrdquo

Uma comparaccedilatildeo entre a nossa implementaccedilatildeo e a de Pauly tambeacutem seraacute

feita no capiacutetulo 6

51 Descriccedilatildeo do algoritmo

O algoritmo implementado para esta dissertaccedilatildeo baseado no meacutetodo de

Adams e Dutreacute [2] pode ser dividido nas seguintes partes Criaccedilatildeo e

classificaccedilatildeo de uma octree para cada modelo Teste DentroFora Criaccedilatildeo do

modelo resultado Natildeo foi implementado tratamento especial algum de

interseccedilatildeo para o nosso plugin As proacuteximas seccedilotildees apresentam estas partes

Melhorias Propostas 48

511 Criaccedilatildeo e classificaccedilatildeo de uma octree para cada modelo

As ideacuteias do algoritmo satildeo aqui ilustradas em 2D mas a extensatildeo delas

para 3D eacute feita facilmente

Para cada modelo a octree eacute criada e classificada da seguinte forma

Figura 19-Quadtree classificada Os noacutes mais escuros estatildeo fora do modelo os mais claros dentro e os em tom intermediaacuterio satildeo noacutes de contorno

Gera-se uma ldquocaixa envolventerdquo do modelo contendo todos os surfels e

cria-se o noacute raiz da octree que corresponde a esta ldquocaixa envolventerdquo Este noacute

raiz eacute subdividido em oito filhos e seus surfels satildeo distribuiacutedos entre eles Ao

inveacutes de testarmos os valores de xy e z para cada surfel a fim de determinar

para qual filho ele iraacute utilizamos listas auxiliares Primeiro os surfels satildeo

subdivididos em dois grupos pelos valores de x e armazenados em uma lista

auxiliar Em seguida cada uma das listas eacute subdividida pelo valor de y e as

quatro listas obtidas seratildeo subdivididas pelo valor de z Ao final teremos 8 listas

de surfels cada uma delas pertencente a um filho

Cada noacute seraacute entatildeo novamente subdividido enquanto contiver um nuacutemero

de surfels gt nmin (valor preacute-definido) ou enquanto a profundidade da aacutervore lt pmax

(valor preacute-definido) Na figura 19 pmax = 3 e nmin = 3

Melhorias Propostas 49

Figura 20-O noacute cheio eacute dividido em trecircs partes agrave esquerda a regiatildeo estaacute dentro do modelo agrave direita estaacute fora e entre as duas linhas que dividem o noacute estaacute a regiatildeo que conteacutem os surfels

Os noacutes cheios recebem um tratamento especial Eles satildeo subdivididos em

trecircs partes da seguinte forma uma que estaacute fora do modelo outra que estaacute

dentro e uma que conteacutem os surfels Esta subdivisatildeo eacute feita por meio da criaccedilatildeo

de dois planos paralelos que dividem o noacute Para determinar estes planos

calcula-se o vetor nm igual agrave meacutedia das normais dos surfels do noacute nm = sum ns

sum ns onde ns eacute a normal de cada surfel do noacute Em seguida encontra-se o

surfel com maior produto interno entre a sua normal e a normal meacutedia

d1=Max(nm ٠ ns) Este surfel juntamente com a normal meacutedia define um dos

planos Encontra-se tambeacutem o surfel com menor produto interno entre a sua

normal e a normal meacutedia d2=Min (nm ٠ ns) Este surfel juntamente com a normal

meacutedia define o outro plano (Figura 20) Se o noacute conteacutem surfels de superfiacutecies de

orientaccedilotildees diferentes ele natildeo seraacute subdividido ou seja os planos coincidiratildeo

com os planos que delimitam o proacuteprio noacute Este teste foi implementado da

seguinte forma escolhe-se um surfel qualquer do noacute Calcula-se o produto

interno entre a normal deste surfel e as outras normais dos outros surfels deste

noacute Se algum produto interno for menor que zero este noacute natildeo seraacute subdividido

Apoacutes a etapa de subdivisatildeo classificam-se os oito cantos deste noacute como

dentro ou fora do modelo por meio da classificaccedilatildeo de um ponto que

descreveremos na sub-seccedilatildeo 5111

Melhorias Propostas 50

a b

c d

Figura 21-O noacute a eacute classificado pelo noacute c o noacute d tambeacutem eacute classificado pelo noacute c a classificaccedilatildeo do noacute a eacute propagada para o noacute b

Jaacute os noacutes vazios da octree seratildeo classificados como ldquodentrordquo ou ldquoforardquo do

modelo da seguinte forma cada noacute folha vazio eacute classificado a partir de um de

seus irmatildeos vizinhos adjacentes Se ele possuir um vizinho adjacente cheio ele

seraacute classificado por este vizinho se natildeo possuir os vizinhos adjacentes seratildeo

classificados primeiro e ele teraacute esta mesma classificaccedilatildeo (Figura 21) Como tem

que existir sempre pelo menos um noacute cheio entre os filhos de um noacute pai entatildeo

sempre esta classificaccedilatildeo poderaacute ser feita Com a classificaccedilatildeo de todos os

filhos tem-se tambeacutem a classificaccedilatildeo dos cantos do noacute pai

Mf03c003fmx a b

Figura 22-Os cantos a e b do noacute cheio possuem a mesma classificaccedilatildeo fora do modelo Esta classificaccedilatildeo foi dada ao noacute vazio adjacente

Melhorias Propostas 51

Para classificar um noacute vazio por meio de um noacute cheio verificam-se os

cantos comuns destes dois noacutes se todos os cantos tiverem a mesma

classificaccedilatildeo esta seraacute dada ao noacute vazio (Figura 22) Se houver classificaccedilotildees

diferentes escolhe-se o surfel do noacute cheio mais proacuteximo ao noacute vazio faz-se o

produto interno entre a normal deste surfel e o vetor que liga o centro do noacute

cheio ao centro do noacute vazio (ou o vetor que liga o surfel ao centro do noacute vazio)

Se o produto interno for maior que zero o noacute eacute classificado como ldquoforardquo senatildeo eacute

classificado como ldquodentrordquo Para encontrar o surfel (pertencente a um noacute cheio)

mais proacuteximo ao noacute vazio existem dois casos

- O noacute cheio eacute folha percorre-se toda a lista de surfels e escolhe o surfel

mais proacuteximo da fronteira entre o noacute cheio e o vazio

- O noacute cheio natildeo eacute um noacute folha percorrem-se os filhos do noacute cheio ou seja

esta pesquisa eacute feita descendo na octree a partir do noacute cheio procurando o

surfel mais proacuteximo agrave fronteira do pai com o noacute vazio a ser classificado

Classificando o centro do noacute vazio todo o noacute deve ter a mesma

classificaccedilatildeo pois este noacute natildeo conteacutem surfels Para encontrar o surfel do noacute

vazio mais proacuteximo da fronteira entre o noacute cheio e o vazio basta testar o valor da

coordenada se a fronteira eacute o lado direito do noacute cheio escolhe-se o surfel com

maior coordenada lsquoxrsquo se eacute o lado esquerdo escolhe-se o surfel com menor lsquoxrsquo

se lado superior surfel com maior lsquoyrsquo etc A seguir apresentamos a classificaccedilatildeo

de um ponto qualquer pertencente a um noacute cheio

Figura 23- Quadtree classificada

Melhorias Propostas 52

5111 Classificaccedilatildeo de um ponto de um noacute cheio

Figura 24 [2] A normal n eacute a normal meacutedia e os surfels s1 e s2 juntamente com a normal

n definem as retas que dividem o noacute O ponto a estaacute fora do modelo e o ponto b estaacute

dentro do modelo

Para um ponto localizado dentro do noacute faz-se o seguinte teste se o noacute foi

dividido testa-se de acordo com a divisatildeo do noacute se o ponto estaacute na parte do noacute

que estaacute dentro do modelo ele eacute classificado como ldquodentrordquo se o ponto estaacute na

parte que estaacute fora do modelo ele eacute classificado como ldquoforardquo (Figura 24) se o

ponto estaacute na parte que conteacutem os surfels encontra-se o surfel s pertencente ao

noacute mais proacuteximo do ponto e o classifica de acordo com s seja ns a normal em s

cs a coordenada de s cp a coordenada do ponto Se (cp - cs )٠ ns gt 0 o ponto

seraacute classificado como ldquoforardquo Senatildeo seraacute classificado como ldquodentrordquo

Se o noacute natildeo foi dividido em planos esta classificaccedilatildeo a partir do surfel

mais proacuteximo seraacute sempre feita

512 Teste DentroFora

Melhorias Propostas 53

Figura 25-Duas circunferecircncias e suas quadtrees correspondentes

O Teste DentroFora classifica os surfels de um modelo como dentro ou

fora de outro modelo ou na sua interseccedilatildeo Este teste foi aqui implementado

exatamente como foi proposto em Adams e Dutreacute [2] exceto que natildeo foi

implementado o meacutetodo TINN - Triangle Inequality Nearest Neighbour [19]

Cada octree eacute percorrida verificando-se se os seus noacutes ou surfels estatildeo dentro

fora ou no contorno do outro modelo (Figura 25) Sejam A e B duas octrees e

queremos classificar a octree A As duas octrees (AB) satildeo percorridas partindo

da raiz

Para cada noacute de A existem quatro casos (Figura 26) Para testar estas

situaccedilotildees os boxes dos noacutes satildeo aumentados de rmax o raio do maior surfel do

modelo Isto eacute feito para compensar o fato de que o surfel natildeo eacute apenas um

ponto mas sim considerado como um disco

Os quatro casos satildeo

Se o noacute de A natildeo intersecta B entatildeo todos os surfels deste noacute satildeo

classificados como fora

Se o noacute de A intersecta apenas noacutes de B que estatildeo fora do modelo

todos os surfels deste noacute satildeo fora

Se o noacute de A intersecta apenas noacutes de B que estatildeo dentro do modelo

todos os surfels deste noacute satildeo dentro

Melhorias Propostas 54

Se o noacute de A intersecta noacutes de B que estatildeo dentro e tambeacutem noacutes de B

que estatildeo fora testa-se se este noacute de A eacute ou natildeo folha Se natildeo for folha

percorre-se os filhos deste noacute de A ateacute encontrar um noacute folha cheio que

intersecta B Para cada surfel sa deste noacute folha de A encontra-se o surfel de B

mais proacuteximo e classifica-se a coordenada de sa da forma apresentada na seccedilatildeo

5111 Seja sb o surfel usado na classificaccedilatildeo de sa Se os discos de sb e sa

se intersectam sa eacute classificado como ldquointerseccedilatildeordquo

(a) (b)

(c) (d)

Figura 26- a modelos natildeo se intersectam b modelo intersecta noacutes fora c modelo intersecta apenas noacutes dentro d modelo intersecta noacutes dentro e noacutes fora

513 Criaccedilatildeo do modelo resultado

Um novo modelo eacute criado com os seguintes surfels (de acordo com a

operaccedilatildeo booleana escolhida pelo usuaacuterio - veja Regra 1 da seccedilatildeo 41)

Uniatildeo - surfels de A que estatildeo fora de B + surfels de B que estatildeo fora de A

Melhorias Propostas 55

Interseccedilatildeo - surfels de A que estatildeo dentro de B + surfels de B que estatildeo

dentro de A

Diferenccedila A-B - surfels de A que estatildeo fora de B + surfels de B que estatildeo

dentro de A (com orientaccedilatildeo invertida)

Como natildeo foi implementado tratamento especial algum de interseccedilatildeo para

o nosso plugin os surfels que se intersectam satildeo mantidos no modelo resultado

final sem modificaccedilotildees

Descrito o algoritmo vejamos a seguir a sua implementaccedilatildeo

52 Implementaccedilatildeo

Este algoritmo foi implementado na forma de um plugin para o software

PointShop 3D [11] Este plugin foi desenvolvido na linguagem C e no sistema

operacional Windows

A escolha deste tipo de implementaccedilatildeo permitiu-nos usar o software

PointShop para os testes do algoritmo Estes testes foram feitos com os modelos

disponibilizados para o PointShop [11] Nesta seccedilatildeo apresentaremos o software

PointShop e as principais estruturas de dados usadas em nosso plugin

O Pointshop eacute um software aberto com seu coacutedigo disponiacutevel e preparado

para trabalhar com plugins Eacute um software de ediccedilatildeo de modelos 3D por pontos

Ele permite aleacutem de visualizar o modelo alterar as suas caracteriacutesticas como

cor brilho e fazer mapeamento de textura iluminaccedilatildeo filtragem (Figura 27)

Melhorias Propostas 56

Figura 27-Software PointShop 3D com dois modelos carregados na sua cena

Aleacutem disso pode-se criar uma cena com vaacuterios modelos e visualizaacute-los de

qualquer ponto de vista Implementa o virtual trackball para rotacionaacute-los e

transladaacute-los Usa uma iluminaccedilatildeo simples direcional A sua arquitetura eacute

extensiacutevel permite que o usuaacuterio adicione seus proacuteprios componentes ao

sistema Possui trecircs tipos de componentes

ldquoToolsrdquo fornece funcionalidades para ediccedilatildeo interativa de superfiacutecie Satildeo

disponibilizados na ldquotoolbarrdquo

Plugins fornece funcionalidades para processar em um soacute passo

modelos ou partes deles selecionadas Satildeo disponibilizados no menu ldquoPluginsrdquo

Renderes fornece funcionalidades de display para os modelos

Para esta dissertaccedilatildeo foi escolhida a construccedilatildeo do componente Plugin

por adequar-se agrave nossa proposta e ser a mais simples de ser construiacuteda O

PointShop [11] jaacute conteacutem uma tool que executa operaccedilotildees booleanas e

deformaccedilatildeo free-form sobre os modelos carregados na cena usando o meacutetodo

de Pauly [3] apresentado no capiacutetulo 4 O nosso plugin Operaccedilotildees Booleanas

implementa o algoritmo descrito na seccedilatildeo anterior baseado na proposta de

Melhorias Propostas 57

Adams e Dutreacute [2] Uma comparaccedilatildeo entre o nosso plugin e a tool de Pauly [3] eacute

feita no capiacutetulo 6

Figura 28-Menu do PointShop com o plugin e as opccedilotildees para operaccedilotildees booleanas

Para se executar o plugin o usuaacuterio precisa carregar dois modelos na

cena do PointShop acionar o plugin informando a operaccedilatildeo que seraacute executada

O plugin executaraacute o algoritmo acima proposto e carregaraacute o resultado na cena

do Pointshop retirando os modelos anteriores

521 Estruturas de Dados

Como vimos o software PointShop [11] trabalha com modelos por pontos

Um modelo deste software descrito na seccedilatildeo 42 conteacutem todas as informaccedilotildees

que o algoritmo proposto em Bart [2] necessita Abaixo relacionamos as

Melhorias Propostas 58

principais estruturas de dados do PointShop usadas no plugin e as principais

estruturas de dados do nosso plugin

As principais classes do PointShop usadas no plugin satildeo

Classe Scene

Classe Objects

Classe SurfelColections

Classe Surfel

Classe StatusBar

Classe Transformer

A hierarquia de dados eacute a seguinte a Scene conteacutem vaacuterios Objects os

quais conteacutem SurfelColections Cada SurfelColections conteacutem Surfels que

suportam uma ou mais propriedades tais como cor difusa cor especular

Classe Scene Classe que representa uma cena que conteacutem modelos

Classe Object Um modelo eacute representado pela classe Object que

conteacutem uma SurfelCollection e as matrizes de transformaccedilatildeo para rotaccedilatildeo

escala e translaccedilatildeo Cada Object eacute identificado pelo seu nome que eacute uacutenico na

Scene O meacutetodo getUniqueName retorna um nome uacutenico Cada Object tem sua

proacutepria matriz de transformaccedilatildeo que pode ser modificada com setRotation

rotate setPosition translate setScale e scale Objects podem ser copiados com

copy Objects consiste em um conjunto de surfels os quais podem ser

recuperados pela getSurfelCollection O Object pode ser ativado com

setActiveObject e recuperado com getActiveObject

Objects podem ser adicionados ou removidos com addObject e

removeObject Os Objects podem ser obtidos pela getFirstObject e

getNextObject

Classe SurfelCollection representa o conjunto de surfels de um modelo

Cada surfelcollection consiste em um conjunto de surfels (SurfelInterface) de

tamanho obtido por getNofSurfels Os surfels podem ser recuperados com

getFirstSurfel getCurrentSurfel e getNextSurfel

A SurfelCollection conteacutem um PropertyDescriptor e uma SurfelList

A SurfelList eacute uma lista duplamente encadeada de surfels Possui os

atributos firstSurfel lastSurfel currentSurfel que satildeo ponteiros para uma

SurfelInterface nSurfels que eacute o nuacutemero de Surfels

A SurfelInterface define a API para os surfels que satildeo os menores

elementos que compotildeem um Object Podem ser considerados como pontos com

uma normal que define a orientaccedilatildeo do ciacuterculo (ou elipse) que seraacute desenhado

Melhorias Propostas 59

tatildeo logo o surfel seja renderizado Tem como atributos dois ponteiros (next e

prev) para SurfelInterface

PropertyDescriptor consiste em ateacute 32 valores descrevendo quais as

propriedades a SurfelInterface suporta

Classe Surfel classe que representa o surfel

Classe StatusBar classe que imprime mensagens na tela Os plugins

podem mandar mensagens para o usuaacuterio pela StatusBar

Mensagens texto podem ser impressas com showMessage O progresso

de uma operaccedilatildeo pode ser indicado com setProgress ou resetProgress

Classe Transformer representa a transformaccedilatildeo entre sistemas de

coordenadas Esta classe fornece meacutetodos para transformar pontos e vetores

entre os diferentes sistemas de coordenadas do Pointshop

A seguir apresentamos as principais estruturas de dados do plugin

Operaccedilotildees Booleanas

As principais estruturas de dados do plugin satildeo boundingbox tree no

lista_surfel surfel

Boundingbox conteacutem dois pontos 3D que definem uma caixa que conteacutem

o modelo um ponto com menores coordenadas xy e z e outro ponto com

maiores xyz

Tree representa a octree do modelo Cada registro conteacutem um ponteiro

para um noacute e oito ponteiros para as 8 octrees filhas

No representa um noacute da octree Conteacutem os seguintes dados

- localizaccedilatildeo do noacute que eacute o canto inferior esquerdo do noacute

- lista_surfel (preenchida apenas para noacutes folha cheios)

- quantidade de surfels do noacute

- classificaccedilatildeo do noacute como dentro fora ou contorno

- classificaccedilatildeo do noacute em relaccedilatildeo a outro modelo

- indica se o noacute eacute folha ou natildeo

- vetor que eacute a meacutedia das normais dos surfels do noacute

- ponto que eacute a meacutedia das localizaccedilotildees dos surfels do noacute

- surfel que tem (entre todos os surfels do noacute) o maior produto interno

entre a sua normal e a normal meacutedia

- surfel que tem (entre todos os surfels do noacute) o menor produto interno

entre a sua normal e a normal meacutedia

- produto interno maacuteximo e miacutenimo entre as normais dos surfels do noacute e a

normal meacutedia deste noacute

Melhorias Propostas 60

- indica se o noacute conteacutem surfels com normais em sentido oposto (produto

interno entre elas eacute menor que zero)

- classificaccedilatildeo dos oito cantos do noacute

lista_surfels lista em que cada registro conteacutem um apontador para um

surfel e um apontador para o proacuteximo registro

surfel representa o surfel da octree Conteacutem a classificaccedilatildeo em relaccedilatildeo a

outro modelo e um ponteiro para o surfel do Poinshop

Resultados 61

6 Resultados

Neste capiacutetulo apresentamos os testes realizados com o plugin para o

PointShop implementado para esta dissertaccedilatildeo a comparaccedilatildeo deste plugin com

o plugin de Pauly [3] e a comparaccedilatildeo entre o meacutetodo de Adams e Dutreacute [2] e o

meacutetodo de Pauly [3]

61 Testes

Os testes foram feitos em um PC x86 Family 6 261600 KB de RAM sem

placa graacutefica sistema operacional Windows 2000 O plugin foi implementado na

linguagem C

Os modelos usados para os testes satildeo modelos disponibilizados no

PointShop [11] Vale lembrar que o meacutetodo implementado em nosso plugin eacute

restrito a modelos soacutelidos e portanto foram usados apenas estes modelos

soacutelidos para os testes

O modelo na Figura 29 que eacute um dos modelos disponibilizados no

PointShop [11] foi usado para mostrar o resultado das operaccedilotildees realizadas

pelo plugin implementado nesta dissertaccedilatildeo O modelo Igea eacute um modelo soacutelido

que conteacutem 134345 surfels

Resultados 62

Figura 29-Modelo do PointShop Igea

Para realizar as operaccedilotildees este modelo foi carregado na cena do

PointShop duas vezes e um deles colorido de vermelho As Figuras 30 31 32

mostram o resultado da operaccedilatildeo de uniatildeo interseccedilatildeo e diferenccedila

respectivamente Os nuacutemeros de surfels dos modelos resultantes satildeo mostrados

na Tabela 2

Resultados 63

Figura 30-Resultado da uniatildeo de duas Igeas

Figura 31-Resultado da interseccedilatildeo de duas Igeas

Resultados 64

Figura 32-Resultado da diferenccedila entre duas Igeas

Tabela 2-Nuacutemero de surfels dos modelos resultantes

Observamos que o nuacutemero de surfels dos modelos resultantes estaacute

coerente com as figuras dos seus modelos

Para avaliar o tempo de processamento das operaccedilotildees foram realizados

vaacuterios testes com o objetivo de obter uma meacutedia dos tempos de realizaccedilatildeo de

cada operaccedilatildeo Tambeacutem foram armazenados os tempos da criaccedilatildeo das duas

octrees e da classificaccedilatildeo de todos os surfels dos dois objetos (como dentro ou

fora do outro modelo) Estes testes foram feitos usando o modelo Igea A meacutedia

dos tempos de processamento foi calculada e os resultados satildeo mostrados na

Tabela 3 Verificamos que o maior tempo gasto eacute para criaccedilatildeo das octrees

Verificamos tambeacutem que este resultado apresentado eacute similar ao resultado

verificado empiricamente com o plugin de Pauly [3] Os tempos gastos para

realizar as operaccedilotildees satildeo similares e o maior tempo gasto no plugin de Pauly

tambeacutem eacute para inicializaccedilatildeo de suas estruturas de dados que incluem a kd-tree

Operaccedilatildeo Nuacutemero de surfels do modelo resultado

Uniatildeo 189715

Interseccedilatildeo 72225

Diferenccedila 134552

Resultados 65

Operaccedilatildeo Criaccedilatildeo das

Octrees (seg)

Classificaccedilatildeo

(seg)

Criaccedilatildeo do

resultado (seg)

Total (seg)

Uniatildeo 39375 1324 18925 7154

Interseccedilatildeo 38585 1585 09547 63982

Diferenccedila 399875 1504 1729 729475

Tabela 3- Meacutedia dos tempos de processamento para as operaccedilotildees com duas Igeas

Com o objetivo de expor melhor os resultados deste trabalho

apresentamos abaixo mais um teste das operaccedilotildees booleanas usando o nosso

plugin Os modelos usados para este segundo teste satildeo o Max Planck e o Male

ambos modelos soacutelidos disponibilizados no PointShop Estes modelos satildeo

mostrados nas figura 33 e 34

O primeiro Max Planck conteacutem 52809 surfels

Figura 33-Modelo do PointShop MaxPlanck

O segundo modelo abaixo Male conteacutem 148138 surfels

Resultados 66

Figura 34-Modelo do PointShop Male

As Figuras 353637 mostram o resultado da operaccedilatildeo de uniatildeo interseccedilatildeo

e diferenccedila respectivamente usando os dois modelos acima Podemos observar

pela figura 35 que o resultado da operaccedilatildeo de diferenccedila neste caso gerou um

modelo resultado com trecircs partes desconexas Os nuacutemeros de surfels de cada

modelo resultado satildeo mostrados na Tabela 5

Figura 35- Resultado da Uniatildeo do modelo Male com MaxPlanck

Resultados 67

Figura 36-Resultado da interseccedilatildeo do modelo Male com o MaxPlanck

Figura 37-Resultado da diferenccedila do modelo Male do modelo MaxPlanck

As meacutedias de tempos de processamento foram calculadas da mesma

forma que o primeiro teste com o modelo Igea acima apresentado Os

resultados satildeo mostrados na Tabela 4 Podemos observar que este teste

Resultados 68

apresenta tempos um pouco menores que o teste com o modelo Igea Isto se

deve ao fato de que o modelo MaxPlanck ser significativamente menor que o

modelo Igea MaxPlanck possui 52809 surfels e Igea conteacutem 134345 surfels

Operaccedilatildeo Criaccedilatildeo das

Octrees (seg)

Classificaccedilatildeo

(seg)

Criaccedilatildeo do

resultado (seg)

Total

(seg)

Uniatildeo 3012 1254 102 5285

Interseccedilatildeo 2985 0901 0861 4747

Diferenccedila 2965 0911 0791 4667

Tabela 4-Tempo de processamento das operaccedilotildees com os modelos MaxPlanck e Male

Operaccedilatildeo Nuacutemero de surfels do resultado

Uniatildeo 126532

Interseccedilatildeo 88414

Diferenccedila 77635

Tabela 5-Nuacutemero de surfels dos modelos resultados das operaccedilotildees com os modelos MaxPlanck e Male

Em seguida apresentaremos uma comparaccedilatildeo entre o nosso plugin e o

plugin de Pauly[3] e tambeacutem uma comparaccedilatildeo entre o meacutetodo de Adams e Dutreacute

[2] e o meacutetodo de Pauly [3]

62 Comparaccedilatildeo entre os dois meacutetodos que realizam operaccedilotildees booleanas

A comparaccedilatildeo entre os meacutetodos de Pauly[3] e de Adams e Dutreacute foi feita

em termos de tempo de processamento e em termos conceituais Em termos de

tempo de processamento comparamos o plugin de Pauly[3] com o nosso plugin

Em termos de tempo de processamento verifica-se empiricamente que os

dois meacutetodos apresentam tempos bastante similares Entretanto o tempo de

processamento do algoritmo aqui implementado ainda pode ser melhorado com

Resultados 69

o uso do meacutetodo TINN [19] que foi proposto em Adams[2] - para otimizar a

pesquisa do surfel mais proacuteximo a um ponto que estaacute localizado na regiatildeo de um

noacute que conteacutem surfels - veja seccedilatildeo 42 O uso deste meacutetodo natildeo foi

implementado para este trabalho e a sua implementaccedilatildeo melhoraria o tempo de

resposta do algoritmo Aleacutem disso o trabalho de Sara F Frisken [12] citado no

capiacutetulo 2 apresenta uma otimizaccedilatildeo no uso de octrees que pode ser

incorporada no algoritmo implementado neste trabalho

Em termos conceituais vamos fazer a comparaccedilatildeo do uso do que

chamamos aqui de Regra 2 do tratamento de interseccedilatildeo e do tratamento de

ldquoarestas vivasrdquo

Como vimos na seccedilatildeo 41 tanto o algoritmo implementado nesta

dissertaccedilatildeo baseado no trabalho de Adams e Dutreacute como o meacutetodo de Pauly

[3] parte do que chamamos aqui de Regra 2 para realizar operaccedilotildees booleanas

com pontos Mas cada um destes meacutetodos daacute um tratamento diferente para o

uso desta regra

O meacutetodo de Pauly usa a Regra 2 para classificaccedilatildeo de cada ponto ou de

cada surfel Para classificar um surfel de B sb como dentro ou fora de A eacute

encontrado o surfel de A sa mais proacuteximo a sb e sb eacute classificado a partir de sa

Para encontrar sa Pauly utiliza uma kd-tree Como esta pesquisa para encontrar

sa eacute cara (mesmo usando uma kd-tree) Pauly utiliza uma esfera que conteacutem

pontos com a mesma classificaccedilatildeo (seccedilatildeo 432) e diminui em 90 este nuacutemero

de pesquisas Pauly utiliza tambeacutem a representaccedilatildeo impliacutecita MLS (Moving Least

Squares) para casos em que a Regra 2 poderia falhar e para tratamento de

interseccedilotildees Entretanto o nuacutemero destes casos em que a Regra 2 poderia falhar

eacute muito pequeno E a representaccedilatildeo MLS natildeo eacute uma estrutura simples de ser

implementada Portanto natildeo encontramos vantagens em usar MLS para estes

casos O meacutetodo de Adams e Dutreacute natildeo trata estes casos e na praacutetica

apresenta resultados bastante satisfatoacuterios como foi mostrado Portanto

consideramos que valeria a pena fazer algum tratamento especial para estes

casos se fosse um procedimento simples Para a execuccedilatildeo do algoritmo de

Pauly o uso de MLS natildeo interfere significativamente porque a construccedilatildeo desta

representaccedilatildeo natildeo eacute feita somente para realizar operaccedilotildees booleanas Os testes

empiacutericos que fizemos com o algoritmo de Pauly natildeo incluem a construccedilatildeo desta

representaccedilatildeo

Aparentemente os dois algoritmos satildeo bastante parecidos um usa octrees

e o outro usa kd-tree As duas estruturas de dados satildeo simples e otimizam a

classificaccedilatildeo dos surfels de um modelo como dentro ou fora do outro modelo

Resultados 70

Mas existe uma diferenccedila conceitual entre dois que merece ser destacada O

algoritmo aqui implementado usa a Regra 2 para classificaccedilatildeo dos noacutes de uma

octree e armazena esta octree classificada (ver capiacutetulo 5) Assim na maioria dos

casos natildeo seraacute necessaacuterio encontrar o surfel mais proacuteximo para classificar um

ponto (ou um surfel) como fora ou dentro de um modelo Caso o ponto esteja em

uma aacuterea da octree classificada ele teraacute a classificaccedilatildeo dada agravequela aacuterea A

pesquisa ao surfel mais proacuteximo seraacute feita apenas nos casos em que o ponto a

ser classificado estaacute localizado entre os planos que subdividem um noacute cheio

O uso desta octree classificada levanta uma questatildeo que natildeo foi citada no

trabalho de Adams e Dutreacute que eacute a proximidade desta estrutura (armazenada)

de octree classificada com uma representaccedilatildeo volumeacutetrica do objeto Sendo

assim esta estrutura pode ser aproveitada para outras funccedilotildees aleacutem da

classificaccedilatildeo dos surfels Por exemplo podemos ter uma aproximaccedilatildeo do

volume de uma cena somando os volumes aproximados dos modelos que a

compotildeem Como o enfoque deste trabalho eacute operaccedilatildeo booleana natildeo vamos nos

aprofundar nesta questatildeo

Outra importante diferenccedila entre os dois trabalhos que jaacute foi explicada na

seccedilatildeo 432 eacute que o meacutetodo de Pauly aplica-se a modelos soacutelidos ou natildeo

soacutelidos enquanto que o meacutetodo de Adams e Dutreacute aplica-se somente a modelos

soacutelidos

Quanto ao tratamento de interseccedilatildeo em termos de visualizaccedilatildeo todos os

dois resolvem bem o problema O tratamento de interseccedilatildeo nos dois trabalhos

tambeacutem resolve o problema da validade da Regra 2 (ver seccedilatildeo 44) Entretanto

o tratamento de Adams e Dutreacute natildeo depende da renderizaccedilatildeo sendo portanto

mais portaacutevel Aleacutem disso uma desvantagem do meacutetodo de Pauly eacute o uso da

representaccedilatildeo impliacutecita MLS (ldquoMoving Least Squaresrdquo) do objeto para obter os

pontos exatamente na curva de interseccedilatildeo Esta representaccedilatildeo torna o

tratamento de interseccedilatildeo mais complexo e a vantagem apresentada natildeo eacute tatildeo

significativa para este tratamento de interseccedilatildeo

Conclusatildeo 71

7 Conclusatildeo

Concluiacutemos entatildeo que as escolhas de Adams e Dutreacute por usar uma

octree classificada e pelo tratamento dado agrave interseccedilatildeo satildeo mais abrangentes

que a escolha de Pauly E consideramos que quanto mais abrangente for uma

escolha conceitual mais resultados poderemos tirar dela No caso de Adams e

Dutreacute eles estendem o problema de classificar um ponto para classificar todo o

modelo Como foi citado ele quase fornece uma representaccedilatildeo volumeacutetrica do

modelo Esta aproximada representaccedilatildeo volumeacutetrica pode nos fornecer outras

informaccedilotildees como por exemplo o volume aproximado do modelo

Aleacutem disso o uso da representaccedilatildeo impliacutecita MLS no meacutetodo de Pauly cria

uma complexidade a mais para o meacutetodo sem apresentar vantagens para a

realizaccedilatildeo de operaccedilotildees booleanas que eacute o nosso enfoque

Logo podemos dizer que o meacutetodo de Adams e Dutreacute apresenta as

seguintes vantagens em relaccedilatildeo ao de Pauly

- a estrutura de octree classificada aleacutem de ser usada para classificaccedilatildeo

fornece informaccedilotildees adicionais como volume aproximado do objeto

- o tempo de processamento no meacutetodo de Adams e Dutreacute tende a ser

melhor que no meacutetodo de Pauly se implementadas as melhorias acima citadas e

se colocaacutessemos em consideraccedilatildeo o uso da representaccedilatildeo impliacutecita MLS

(Moving Least Squares)

- o tratamento de interseccedilatildeo de Adams e Dutreacute apresenta a vantagem da

portabilidade ou seja iraacute funcionar independente do algoritmo de renderizaccedilatildeo

utilizado

E as vantagens do meacutetodo de Pauly em relaccedilatildeo ao de Adams e Dutreacute

- a colocaccedilatildeo de surfels exatamente na curva de interseccedilatildeo

- a possibilidade de trabalhar com modelos soacutelidos ou natildeo soacutelidos

E finalizando concluiacutemos que o estudo relatado nesta dissertaccedilatildeo foi

importante por

- fornecer um breve estudo sobre modelagem por pontos uma nova e

promissora aacuterea dentro da computaccedilatildeo graacutefica

Conclusatildeo 72

- por apresentar uma avaliaccedilatildeo dos dois trabalhos existentes sobre

operaccedilotildees booleanas com pontos encontrando as vantagens de cada um

e levantando questotildees que natildeo tinham sido citadas nos trabalhos originais

- por propor e implementar melhorias ao trabalho de Adams e Dutreacute

71 Trabalhos Futuros

Nossa implementaccedilatildeo pode ser ainda evoluiacuteda com as propostas

apresentadas na seccedilatildeo 62 Como observamos o tempo de processamento do

algoritmo aqui implementado ainda pode ser melhorado com o uso do meacutetodo

TINN [19] - que foi proposto em Adams[2] - para otimizar a pesquisa do surfel

mais proacuteximo a um ponto que estaacute localizado na regiatildeo de um noacute que conteacutem

surfels Aleacutem disso o trabalho Simple and Efficient Trasversal Methods for

Quadtrees and Octrees de Sara F Frisken [12] citado no capiacutetulo 2 apresenta

uma otimizaccedilatildeo no uso de octrees Outra proposta para melhorar o tempo de

processamento do algoritmo aqui implementado eacute usar a forma de trabalhar com

octrees apresentada neste trabalho

O trabalho de Adams e Dutreacute [2] eacute aplicado apenas a objetos soacutelidos O

nosso plugin portanto aplica-se somente a este tipo de objeto Jaacute o trabalho de

Pauly[3] eacute aplicado tambeacutem a modelos natildeo soacutelidos Apresentamos como

proposta a um trabalho futuro a extensatildeo do algoritmo aqui implementado para

modelos natildeo soacutelidos O surfel pode conter uma informaccedilatildeo adicional que indica

se ele estaacute delimitando um volume ou natildeo Assim pode-se ter um modelo com

ldquopartes soacutelidasrdquo e ldquopartes natildeo soacutelidasrdquo Por exemplo a uniatildeo de um plano com

uma esfera poderia resultar numa esfera com ldquoabasrdquo (seriam as partes do plano

que estariam fora da esfera) O modelo resultado teria uma parte correspondente

a um espaccedilo 3D (esfera) e outra parte que seria uma superfiacutecie 2D posicionada

no espaccedilo 3D sem delimitar algum volume (abas)

Muitos trabalhos podem ser desenvolvidos aplicando-se o modelo por

pontos em animaccedilatildeo jogos visualizaccedilatildeo de terrenos criaccedilatildeo de protoacutetipos etc

considerando-se a eficiecircncia e simplicidade do modelo E mais especificamente

as operaccedilotildees booleanas com pontos podem ser aplicadas para criaccedilatildeo de

cenaacuterios testes de colisotildees e nestes casos a representaccedilatildeo usando octrees

pode ser mais explorada considerando-se o seu potencial de representaccedilatildeo

volumeacutetrica de um objeto

Referecircncias Bibliograacuteficas 73

8 Referecircncias Bibliograacuteficas

[1] MAumlNTYLAuml M An Introduction to Solid Modeling Computer Science Press 1988

[2] ADAMS B DUTREacute P Interactive Boolean Operations on Surfel-

Bounded Solids Proceedings of SIGGRAPH 2003 San Diego USA 2003

[3] PAULY M KEISER R KOBBELT L GROSS M Shape Modeling

with Point-Sampled Geometry SIGGRAPH 2003 Computer Graphics

Proceedings Annual Conference Series ACM Press ACM SIGGRAPH 2003

[4] LEVOY M WHITTED T The Use of Points as Display Primitives

Technical Report TR 85-022 The University of North Carolina at Chapel Hill

Department of Computer Science 1985

[5] PFISTER H ZWICKER M VAN BAAR J GROSS M 2000 Surfels

Surface Elements as Rendering Primitives SIGGRAPH 2000 pp 335ndash342 New

Orleans LA July 23-28 2000

[6] ZWICKER M PFISTER H VAN BAAR J GROSS M Surface

Splatting SIGGRAPH 2001

[7] PAULY M KOBBELT L GROSS M Multiresolution Modeling of

Point-Sampled Geometry CS Techinical Report 378 September 16 2002

[8] CURLESS B New Methods for Surface Reconstruction from Range Images PhD thesis Stanford University 1997

[9] RUSINKIEWICZ S Real-time Acquisition and Rendering of Large 3D Models PhD thesis Stanford University 2001

Referecircncias Bibliograacuteficas 74

[10] AMENTA N BERN M KAMVYSSELIS M A new Voronoi-Based

Surface Reconstruction Algorithm SIGGRAPH 98 Conference proceedings pp

415-421 New York 1998

[11] ZWICKER M PAULY M KNOLL O GROSS M Pointshop 3D an

Interactive System for Point-Based Surface Editing Proceedings of SIGGRAPH 2002 San Antonio TX July 2002

[12] FRISKEN S PERRY R Simple and Efficient Traversal Methods for

Quadtrees and Octrees Journal of Graphics Tools Vol 7 Issue 3 May 2003

[13] CORREcircA W T OLIVEIRA M M Silva C T Wang J

Modeling and Rendering of Real Environments

Revista de Informaacutetica Teoacuterica e Aplicada (Brazilian Journal of Theoretic and Applied Computing) 9(2)127-156 2002

[14] DAVIS J MARSCHNER S GARR M LEVOY M Filling Holes in

Complex Surfaces Using Volumetric Diffusion First International Symposium on 3D Data Processing Visualization Transmission June 2002

[15] RAumlSAumlNEN J Surface Splatting Theory Extensions and Implementation Masterrsquos Thesis Dept of Computer Science Helsinki

University of Technology May 28 2002

[16] PAULY M Point Primitives for Interactive Modeling and Processing of 3D Geometry PhD thesis Federal Institute of Technology (ETH)

of Zurich 2003

[17] HOPPE H DEROSE T DUCHAMP T MCDONALD J

STUELZLE W Surface Reconstruction from Unorganized Points Computer Graphics 26(2)71ndash78 July 1992

[18] ALEXA M BEHR J COHEN-OR D FLEISHMAN S LEVIN D

SILVA C T Point Set Surfaces IEEE Visualization 2001 pp 21ndash28 October

2001

Referecircncias Bibliograacuteficas 75

[19] GREENSPAN M GODIN G TALBOT J Acceleration of Binning

Nearest Neighbor Methods Proceedings of Vision Interface 2000 pp 337-

344

[20] MENCL R Reconstruction of Surfaces from Unorganized Three-Dimensional Point Clouds Dissertation Dortmund Univ 2001

[21] KRIVANEK J Representing and Rendering Surfaces With Points

httpciteseernjneccomkrivanek03representinghtml Acesso em 30 jul

2003

[22] KRISTJANSSON ET AL Approximate Boolean Operations on Free-

form Solids Proceedings of SIGGRAPH 01 2001

15

1 Introduccedilatildeo

O mundo digital estaacute conquistando cada vez mais espaccedilo nos meios de

comunicaccedilatildeo Sons imagens viacutedeos digitais satildeo miacutedias muito usadas em

diversas aacutereas como entretenimento medicina desenho industrial engenharia

arquitetura educaccedilatildeo arte ciecircncia entre outras Podemos citar alguns

exemplos dentro destas aacutereas como jogos efeitos especiais filmes digitais

visualizaccedilatildeo cientiacutefica viacutedeo-conferecircncia comeacutercio na internet Nos uacuteltimos anos

verificamos que o modelo 3D vem se tornando um novo meio de comunicaccedilatildeo

digital Com o desenvolvimento da tecnologia de aquisiccedilatildeo e do processamento

de modelos 3D ele vem sendo cada vez mais utilizado Jogos 3D animaccedilotildees

aplicaccedilotildees em realidade virtual visualizaccedilatildeo cientiacutefica aplicaccedilotildees para aacuterea

meacutedica e odontoloacutegica criaccedilatildeo de reacuteplicas para estudo e preservaccedilatildeo do

patrimocircnio histoacuterico sistemas CADCAM cataacutelogos de modelos 3D na Web para

comercializaccedilatildeo criaccedilatildeo de protoacutetipos para arquitetura engenharia satildeo alguns

exemplos de aplicaccedilotildees que usam modelos 3D

A aacuterea que estuda a representaccedilatildeo de um modelo 3D no computador eacute

chamada de modelagem em computaccedilatildeo graacutefica Existem diversos tipos de

modelagem para as diversas aplicaccedilotildees que usam um modelo 3D como por

exemplo representaccedilotildees poligonais como malhas triangulares que satildeo

geralmente usadas na aacuterea de entretenimento Este trabalho explora um novo

tipo de modelagem a modelagem por pontos

A modelagem por pontos comeccedilou a ser largamente explorada nesta

deacutecada e trata-se de uma aacuterea muito promissora em computaccedilatildeo graacutefica dadas

agraves vaacuterias e grandes vantagens em relaccedilatildeo aos outros tipos de representaccedilatildeo

como esquema de representaccedilatildeo CSG (Constructive Solid Geometry) [1] ou

malhas poligonais Dentre as principais vantagens podemos citar grande

simplicidade e flexibilidade boa performance robustez Mas a principal

vantagem desta modelagem que foi o fator que impulsionou o seu grande

desenvolvimento nesta deacutecada eacute que esta modelagem por pontos eacute a melhor

opccedilatildeo para tratar os dados de saiacuteda de equipamentos de aquisiccedilatildeo de modelos

3D O uso destes equipamentos tem aumentado muito nesta deacutecada A

16

tecnologia destes equipamentos tem progredido muito e eles tecircm se tornado

mais baratos A tendecircncia eacute que o uso destes equipamentos se torne o mais

utilizado meio de obtenccedilatildeo de modelos 3D Isto porque construir modelos 3D

bastante detalhados por meio de um software de modelagem eacute muito trabalhoso

O processo de aquisiccedilatildeo de modelos por meio destes equipamentos automatiza

este processo de construccedilatildeo

No trabalho com modelos 3D frequumlentemente satildeo usadas as operaccedilotildees

booleanas que satildeo operaccedilotildees de uniatildeo interseccedilatildeo ou diferenccedila No esquema

de representaccedilatildeo CSG estas operaccedilotildees fazem parte da representaccedilatildeo do

objeto Estas operaccedilotildees tambeacutem podem ser usadas para criar novos modelos ou

para alteraacute-los Na maioria dos tipos de representaccedilatildeo de objetos 3D estas

operaccedilotildees satildeo bastante complexas

A simplicidade da representaccedilatildeo por pontos permite que as operaccedilotildees

booleanas sejam realizadas com facilidade se compararmos com a realizaccedilatildeo

destas operaccedilotildees em outros tipos de representaccedilatildeo como malhas poligonais

Motivada pelas vantagens desta modelagem e pela utilidade destas operaccedilotildees

esta dissertaccedilatildeo apresenta uma introduccedilatildeo geral de modelagem por pontos e

trabalha mais especificamente com operaccedilotildees booleanas em objetos

modelados por pontos Dois trabalhos que exploram as operaccedilotildees booleanas na

modelagem por pontos seratildeo abordados o trabalho de Adams e Dutreacute [2] e o

trabalho de Pauly et al [3] O presente trabalho implementa o meacutetodo de Adams

e Dutreacute com algumas melhorias e faz uma comparaccedilatildeo entre o meacutetodo de Pauly

[3] e o meacutetodo de Adams e Dutreacute [2] com nossas melhorias

Como contribuiccedilotildees dadas por este trabalho apresentamos

- um estudo sobre modelagem por pontos

- um estudo sobre operaccedilotildees booleanas com pontos

- proposta de melhorias ao algoritmo proposto por Adams e Dutreacute [2]

- comparaccedilatildeo dos dois meacutetodos propostos para realizar estas operaccedilotildees

meacutetodo de Pauly et al [3] e de Adams e Dutreacute [2]

Este trabalho vem apresentado nesta dissertaccedilatildeo organizada em sete

capiacutetulos conforme descrito resumidamente a seguir

O capiacutetulo 2 cita alguns trabalhos sobre modelagem por pontos que estatildeo

relacionados a este trabalho

O capiacutetulo 3 apresenta uma visatildeo geral do modelo por pontos e explica

melhor alguns trabalhos citados no capiacutetulo 2

17

O capiacutetulo 4 apresenta operaccedilotildees booleanas com pontos e os dois

meacutetodos para realizaacute-las na modelagem por pontos meacutetodo de Pauly et al [3] e

de Adams e Dutreacute [2]

O capiacutetulo 5 apresenta algumas melhorias ao algoritmo de Adams e Dutreacute

[2] e a nossa implementaccedilatildeo deste algoritmo

O capiacutetulo 6 traz os resultados obtidos

E finalmente o capiacutetulo 7 encerra o trabalho com uma conclusatildeo e com

possiacuteveis trabalhos futuros

Trabalhos relacionados 18

2 Trabalhos relacionados

O primeiro pesquisador a propor o uso de pontos como primitiva graacutefica foi

Levoy em [4] Ele propotildee o uso de pontos como primitiva de renderizaccedilatildeo e

discute a conversatildeo dos outros modelos para o modelo por pontos

Nos uacuteltimos anos vaacuterios trabalhos importantes tecircm sido realizados na aacuterea

em diversos segmentos em visualizaccedilatildeo podemos destacar os trabalhos de

Pfister [5] e de Zwicker [6] que usam pontos como primitiva de renderizaccedilatildeo e

com resultados praacuteticos interativos muito bons

Em [7] Pauly et al propotildeem algoritmos para modelagem multi-resoluccedilatildeo

em modelos por pontos

Os trabalhos de Curless [8] e Rusinkiewicz [9] discutem os meacutetodos de

aquisiccedilatildeo que consistem em obter uma amostragem de pontos da superfiacutecie do

objeto real por meio de equipamentos como por exemplo o scanner 3D

Nas operaccedilotildees booleanas a interseccedilatildeo das superfiacutecies dos modelos

iniciais seraacute parte do modelo resultado e para ser representada corretamente

precisa ser reconstruiacuteda A reconstruccedilatildeo da superfiacutecie tambeacutem eacute usada na

visualizaccedilatildeo de um modelo Um trabalho significativo na aacuterea de reconstruccedilatildeo de

superfiacutecies estaacute em [10] de N Amenta etal Este trabalho apresenta uma

soluccedilatildeo praacutetica com garantias teoacutericas para este problema e uma heuriacutestica para

o tratamento de arestas vivas a questatildeo mais difiacutecil desta aacuterea Um exemplo

de uma aresta viva eacute o encontro de dois planos natildeo coincidentes

Frequumlentemente a interseccedilatildeo citada acima (interseccedilatildeo entre os modelos iniciais)

gera uma aresta viva (seccedilatildeo 4223)

O algoritmo aqui implementado eacute um plugin para o software PointShop 3D

[11] de Zwicker et al software de ediccedilatildeo de modelos com pontos O PointShop

tem seu coacutedigo aberto documentaccedilatildeo e trabalha com plugins Ele permite a

visualizaccedilatildeo e ediccedilatildeo interativa do modelo por pontos Eacute o uacutenico software livre

disponiacutevel com estas caracteriacutesticas Esta implementaccedilatildeo na forma de um plugin

facilitou muito o trabalho pois natildeo foi necessaacuterio implementar a visualizaccedilatildeo do

modelo 3D Aleacutem disso o Pointshop conteacutem tambeacutem um plugin com a

implementaccedilatildeo do meacutetodo de Pauly et al [3] discutido nesta dissertaccedilatildeo A

Trabalhos relacionados 19

execuccedilatildeo dos dois plugins que realizam operaccedilotildees booleanas pocircde ser

comparada

Os trabalhos aqui discutidos satildeo o de Bart Adams e Philip Dutreacute [2] e de

Pauly et al[3] que apresentam meacutetodos diferentes para realizaccedilatildeo de

operaccedilotildees booleanas com pontos Adams e Dutreacute utilizam octrees [1] e Pauly

Kd-Tree [16] e MLS (Moving Least Squares) [18] Estes algoritmos satildeo

discutidos no capiacutetulo 4

O trabalho de Sara F Frisken [12] apresenta um algoritmo para realizar

operaccedilotildees em octree de forma mais eficiente Como estas operaccedilotildees estatildeo

presentes em todo o nosso algoritmo este trabalho certamente oferece uma

forma de otimizaccedilatildeo mas que natildeo foi implementada

Modelagem por Pontos 20

3 Modelagem por Pontos

A computaccedilatildeo graacutefica natildeo lida diretamente com o objeto ou com o

fenocircmeno fiacutesico lida com modelos graacuteficos ou geomeacutetricos Modelos graacuteficos

satildeo estruturas computacionais (abstratas) que capturam aspectos de objetos de

interesse para uma aplicaccedilatildeo como forma cor textura etc Se apenas a forma

ou a geometria do objeto eacute relevante temos modelos geomeacutetricos

Estes modelos satildeo usados em vaacuterias aplicaccedilotildees em computaccedilatildeo graacutefica

como roboacutetica visatildeo computacional simulaccedilotildees realistas anaacutelises estruturais

prototipagem projeto e manufatura de produtos eletromecacircnicos arquitetura

Existem vaacuterios tipos de modelos graacuteficos Esta dissertaccedilatildeo trata de um tipo

muito em voga atualmente que eacute o modelo por pontos

Neste capiacutetulo daremos uma visatildeo geral do modelo por pontos

Introduziremos este modelo e seu processo de criaccedilatildeo Seraacute apresentado o que

eacute um modelo por pontos e o conceito de surfel [5] introduziremos os tipos de

distribuiccedilatildeo dos surfels uma estruturaccedilatildeo aplicada a estes surfels e dados que

eles podem conter As quatro proacuteximas subseccedilotildees (Ideacuteia da representaccedilatildeo

Tipos de distribuiccedilatildeo dos surfels Estrutura de multi-resoluccedilatildeo e Dados que um

surfel pode conter) tratam destes toacutepicos Um modelo por pontos pode ser criado

a partir da conversatildeo de outros tipos de modelagem NURBS por exemplo para

o modelo por pontos ou a partir de um processo de aquisiccedilatildeo Esta uacuteltima forma

de criaccedilatildeo pode ser dividida em duas etapas aquisiccedilatildeo do modelo reconstruccedilatildeo

da superfiacutecie As subseccedilotildees 35 e 36 tratam destas duas etapas

respectivamente A ediccedilatildeo do modelo 3D eacute tratada brevemente na subseccedilatildeo 38

e a sua visualizaccedilatildeo na subseccedilatildeo 37 A apresentaccedilatildeo do processo de aquisiccedilatildeo

(seccedilatildeo 35) eacute baseada no tutorial de W T Correcirca [13] A etapa de ediccedilatildeo 3D

consiste em operaccedilotildees para mudanccedila da cor textura ou forma do modelo Para

esta etapa enfocaremos as operaccedilotildees booleanas que modificam a forma do

modelo ou criam novos modelos

31 Ideacuteia da Representaccedilatildeo

Modelagem por Pontos 21

Figura 1 [20] -Um modelo por pontos e sua visualizaccedilatildeo

Um modelo por pontos representa um objeto atraveacutes de seu contorno Eacute

um tipo de representaccedilatildeo B-Rep (Boundary Representation) [1] Este contorno

consiste em uma superfiacutecie 2D posicionada no espaccedilo 3D Na modelagem por

pontos ela eacute representada por um conjunto de pontos 3D que satildeo uma

amostragem dos (infinitos) pontos que formam a superfiacutecie contiacutenua (Figura 1) A

amostragem pode ser obtida de diversas maneiras Uma delas o processo de

aquisiccedilatildeo progrediu muito nos uacuteltimos anos e este foi um dos fatores que tornou

muito importante o desenvolvimento deste modelo por pontos Outra forma de

gerar amostragem eacute fazer uma conversatildeo de um outro modelo NURBS por

exemplo para o modelo por pontos

Estes pontos satildeo denominados surfels e podem conter aleacutem da posiccedilatildeo

3D outras informaccedilotildees como normal agrave superfiacutecie cor textura raio de alcance A

Figura 2 mostra um conjunto de surfels representando uma superfiacutecie No surfel

em destaque podemos ver o raio de alcance rt e a normal n agrave superfiacutecie

Modelagem por Pontos 22

Figura 2 [5] A superfiacutecie modelada por surfels O surfel em destaque tem raio de alcance

rt e normal n

Como o modelo natildeo armazena qualquer informaccedilatildeo sobre a conexatildeo entre

os surfels a reconstruccedilatildeo da superfiacutecie contiacutenua a partir dele pode exigir

algumas restriccedilotildees na amostragem (seccedilatildeo 36)

32 Tipos de distribuiccedilatildeo dos surfels

Existem dois tipos de distribuiccedilatildeo dos surfels na modelagem por pontos

uniforme e natildeo uniforme Na distribuiccedilatildeo uniforme cada um deles descreve

partes de mesmo tamanho da superfiacutecie Na natildeo uniforme cada surfel armazena

a informaccedilatildeo de seu raio de alcance que eacute o raio do disco que este surfel

representa

A distribuiccedilatildeo uniforme tem a vantagem de ser mais simples e natildeo ser

necessaacuterio armazenar o raio de alcance do disco mas ela apresenta a seguinte

desvantagem se o modelo possui regiotildees com muito detalhe e regiotildees com

pouco detalhe ele teraacute que manter uma alta densidade mesmo nas regiotildees de

poucos detalhes

33 Estrutura de multi-resoluccedilatildeo

Um objeto pode ser representado em vaacuterios niacuteveis de detalhes Por

exemplo podemos representar um mesmo objeto com vaacuterias resoluccedilotildees

diferentes Este conceito pode ser aplicado ao modelo por pontos Desta forma

um modelo eacute representado por uma estrutura hieraacuterquica (uma aacutervore por

exemplo) onde em cada niacutevel temos uma representaccedilatildeo do objeto em uma

Modelagem por Pontos 23

determinada resoluccedilatildeo Em [7] Pauly et al propotildeem algoritmos para modelagem

multi-resoluccedilatildeo em modelos por pontos

34 Dados que um surfel pode conter

Cada surfel armazena sua localizaccedilatildeo e pode tambeacutem conter informaccedilotildees

como a cor ou coordenadas de textura Se a amostragem natildeo for uniforme o

surfel conteacutem a informaccedilatildeo do raio de alcance que eacute o raio de um disco cujo

centro eacute a posiccedilatildeo do surfel O surfel pode tambeacutem conter o vetor normal agrave

superfiacutecie e assim o surfel pode ser visto como um disco orientado A superfiacutecie

tambeacutem pode ser vista como uma superfiacutecie orientada

35 Aquisiccedilatildeo do modelo

Esta introduccedilatildeo sobre aquisiccedilatildeo do modelo aqui apresentada baseia-se no

tutorial de W T Correcirca [13]

O processo de aquisiccedilatildeo consiste em obter uma amostragem de pontos da

superfiacutecie do objeto real por meio de equipamentos como por exemplo o

scanner 3D Eacute uma aacuterea que tem progredido muito nos uacuteltimos anos A

resoluccedilatildeo e a precisatildeo dos equipamentos de aquisiccedilatildeo tecircm melhorado bastante

e o custo deles reduzido de forma significativa Isso possibilita que a aquisiccedilatildeo

de modelos 3D seja usada em aplicaccedilotildees de desenho industrial arte ou em

produtos para a aacuterea de entretenimento O consequumlente maior uso destes

equipamentos criou a necessidade de avanccedilos no tratamento dos seus dados de

saiacuteda que satildeo um conjunto de pontos

Este processo pode ser dividido em trecircs partes [13] aquisiccedilatildeo da

geometria aquisiccedilatildeo da textura e correccedilatildeo de falhas da aquisiccedilatildeo

351 Aquisiccedilatildeo da geometria

Existem vaacuterios meacutetodos de aquisiccedilatildeo da geometria Curless [8] e

Rusinkiewicz [9] classificaram estes meacutetodos em trecircs categorias meacutetodos por

contato transmissatildeo e reflexatildeo

O meacutetodo por contato toca a superfiacutecie do objeto com uma sonda e grava

a posiccedilatildeo Este meacutetodo do qual o Coordinate Measuring Machines (CMMs) eacute

Modelagem por Pontos 24

um exemplo eacute bastante preciso mas eacute muito lento e natildeo adequado a objetos

fraacutegeis

Meacutetodos por transmissatildeo projetam ondas de energia sobre o objeto e

gravam a energia transmitida Por exemplo tomografia computadorizada que

projeta ondas de raio-x sobre o objeto e mede a quantidade de radiaccedilatildeo que

passa atraveacutes dele O resultado eacute um modelo geomeacutetrico de alta resoluccedilatildeo Este

meacutetodo pode captar detalhes do objeto que natildeo satildeo visiacuteveis de fora do objeto

Por outro lado ele eacute caro e arriscado

Meacutetodos por reflexatildeo podem ser oacuteticos ou natildeo-oacuteticos Natildeo-oacuteticos incluem

radares que medem a distacircncia a um objeto enviando microondas ou ondas

sonoras para o objeto e gravando o tempo que a onda gasta para retornar Estes

meacutetodos natildeo satildeo muito precisos nem raacutepidos

Meacutetodos por reflexatildeo oacuteticos podem ser passivos ou ativos Meacutetodos oacuteticos

passivos natildeo interagem com o objeto e incluem teacutecnicas de visatildeo computacional

como shape-from-shading stereo triangulation optical flow e meacutetodos de

decomposiccedilatildeo para video streams Estes meacutetodos raramente constroem

modelos precisos e sua maior aplicaccedilatildeo eacute em reconhecimento de objetos

Meacutetodos oacuteticos ativos projetam luz sobre um objeto de maneira estruturada

e atraveacutes da reflexatildeo da luz determinam a forma do objeto Exemplos satildeo depth

from defocus photometric stereo projected-light triangulation time of flight

Meacutetodos por reflexatildeo oacuteticos ativos tecircm muitas vantagens sobre os passivos tecircm

um melhor desempenho quando natildeo existe textura satildeo mais baratos e mais

robustos e produzem uma amostragem precisa

352 Aquisiccedilatildeo da textura

Idealmente noacutes gostariacuteamos de ter uma completa descriccedilatildeo de como um

ponto da superfiacutecie reflete a luz dependendo do vetor normal a esta superfiacutecie

da direccedilatildeo do raio de luz incidente e do comprimento de onda Tal descriccedilatildeo eacute

conhecida como Bidirectional Reflectance Distribution Function (BRDF) Medir

BRDFs com precisatildeo eacute um problema difiacutecil

Pode-se ter uma aproximaccedilatildeo da aquisiccedilatildeo de cores do objeto tirando

fotos dele O objeto eacute fotografado e a cor de cada ponto da superfiacutecie eacute obtida a

partir de um mapeamento das fotos 2D para o modelo 3D Para mapear a

fotografia agrave geometria precisamos conhecer os paracircmetros de projeccedilatildeo da

cacircmera e a sua posiccedilatildeo no momento em que a foto foi batida Para cada ponto

Modelagem por Pontos 25

3D do modelo encontramos sua projeccedilatildeo 2D no plano da cacircmera e associamos

a cor do pixel nesta projeccedilatildeo agrave cor do ponto 3D

353 Correccedilatildeo das falhas da aquisiccedilatildeo

O processo de aquisiccedilatildeo deixa frequumlentemente buracos no modelo devido

a ruiacutedos no processo ou agrave impossibilidade de aquisiccedilatildeo de determinadas partes

de uma superfiacutecie Estes buracos devem ser corrigidos Pode-se usar por

exemplo um filtro de passa-baixa para remoccedilatildeo de ruiacutedos [14] Meacutetodos de

difusatildeo geomeacutetrica tecircm sido aplicados para preenchimento dos buracos [15] A

correccedilatildeo das falhas eacute tida como um preacute-processamento para o processo de

reconstruccedilatildeo da superfiacutecie contiacutenua (seccedilatildeo 36)

36 Reconstruccedilatildeo da superfiacutecie (contiacutenua) a partir do modelo (discreto)

A reconstruccedilatildeo da superfiacutecie contiacutenua consiste em a partir de um conjunto

natildeo estruturado de pontos obter um modelo contiacutenuo desta superfiacutecie Esta

reconstruccedilatildeo eacute frequumlentemente exigida para um modelo por pontos Na sua

visualizaccedilatildeo podemos desejar focar qualquer parte do modelo Para fazermos

operaccedilotildees booleanas com os modelos podemos querer determinar exatamente

onde eles se intersectam

No entanto natildeo precisamos ter necessariamente a representaccedilatildeo contiacutenua

de todo o objeto ao mesmo tempo A reconstruccedilatildeo desta superfiacutecie a partir dos

pontos amostrados pode ser feita no momento que for mais adequado agrave

aplicaccedilatildeo Na visualizaccedilatildeo a reconstruccedilatildeo pode ser feita na projeccedilatildeo 2D da

parte do modelo em foco (seccedilatildeo 37) Para operaccedilotildees booleanas pode-se

reconstruir apenas a aacuterea da interseccedilatildeo dos modelos

Este processo de reconstruccedilatildeo de superfiacutecie tem sido muito estudado em

modelagem geomeacutetrica e geometria computacional nos uacuteltimos anos O trabalho

mais importante desta aacuterea eacute o trabalho de Amenta et al [10] que foi a primeira

soluccedilatildeo com garantias demonstraacuteveis para este problema de reconstruccedilatildeo de

superfiacutecie A seccedilatildeo 44 explica estes conceitos e o trabalho [10] Este trabalho

demonstra que teoricamente para que a reconstruccedilatildeo da superfiacutecie (contiacutenua) a

partir das amostras seja correta a amostragem deve ser adequada Ele usa o

conceito de ldquoEixo Medialrdquo para definir o que eacute uma amostragem adequada

Modelagem por Pontos 26

(seccedilatildeo 44) Em duas dimensotildees os veacutertices de Voronoi de uma amostragem

densa aproximam o ldquoEixo Medialrdquo da amostragem

Por meio deste conceito de Eixo Medial [1016] obtecircm-se paracircmetros

teoacutericos para a definiccedilatildeo de amostragem adequada e baseado neste conceito

o algoritmo apresentado em [10] traz uma soluccedilatildeo praacutetica para o problema

obtendo uma malha poligonal a partir do modelo por pontos

O PointShop 3D [11] software de ediccedilatildeo de modelos por pontos utilizado

nesta pesquisa faz quando necessaacuterio a reconstruccedilatildeo da superfiacutecie Para isso

o PointShop 3D explora a vizinhanccedila local (surfels vizinhos de acordo com suas

posiccedilotildees) Ele usa o conceito de Eixo Medial para justificar seu meacutetodo de

reconstruccedilatildeo da superfiacutecie que na praacutetica apresenta resultados bastante

satisfatoacuterios apesar de teoricamente natildeo ter garantias [16]

37 Visualizaccedilatildeo do modelo

A primeira abordagem para visualizaccedilatildeo de um modelo por pontos foi

construir uma malha de poliacutegonos a partir dos surfels e renderizaacute-la Mas a

construccedilatildeo de malhas a partir dos surfels eacute um processo muito caro e lento

principalmente para modelos complexos Na tentativa de obter uma visualizaccedilatildeo

interativa do modelo por pontos estatildeo sendo estudadas teacutecnicas que utilizam

surfels como primitiva de visualizaccedilatildeo A ideacuteia foi apresentada inicialmente por

Levoy [4]

Figura 3 [21] -Modelo por pontos e sua renderizaccedilatildeo usando Surface Splatting

Modelagem por Pontos 27

O objetivo da renderizaccedilatildeo a partir dos surfels eacute projetaacute-los na tela e

reconstruir as superfiacutecies de forma contiacutenua sem buracos Para que esta

renderizaccedilatildeo seja amplamente utilizada deve-se ter cuidado com o uso de

memoacuteria e com a qualidade da imagem gerada Teacutecnicas recentes como Surface

Splatting [6] faz a renderizaccedilatildeo interativamente com qualidade (Figura 3)

comparada a outros meacutetodos de renderizaccedilatildeo como Image Based Rendering

Em geral a visualizaccedilatildeo do modelo por pontos pode ser dividida nas seguintes

etapas

- warping - projeccedilatildeo em perspectiva de cada ponto do modelo na tela

processo anaacutelogo agrave projeccedilatildeo de veacutertices dos triacircngulos na malha triangular Se

um pixel da tela estiver contido em mais de uma projeccedilatildeo de surfels (vizinhos)

ou seja mais de um ponto cobre este pixel os atributos destes pontos seratildeo

combinados

- shading por ponto - o processo de shading eacute realizado para cada ponto

visiacutevel (os pontos que natildeo satildeo vistos do ponto de vista em questatildeo devem ser

retirados) Qualquer modelo local de shading pode ser aplicado Uma nova

teacutecnica foi proposta em Surface Splatting [6]

- reconstruccedilatildeo da imagem ndash pixels que natildeo ldquoreceberamrdquo projeccedilatildeo de

nenhum ponto formam buracos na imagem Esta imagem deve ser reconstruiacuteda

sem buracos sem aliasing e as superfiacutecies devem ser reconstruiacutedas de forma

contiacutenua e devem ser ldquosuavizadasrdquo (smooth surface)

Os algoritmos de renderizaccedilatildeo por pontos podem tratar a questatildeo de

buracos na visualizaccedilatildeo de trecircs formas [17]

Detecccedilatildeo e preenchimento de buracos no espaccedilo da tela pontos satildeo

projetados na tela e pixels que natildeo receberam pontos satildeo detectados (buracos)

Para preencher estes buracos que natildeo receberam pontos eacute feita uma

interpolaccedilatildeo entre os vizinhos

Geraccedilatildeo de mais pontos a superfiacutecie eacute interpolada no espaccedilo do modelo

para garantir que todos os pixels recebam pelo menos a projeccedilatildeo de um ponto

Splatting um surfel eacute projetado na tela e sua contribuiccedilatildeo eacute espalhada de

forma diferenciada para os pixels vizinhos Agrave medida em que o vizinho se torna

mais distante a contribuiccedilatildeo do surfel diminui

Raumlsaumlnen faz uma analogia do processo de renderizaccedilatildeo proposto em [6]

com o mapeamento de textura [15] No mapeamento de textura para um

determinado pixel da tela satildeo encontrados os pontos da textura que afetam este

Modelagem por Pontos 28

pixel Num sentido inverso em splatting para um determinado surfel (que

representa a textura) satildeo encontrados os pixels da tela que este surfel afeta

38 Ediccedilatildeo do modelo

Ediccedilatildeo de um modelo 3D consiste em operaccedilotildees que modificam

caracteriacutesticas deste modelo como cor textura forma ou criam novos modelos

O software PointShop 3D [11] software de ediccedilatildeo de modelos por pontos 3D

implementa vaacuterias destas operaccedilotildees (ver seccedilatildeo 52)

Para modificar a forma de um modelo ou criar um novo satildeo muito usadas

as operaccedilotildees booleanas que eacute o nosso enfoque nesta dissertaccedilatildeo Na

modelagem CSG (Constructive Solid Geometry) as operaccedilotildees booleanas satildeo

usadas juntamente com primitivas soacutelidas para definir um modelo No entanto

em alguns tipos de modelos estas operaccedilotildees satildeo difiacuteceis como por exemplo

em malhas poligonais Com pontos elas podem ser feitas interativamente [32]

Operaccedilotildees Booleanas com Pontos 29

4 Operaccedilotildees Booleanas com Pontos

Operaccedilotildees booleanas satildeo as operaccedilotildees de uniatildeo interseccedilatildeo e diferenccedila

definidas na teoria matemaacutetica de conjuntos Estas operaccedilotildees satildeo aplicadas em

modelos soacutelidos para alteraacute-los ou para criar novos modelos A Figura 4 abaixo

mostra a criaccedilatildeo de trecircs novos modelos a partir de quatro modelos iniciais

Figura 4 [22] Trecircs modelos novos foram criados a partir dos quatro iniciais (esfera

cilindro dois cubos) O primeiro eacute a esfera menos um cubo em seguida retirou-se outro

cubo e por uacuteltimo retirou-se o cilindro

Estas operaccedilotildees satildeo aplicadas em objetos modelados por pontos em dois

trabalhos no trabalho de Bart Adams e Philip Dutreacute [2] e no trabalho de Pauly

et Al [3] Neste capiacutetulo a seccedilatildeo 41 apresenta a parte comum aos dois

trabalhos e as seccedilotildees 42 e 43 apresentam as particularidades de cada um A

seccedilatildeo 44 discute uma questatildeo natildeo explicitada em nenhum dos dois trabalhos

41 Meacutetodos para realizar operaccedilotildees booleanas em objetos modelados por pontos

A Figura 5 mostra o resultado do meacutetodo de Adams[2] operaccedilotildees de

uniatildeo diferenccedila e interseccedilatildeo de objetos soacutelidos 3D modelados por pontos

Operaccedilotildees Booleanas com Pontos 30

Figura 5 [2]-A partir de dois modelos por pontos uma heacutelice e uma cabeccedila as trecircs operaccedilotildees booleanas satildeo mostradas da esquerda para a direita uniatildeo diferenccedila e interseccedilatildeo

Sejam A e B objetos 3D soacutelidos modelados por pontos Definem-se os

seguintes elementos

Af ndash superfiacutecie (contorno) de A que estaacute fora de B

Ad ndash superfiacutecie (contorno) de A que estaacute dentro de B

Bf ndash superfiacutecie (contorno) de B que estaacute fora de A

Bd ndash superfiacutecie (contorno) de B que estaacute dentro de A

O resultado da operaccedilatildeo booleana entre A e B seraacute um modelo C cuja

superfiacutecie de contorno pode ser determinada pela seguinte regra [2] que aqui

chamamos de Regra 1

Regra 1 A U B Af + Bf

A cap B Ad + Bd

A ndash B Af + Bd (com a orientaccedilatildeo invertida)

B ndash A Ad (com a orientaccedilatildeo invertida) + Bf

A Figura 6 mostra as operaccedilotildees com dois modelos A e B

(a) (b)

Operaccedilotildees Booleanas com Pontos 31

(c) (d)

Figura 6 [22] (a) Dois modelos A e B (b) Posicionados de forma que A tem

uma parte dentro de B eacute mostrado o resultado A U B Af + Bf (c) Resultado de A ndash B Af

+ Bd (d) Resultado de A cap B Ad + Bd

Bart [2] e Pauly [3] apresentam dois meacutetodos para determinar os

elementos acima Estes dois meacutetodos satildeo construiacutedos a partir dos seguintes

conceitos os elementos Af Ad Bf Bd satildeo uma parte da superfiacutecie modelada por

pontos e portanto satildeo conjuntos de surfels Para determinaacute-los eacute necessaacuteria

entatildeo a classificaccedilatildeo de um surfel (que pode se resumir agrave classificaccedilatildeo de um

ponto que eacute o seu centro) de uma superfiacutecie como dentro ou fora de um outro

modelo Os dois meacutetodos utilizam a seguinte regra para esta classificaccedilatildeo aqui

denominada Regra 2

Regra 2 Dado um ponto x qualquer um volume V determinado por uma superfiacutecie

de contorno S uma amostragem P da superfiacutecie S um ponto p є P que eacute a

amostra mais proacutexima a x um vetor np normal agrave S em p e orientado para fora de

S temos que

(x ndash p) np gt 0 x notinV

Ou seja para classificar um ponto em relaccedilatildeo a um modelo verificamos o

produto interno entre a normal em p (surfel mais proacuteximo a x) e o vetor (x - p)

se este produto interno for maior que zero x natildeo pertence ao volume V e seraacute

classificado como fora senatildeo seraacute classificado como dentro De maneira

ainda mais informal se a normal em p apontar para a direccedilatildeo oposta a x x seraacute

classificado como dentro se apontar para x x seraacute classificado como fora

A Figura 7 mostra a Regra 2

Operaccedilotildees Booleanas com Pontos 32

Figura 7 Para classificar o ponto x encontra-se o surfel p (com normal np) mais proacuteximo

a x Se o produto interno entre np e (x ndash p) for maior que zero entatildeo x eacute classificado como

fora senatildeo seraacute classificado como dentro

A validade da Regra 2 eacute discutida na Seccedilatildeo 44 Uma das restriccedilotildees

teoacutericas para garantir-lhe a validade eacute que a superfiacutecie seja suave

Cada um dos dois meacutetodos daacute um tratamento diferente para o uso desta

regra Pauly usa a regra diretamente encontrando o surfel mais proacuteximo a um

ponto e classificando este ponto a partir deste surfel Ele utiliza tambeacutem a

representaccedilatildeo impliacutecita MLS (Moving Least Squares [18]) para casos em que a

Regra 2 poderia falhar e para tratamento de interseccedilotildees [3] Seu meacutetodo vale

para modelos soacutelidos ou natildeo soacutelidos O meacutetodo de Adams e Dutreacute [2] utiliza

octrees [1] criando uma classificaccedilatildeo dos noacutes da octree a partir desta Regra 2

Os pontos satildeo entatildeo classificados de acordo com o noacute da octree que o conteacutem

Este segundo meacutetodo aplica-se somente a modelos soacutelidos Os dois meacutetodos

seratildeo descritos em detalhes nas seccedilotildees abaixo

Como um surfel eacute considerado um disco podemos dizer que surfels de

dois modelos diferentes podem se intersectar A interseccedilatildeo destes dois surfels

corresponde agrave interseccedilatildeo destes dois discos Estes surfels geram problemas

para visualizaccedilatildeo se forem acrescentados ao resultado sem um tratamento

especiacutefico apresentaratildeo artefatos natildeo desejaacuteveis na renderizaccedilatildeo do modelo

resultado (Figura 8) se natildeo forem acrescentados ao resultado deixaratildeo buracos

no modelo

Operaccedilotildees Booleanas com Pontos 33

Figura 8 [2] -Interseccedilatildeo de duas esferas agrave esquerda sem nenhum tratamento de interseccedilatildeo agrave direita apoacutes o tratamento de interseccedilatildeo

Aleacutem disso nem sempre esta interseccedilatildeo forma uma superfiacutecie suave

Esta interseccedilatildeo pode formar uma aresta viva (seccedilatildeo 4223) gerando

problemas tambeacutem para o uso da Regra 2 que eacute vaacutelida apenas para superfiacutecies

suaves Eacute necessaacuterio entatildeo fazer um tratamento desta superfiacutecie de interseccedilatildeo

(formada por surfels originados de diferentes modelos) O tratamento de cada

um dos meacutetodos para este caso seraacute tambeacutem abaixo apresentado

42 Meacutetodo de Adams e Dutreacute

O meacutetodo aplica-se somente a modelos soacutelidos Para determinaccedilatildeo dos

elementos da aqui chamada Regra 1 (seccedilatildeo 41) este meacutetodo utiliza uma octree

[1] que subdivide o espaccedilo do modelo em trecircs fora dentro ou no contorno do

modelo Estes espaccedilos satildeo determinados pela classificaccedilatildeo dos noacutes da octree a

partir da Regra 2 Tambeacutem eacute usado o meacutetodo TINN - Triangle Inequality Nearest

Neighbour [19] - para otimizar a pesquisa dentro do noacute A seguir descrevemos o

modelo usado neste meacutetodo apresentando os dados associados aos pontos o

tipo de distribuiccedilatildeo e o algoritmo que realiza as operaccedilotildees

421 Modelo por Pontos em Adams e Dutreacute

Os surfels neste meacutetodo contecircm as seguintes informaccedilotildees posiccedilatildeo do

surfel xs orientaccedilatildeo do surfel ns e raio de alcance do surfel rs O surfel pode ser

pensado como um disco ortogonal a ns com centro xs e raio rs O raio eacute

escolhido de tal forma que a projeccedilatildeo dos discos no plano da imagem se

sobreponham

Operaccedilotildees Booleanas com Pontos 34

Os objetos representados satildeo soacutelidos A distribuiccedilatildeo dos surfels eacute

uniforme embora o algoritmo natildeo exija esta condiccedilatildeo Para cada soacutelido eacute

definido um rmax = Max rs o raio de alcance do maior surfel pertencente agrave

superfiacutecie do soacutelido Como o raio eacute escolhido de tal forma que a projeccedilatildeo dos

discos no plano da imagem se sobreponham o controle da amostragem eacute

entatildeo ligado agrave renderizaccedilatildeo

422 Algoritmo de Operaccedilotildees Booleanas

Utilizando objetos modelados da forma descrita acima o meacutetodo realiza

operaccedilotildees de uniatildeo interseccedilatildeo e diferenccedila com modelos soacutelidos Supondo dois

modelos soacutelidos S1 e S2 O algoritmo pode ser dividido nas seguintes etapas

Criaccedilatildeo de uma octree para cada modelo Teste Dentro-Fora Tratamento da

interseccedilatildeo Estas etapas satildeo apresentadas nas proacuteximas seccedilotildees

4221 Criaccedilatildeo de uma octree para cada modelo

Eacute criada uma octree [1] para cada modelo A criaccedilatildeo de uma octree eacute feita

da seguinte forma

Gera-se a ldquoCaixa envolventerdquo caixa alinhada com os eixos que conteacutem

todo o modelo A ldquoCaixa envolventerdquo corresponde ao noacute raiz da octree Este noacute

conteacutem inicialmente todos os surfels do modelo Em seguida o noacute raiz eacute

dividido em oito noacutes filhos Os surfels satildeo distribuiacutedos entre estes oito noacutes Cada

um deles caso contenha surfels eacute dividido novamente em 8 filhos e seus surfels

satildeo redistribuiacutedos entre eles Este processo eacute repetido recursivamente enquanto

o nuacutemero de surfels do noacute for maior que zero ou ateacute uma profundidade maacutexima

preacute-definida da octree ser alcanccedilada

Cada noacute da octree deve ser classificado O objetivo desta classificaccedilatildeo eacute

determinar que parte da octree estaacute dentro do modelo e que parte estaacute fora Os

noacutes da octree satildeo entatildeo classificados como ldquodentrordquo ldquoforardquo e ldquocontornordquo

Podemos ilustrar esta classificaccedilatildeo em 2D a Figura 9 mostra uma quadtree

classificada

Operaccedilotildees Booleanas com Pontos 35

Figura 9-Um objeto representado por pontos com suas normais e sua quadtree correspondente classificada os noacutes cinza claro estatildeo dentro do modelo noacutes cinza mais escuro estatildeo fora do modelo e noacutes com cinza intermediaacuterio satildeo noacutes cheios noacutes que conteacutem pontos

O noacutes que conteacutem surfels satildeo classificados como ldquocontornordquo Para

classificar um noacute vazio existem trecircs casos

o noacute vazio tem apenas um vizinho-irmatildeo natildeo vazio

o noacute vazio tem mais de um vizinho-irmatildeo natildeo vazio

o noacute vazio natildeo tem vizinhos-irmatildeos natildeo vazios

No primeiro caso o noacute vazio eacute classificado pelo seu vizinho natildeo vazio No

segundo caso considera-se qualquer um dos vizinhos natildeo vazios No terceiro

caso classifica-se primeiro os noacutes vizinhos e eacute dada a mesma classificaccedilatildeo para

o noacute vazio Como cada noacute natildeo folha de uma octree tem pelo menos um noacute filho

natildeo vazio sempre pode ser feita a classificaccedilatildeo dos noacutes vazios A classificaccedilatildeo

eacute feita da seguinte forma dentre os surfels do vizinho-irmatildeo escolhido encontra-

se o surfel mais proacuteximo ao noacute a ser classificado Se a normal deste surfel

aponta para o noacute vazio a ser classificado entatildeo ele eacute classificado como ldquoforardquo

Se a normal aponta no sentido contraacuterio entatildeo ele eacute classificado como ldquodentrordquo

De maneira mais formal sejam cv e cc coordenadas dos centros do noacute vazio e

do noacute contorno respectivamente Seja s o surfel mais proacuteximo ao noacute vazio e ns

a normal em s Se ( cv - cc )٠ ns gt 0 ( produto interno entre a normal em s e o

vetor cv - cc for maior que zero ) o noacute vazio seraacute classificado como ldquoforardquo

Senatildeo seraacute classificado como ldquodentrordquo

Em geral os noacutes ldquocontornordquo satildeo subdivididos em trecircs partes uma que estaacute

fora do modelo uma que estaacute dentro do modelo e uma terceira que conteacutem os

surfels Esta subdivisatildeo eacute feita por meio da criaccedilatildeo de dois planos paralelos que

Operaccedilotildees Booleanas com Pontos 36

dividem o noacute Para determinar estes planos calcula-se o vetor nm igual agrave

meacutedia das normais dos surfels do noacute nm = sum ns sum ns onde ns eacute a normal de

cada surfel do noacute

Em seguida encontra-se o surfel com maior produto interno entre a sua

normal e a normal meacutedia d1=Max(nm ٠ ns) Este surfel juntamente com a normal

meacutedia define um dos planos Encontra-se tambeacutem o surfel com menor produto

interno entre a sua normal e a normal meacutedia d2=Min(nm ٠ ns) Este surfel

juntamente com a normal meacutedia define o outro plano A Figura 10 mostra a

divisatildeo de um noacute de uma quadtree nas trecircs partes dentro do modelo fora do

modelo e no ldquocontornordquo

Esta subdivisatildeo aplica-se apenas a noacutes que conteacutem surfels cujas direccedilotildees

natildeo variem em mais de 90 graus Caso isso ocorra ele natildeo seraacute subdividido Ou

seja se um noacute possuir dois vetores normais (de dois surfels diferentes) que

formem um acircngulo maior que 90 graus ele natildeo seraacute subdividido

Figura 10 [2] -Divisatildeo de noacute de contorno a parte agrave esquerda estaacute fora do modelo a parte agrave direita estaacute dentro do modelo e a faixa intermediaacuteria conteacutem os surfels

4222 Teste Dentro-Fora

O Teste Dentro-Fora faz a classificaccedilatildeo dos surfels de um modelo como

ldquodentrordquo ou ldquoforardquo de outro modelo Portanto aplicaremos este mesmo teste duas

vezes uma para o modelo S1 em relaccedilatildeo ao modelo S2 e outra para S2 em

relaccedilatildeo a S1 Vamos mostrar o teste Dentro-Fora para o caso da classificaccedilatildeo

dos surfels do modelo S1 em relaccedilatildeo a S2

Operaccedilotildees Booleanas com Pontos 37

No item anterior foram criadas duas octrees uma para o modelo S1 e

outra para o modelo S2 Chamemos de A e B as octrees de S1 e S2

respectivamente Para classificar S1 em relaccedilatildeo a S2 inicialmente eacute feita uma

avaliaccedilatildeo da posiccedilatildeo de A em relaccedilatildeo a B A e B podem estar nas seguintes

situaccedilotildees

- A natildeo intersecta B

- A intersecta apenas noacutes ldquoforardquo de B

- A intersecta apenas noacutes ldquodentrordquo de B

- A intersecta noacutes ldquoforardquo e noacutes ldquodentrordquo de B

Para testar estas situaccedilotildees os noacutes satildeo aumentados de rmax o raio do

maior surfel do modelo soacutelido Isto eacute feito para compensar o fato de que o surfel

natildeo eacute apenas um ponto mas sim considerado como um disco

No primeiro e no segundo caso todos os surfels de A satildeo classificados

como ldquoforardquo No terceiro caso todos os surfels de A satildeo classificados como

ldquodentrordquo

No quarto caso temos que percorrer a octree A Comeccedilando pelo noacute raiz

percorre-se os filhos deste noacute Para cada filho os quatro testes acima satildeo feitos

Se o noacute filho encontra-se em um dos trecircs primeiros casos a classificaccedilatildeo eacute dada

como foi citada acima Se um filho estaacute no quarto caso e natildeo eacute um noacute folha

repete-se recursivamente o mesmo procedimento para seus filhos ateacute encontrar-

se um noacute folha Para um noacute que estaacute no quarto caso e eacute folha percorre-se a lista

de surfels que este noacute conteacutem classificando cada um destes surfels Seja sa um

surfel desta lista Para este caso percorre-se a octree B para classificar sa

Primeiramente encontramos o noacute de B que conteacutem sa Se este noacute de B foi

dividido testa-se de acordo com esta divisatildeo do noacute se o surfel sa estaacute na parte

do noacute que estaacute dentro do modelo ele eacute classificado como ldquodentrordquo se sa estaacute na

parte que estaacute fora do modelo ele eacute classificado como ldquoforardquo se sa estaacute na parte

intermediaacuteria ou se o noacute de B natildeo foi subdividido em planos encontra-se sb que

eacute o surfel pertencente a este noacute de B que estaacute mais proacuteximo de sa sa seraacute

entatildeo classificado de acordo com sb Se ( sa - sb )٠ nb gt 0 sa eacute classificado

como ldquoforardquo senatildeo eacute classificado como ldquodentrordquo Se os discos de sb e sa se

intersectam sa eacute marcado como interseccedilatildeo Para encontrar sb o algoritmo

implementa o meacutetodo TINN ndash Triangle Inequality Nearest Neighbour [19]

Operaccedilotildees Booleanas com Pontos 38

4223 Tratamento da interseccedilatildeo

Os surfels de A que intersectam surfels de B satildeo classificados como

ldquointerseccedilatildeordquo Se eles natildeo forem incluiacutedos no modelo resultado o soacutelido resultado

teraacute buracos Se eles forem incluiacutedos sem algum tratamento eles natildeo

representaratildeo adequadamente a regiatildeo Em geral o surfel sa (um surfel

ldquointerseccedilatildeordquo de A) eacute dividido em dois pelo plano que conteacutem o surfel sb (surfel de

B que sa intersecta) uma parte que estaacute fora de B e outra que estaacute dentro de B

Dependendo da operaccedilatildeo que estaacute sendo realizada vamos querer manter uma

destas partes do surfel sa no modelo resultado Seja xa a posiccedilatildeo do surfel sa e o

surfel sa uma circunferecircncia de centro xa e raio ra igual ao raio de alcance de sa

O plano que conteacutem o surfel sb define uma corda desta circunferecircncia como

mostra a Figura 11 O surfel sa seraacute substituiacutedo por um surfel menor que

ultrapassa esta corda de uma distacircncia e definida pelo usuaacuterio Para cobrir

completamente a interseccedilatildeo seratildeo adicionados surfels menores que cruzam a

corda de interseccedilatildeo

Figura 11 -Interseccedilatildeo do surfel s e do plano que passa pelo surfel t o surfel mais proacuteximo a s O surfel s eacute substituiacutedo por trecircs surfels menores

Operaccedilotildees Booleanas com Pontos 39

O tratamento de interseccedilatildeo proposto por Adams e Dutreacute [2] natildeo soacute evita

os buracos mas tambeacutem cria uma forma de renderizaccedilatildeo de arestas vivas A

colocaccedilatildeo de vaacuterios pequenos surfels na regiatildeo da interseccedilatildeo permite esta

correta renderizaccedilatildeo das ldquoarestas vivasrdquo Desta forma o problema das arestas

vivas eacute resolvido na modelagem (Figura 12) A vantagem de se resolver o caso

na modelagem eacute que natildeo eacute necessaacuterio fazer um tratamento especial na

renderizaccedilatildeo para que mostre esta aresta viva Diferente do tratamento feito

em Pauly (seccedilatildeo 431) que resolve esta questatildeo em tempo de renderizaccedilatildeo

Aleacutem disso o tratamento resolve alguns casos onde a Regra 2 poderia falhar

(veja em Validade da Regra 2-seccedilatildeo 44)

Figura 12 [2] -Agrave direita eacute mostrado o resultado do tratamento de interseccedilatildeo para o caso de Arestas Vivas do objeto agrave esquerda

43 Meacutetodo de Pauly

O meacutetodo aplica-se a objetos soacutelidos e natildeo soacutelidos Os modelos podem ser

obtidos a partir de diferentes entradas como nuvem de pontos irregulares ou por

meio de scanners 3D Cria um modelo hiacutebrido destes objetos usa o modelo por

pontos juntamente com a representaccedilatildeo impliacutecita Moving Least Squares - MLS

[18] Realiza operaccedilotildees booleanas com pontos e utiliza adicionalmente MLS

para alguns casos de classificaccedilatildeo de surfels e no tratamento de interseccedilatildeo A

seguir apresentamos as caracteriacutesticas do modelo por pontos deste meacutetodo e o

algoritmo que realiza as operaccedilotildees

Operaccedilotildees Booleanas com Pontos 40

431 Modelo em Pauly

O modelo eacute uma estrutura hiacutebrida de pontos com a representaccedilatildeo impliacutecita

Moving Least Squares - MLS [18] Esta estrutura eacute usada para fazer operaccedilotildees

booleanas e tambeacutem operaccedilotildees de free-form (natildeo abordadas nesta

dissertaccedilatildeo) Para operaccedilotildees booleanas a representaccedilatildeo MLS permite que a

curva de interseccedilatildeo entre os modelos seja reconstruiacuteda e surfels sejam

colocados nesta curva e em alguns casos de classificaccedilatildeo de surfels mostrados

na seccedilatildeo 432 Para este modelo natildeo existem restriccedilotildees quanto agrave forma do

objeto

Os surfels contecircm informaccedilotildees sobre sua posiccedilatildeo e sua normal Aleacutem

disso surfels podem conter informaccedilotildees adicionais como textura cor

propriedades de materiais

A distribuiccedilatildeo dos surfels eacute natildeo-uniforme e a amostragem eacute

aproximadamente adequada (Veja seccedilatildeo 44)

432 Algoritmo de Operaccedilotildees Booleanas

O algoritmo classifica surfels de um modelo como ldquodentrordquo ou ldquoforardquo de

outro modelo Antes de colocarmos como eacute feita esta classificaccedilatildeo devemos

acrescentar que Pauly estende esta classificaccedilatildeo para modelos que natildeo satildeo

soacutelidos Ou seja mesmo um modelo natildeo soacutelido divide o espaccedilo da cena (espaccedilo

em que se encontra o modelo) em dois sub-espaccedilos dentro ou fora do modelo

Pauly faz esta subdivisatildeo da seguinte forma

Como a superfiacutecie que determina o modelo eacute orientada (conteacutem vetores

normais agrave superfiacutecie que apontam para ldquoforardquo do modelo) Pauly considera que

um modelo natildeo soacutelido divide o espaccedilo em dois sub-espaccedilos um ldquoforardquo do

modelo (os vetores normais apontam para este sub-espaccedilo) e um que estaacute

ldquodentrordquo do modelo (os vetores normais apontam para direccedilatildeo oposta a este sub-

espaccedilo) Por exemplo um plano eacute representado como um conjunto de surfels

contidos num determinado espaccedilo geomeacutetrico plano π Cada surfel conteacutem um

vetor normal direcionado Este modelo divide entatildeo o espaccedilo em dois sub-

espaccedilos o sub-espaccedilo que eacute apontado por estes surfels (considerado ldquoforardquo do

modelo) e o sub-espaccedilo que estaacute na direccedilatildeo oposta (considerado ldquodentrordquo do

modelo) Desta forma ele aplica as classificaccedilotildees de ldquodentrordquo e ldquoforardquo de um

modelo tambeacutem a modelos natildeo soacutelidos A partir desta consideraccedilatildeo as

Operaccedilotildees Booleanas com Pontos 41

operaccedilotildees booleanas satildeo realizadas com os modelos natildeo soacutelidos da mesma

forma que com os modelos soacutelidos

Para determinar esta classificaccedilatildeo (dentro ou fora do modelo) Pauly utiliza

a Regra 2 Para pesquisa do surfel mais proacuteximo o meacutetodo usa a estrutura Kd-

tree [16] e tambeacutem o algoritmo ANN [16] No entanto o meacutetodo apresenta uma

restriccedilatildeo da Regra 2 ela soacute deve ser usada para classificaccedilotildees de pontos x se

a distacircncia x-p for maior que o espaccedilamento da amostragem local ηp em p

Este espaccedilamento da amostragem local ηp em p eacute um caacutelculo aproximado da

distacircncia meacutedia entre os surfels vizinhos a p Se x estaacute muito proacuteximo agrave

superfiacutecie a classificaccedilatildeo pode falhar Neste caso ele calcula o ponto exato de

S mais proacuteximo a x usando a projeccedilatildeo MLS (ldquoMoving Least Squaresrdquo)

Por questotildees de melhoria de desempenho utiliza-se o fato de que sendo

Ωp (x) a classificaccedilatildeo do ponto x em relaccedilatildeo agrave amostragem P tem-se que Ωp (x)

= Ωp (xrsquo) para todos os pontos de xrsquo que estatildeo dentro da esfera de centro x e

raio igual a x-p - ηp (onde p eacute o surfel mais proacuteximo e ηp eacute o espaccedilamento

local da amostragem em p acima citado) Ou seja sendo x um ponto qualquer p

o surfel mais proacuteximo a x ηp eacute o espaccedilamento local da amostragem em p se

desenharmos uma esfera com centro x e raio igual a x-p - ηp temos que

todos os pontos xrsquo que estatildeo dentro da esfera teratildeo a mesma classificaccedilatildeo de x

Desta forma o nuacutemero de vezes que a classificaccedilatildeo eacute feita (pesquisando-se o

surfel mais proacuteximo ao ponto e usando a Regra 2) diminui em ateacute 90 Assim

em geral a classificaccedilatildeo de um surfel eacute obtida a partir do seu surfel vizinho

Dados

S1 a superfiacutecie MLS de contorno que define o modelo A

S2 a superfiacutecie MLS de contorno que define o modelo B

P1 o conjunto de surfels que representa a superfiacutecie S1

P2 o conjunto de surfels que representa a superfiacutecie S2

Ωp1 (x) a classificaccedilatildeo do ponto p em relaccedilatildeo a uma amostragem P1

Q1 o subconjunto de P1 que vai compor o resultado

Ωp2 (x) a classificaccedilatildeo do ponto p em relaccedilatildeo a uma amostragem P2

Q2 o subconjunto de P2 que vai compor o resultado

Os conjuntos Q1 e Q2 satildeo obtidos por meio da Tabela 1 mostrada abaixo

Operaccedilotildees Booleanas com Pontos 42

Tabela 1 Classificaccedilatildeo para operaccedilotildees booleanas

Para o tratamento de interseccedilatildeo neste meacutetodo satildeo computados pontos

que caem exatamente na curva de interseccedilatildeo e estes satildeo acrescentados ao

modelo resultado Estes pontos satildeo determinados de forma que a densidade da

amostragem vai crescendo agrave medida que os surfels se aproximam da curva de

interseccedilatildeo e convergem para este ponto de interseccedilatildeo como mostra a Figura

13

(a) (b) (c)

Figura 13 - Os novos surfels satildeo colocados exatamente na curva de interseccedilatildeo

e convergem para o ponto de interseccedilatildeo

A Figura 14 mostra o processo de encontrar os surfels que caem nesta

curva de interseccedilatildeo Inicialmente satildeo encontrados todos os pontos de Q1 e Q2

que estatildeo proacuteximos agrave curva de interseccedilatildeo por meio da funccedilatildeo de distacircncia do

operador de projeccedilatildeo MLS Em seguida procura-se todos os pares mais

proacuteximos (q1 є Q1 q2 є Q2 ) e computa-se o ponto q na curva de interseccedilatildeo da

seguinte forma (veja a Figura 14)Seja r o ponto na linha de interseccedilatildeo dos dois

planos tangentes em q1 e q2 e que estaacute mais proacuteximo a estes dois pontos isto eacute

que minimiza a distacircncia ||r-q1|| + ||r-q2|| r eacute a primeira aproximaccedilatildeo de q e agora

pode ser projetado sobre S1 e S2 para obter dois novos pontos de partida q1rsquo e q2

rsquo

para a iteraccedilatildeo Este procedimento pode ser repetido iterativamente ateacute que os

pontos q1 e q2 convirjam ao ponto q na curva de interseccedilatildeo Normalmente este

processo requer menos de trecircs iteraccedilotildees

Operaccedilotildees Booleanas com Pontos 43

(a) (b)

(c)

Figura 14 (a) Suponhamos a reta que eacute a interseccedilatildeo do plano tangente a S1 em q1 e o

plano tangente a S2 em q2 O ponto r eacute o ponto desta reta que estaacute mais proacuteximo a q1 e

q2 (b) r eacute projetado sobre S1 e S2 obtendo-se q1acute e q2acute dois novos pontos de partida

para nova iteraccedilatildeo (c) A nova iteraccedilatildeo gera r que eacute uma aproximaccedilatildeo melhor de q

Pauly faz o tratamento de arestas vivas em tempo de renderizaccedilatildeo Ele

faz uma alteraccedilatildeo no renderizador Marca os surfels de interseccedilatildeo e ao

renderizaacute-los satildeo cortados para gerar uma aresta viva

44 Validade da Regra 2

Os dois meacutetodos analisados nesta dissertaccedilatildeo utilizam a seguinte regra

para a classificaccedilatildeo de um surfel

Regra 2 dado um volume V determinado por uma superfiacutecie de contorno

S uma amostragem P da superfiacutecie S um ponto x qualquer um ponto p є P que

eacute a amostra mais proacutexima a x um vetor ny normal a S em p e orientado para

fora de S temos que (x ndash p) np gt 0 x notinV

Em [16] eacute colocado que esta regra eacute tirada da seguinte propriedade da

geometria diferencial (aqui chamada Propriedade 1)

Propriedade 1 Dado um volume V determinado por uma superfiacutecie de

contorno S contiacutenua e duplamente diferenciaacutevel um ponto x qualquer um ponto

Operaccedilotildees Booleanas com Pontos 44

y є S que eacute o ponto de S mais proacuteximo a x um vetor ny normal a S em y e

orientado para fora de S temos que (x ndash y) ny gt 0 x notinV

A Figura 15 ilustra esta propriedade

Figura 15 Para verificar se o ponto x estaacute fora de um contorno C encontra-se o ponto y

de C Se o produto interno entre a normal em y e o vetor que liga y a x for maior que

zero entatildeo x estaacute fora de C senatildeo estaacute dentro de C

Pauly assume que tendo uma amostragem P da superfiacutecie S podemos

usar a Propriedade 1 substituindo y por p o surfel mais proacuteximo ao ponto x (x ndash

p) np gt 0 x notinV (Regra 2) Esta amostragem P em seu trabalho eacute

(aproximadamente) uma ldquoamostragem adequadardquo Tambeacutem seu tratamento de

interseccedilatildeo cria uma aproximaccedilatildeo dela (seccedilatildeo 43) Empiricamente a

ldquodiscretizaccedilatildeo da propriedaderdquo eacute vaacutelida a partir desta suposiccedilatildeo Mas isso natildeo foi

demonstrado teoricamente em seu trabalho

Pauly coloca em [16] que natildeo existe ainda uma teoria matemaacutetica rigorosa

de amostragem anaacuteloga a teoria de Fourier para superfiacutecies discretas

A melhor aproximaccedilatildeo teoacuterica para esta aacuterea eacute o uso do Eixo Medial que

foi colocado em [10] Vamos descrever este trabalho brevemente nesta seccedilatildeo

Este trabalho apresenta um algoritmo de reconstruccedilatildeo de superfiacutecie que parte de

uma amostragem adequada (abaixo definida) de pontos e obteacutem uma malha

que eacute topologicamente equivalente agrave superfiacutecie do objeto e agrave medida que a

densidade da amostragem cresce a saiacuteda converge para esta superfiacutecie

Para definir amostragem adequada o trabalho parte do conceito de Eixo

Medial

Operaccedilotildees Booleanas com Pontos 45

ldquoEixo Medialrdquo de uma superfiacutecie 2D posicionada no R3 eacute o conjunto

(fechado) de pontos pi para os quais buscando-se o ponto da superfiacutecie que

estaacute mais proacuteximo a pi mais de um ponto pertencentes a esta superfiacutecie satildeo

encontrados A Figura 16 abaixo ilustra o Eixo Medial em 2D

Figura 16 [10] As curvas de cor mais clara satildeo o Eixo Medial da curva em preto

Em duas dimensotildees os veacutertices de Voronoi de uma amostragem densa

aproximam o ldquoEixo Medialrdquo da amostragem (mas esta propriedade natildeo se

estende a 3D) A Figura 17 mostra o Eixo Medial em 3D

Figura 17 [10] Em 3D geralmente o Eixo Medial eacute uma superfiacutecie 2D (em cor mais

clara) Aqui o quadrado eacute o Eixo Medial da superfiacutecie transparente que o contorna

Podemos definir agora a amostragem adequada da seguinte forma

Supondo uma superfiacutecie suave que quer dizer uma 2-manifold duplamente

diferenciaacutevel posicionada no R3 uma ldquoamostragem adequadardquo desta superfiacutecie eacute

aquela na qual a densidade da amostragem eacute (pelo menos) inversamente

proporcional agrave distacircncia ao ldquoEixo Medialrdquo A Figura 18 mostra uma amostragem

adequada

Operaccedilotildees Booleanas com Pontos 46

Figura 18 [10] A figura mostra o diagrama de Voronoi de uma amostragem de pontos S

Da mesma forma que o a amostragem aproxima a curva os veacutertices de Voronoi

aproximam o Eixo Medial

Na praacutetica na reconstruccedilatildeo da superfiacutecie uma aproximaccedilatildeo deste ldquoEixo

Medialrdquo eacute computada (devido agrave dificuldade de computaacute-lo exatamente e em

alguns casos ateacute impossibilidade)

Melhorias Propostas 47

5 Melhorias Propostas

No capiacutetulo 4 apresentamos dois meacutetodos que realizam operaccedilotildees

booleanas em modelos por pontos o meacutetodo de Adams e Dutreacute [2] e o meacutetodo

de Pauly[3] Para esta dissertaccedilatildeo usamos o meacutetodo de Adams e Dutreacute [2] e

propomos as seguintes melhorias

- Alteramos o momento em que eacute feita a classificaccedilatildeo da octree Fazemos

esta classificaccedilatildeo durante a sua criaccedilatildeo Os noacutes filhos de um noacute pai P qualquer

satildeo classificados logo apoacutes a criaccedilatildeo de todos estes filhos de P

independentemente do restante da octree ter sido criada Isso pode ser feito

porque a octree eacute construiacuteda na ordem raiz-esquerda-direita (preorder

traversal) e portanto apoacutes todos os filhos de um noacute pai serem criados a parte

necessaacuteria da octree para a classificaccedilatildeo destes filhos jaacute estaacute criada

- A classificaccedilatildeo da octree eacute otimizada classificando-se os cantos dos seus

noacutes como dentro ou fora do modelo Na classificaccedilatildeo de um noacute n1 a partir de seu

vizinho n2 se os cantos que satildeo comuns a n1 e n2 tiverem a mesma

classificaccedilatildeo esta seraacute dada ao noacute Assim diminuiacutemos o nuacutemero de pesquisas

pelo surfel mais proacuteximo que eacute a parte criacutetica da classificaccedilatildeo dos noacutes da octree

em termos de tempo de processamento

- Acrescentamos um valor miacutenimo (maior que zero) para o nuacutemero de

surfels contidos em um noacute que eacute uma das condiccedilotildees de parada na criaccedilatildeo da

octree Verificamos que desta forma diminui-se a chance de erro na classificaccedilatildeo

de partes criacuteticas como ldquoarestas vivasrdquo

Uma comparaccedilatildeo entre a nossa implementaccedilatildeo e a de Pauly tambeacutem seraacute

feita no capiacutetulo 6

51 Descriccedilatildeo do algoritmo

O algoritmo implementado para esta dissertaccedilatildeo baseado no meacutetodo de

Adams e Dutreacute [2] pode ser dividido nas seguintes partes Criaccedilatildeo e

classificaccedilatildeo de uma octree para cada modelo Teste DentroFora Criaccedilatildeo do

modelo resultado Natildeo foi implementado tratamento especial algum de

interseccedilatildeo para o nosso plugin As proacuteximas seccedilotildees apresentam estas partes

Melhorias Propostas 48

511 Criaccedilatildeo e classificaccedilatildeo de uma octree para cada modelo

As ideacuteias do algoritmo satildeo aqui ilustradas em 2D mas a extensatildeo delas

para 3D eacute feita facilmente

Para cada modelo a octree eacute criada e classificada da seguinte forma

Figura 19-Quadtree classificada Os noacutes mais escuros estatildeo fora do modelo os mais claros dentro e os em tom intermediaacuterio satildeo noacutes de contorno

Gera-se uma ldquocaixa envolventerdquo do modelo contendo todos os surfels e

cria-se o noacute raiz da octree que corresponde a esta ldquocaixa envolventerdquo Este noacute

raiz eacute subdividido em oito filhos e seus surfels satildeo distribuiacutedos entre eles Ao

inveacutes de testarmos os valores de xy e z para cada surfel a fim de determinar

para qual filho ele iraacute utilizamos listas auxiliares Primeiro os surfels satildeo

subdivididos em dois grupos pelos valores de x e armazenados em uma lista

auxiliar Em seguida cada uma das listas eacute subdividida pelo valor de y e as

quatro listas obtidas seratildeo subdivididas pelo valor de z Ao final teremos 8 listas

de surfels cada uma delas pertencente a um filho

Cada noacute seraacute entatildeo novamente subdividido enquanto contiver um nuacutemero

de surfels gt nmin (valor preacute-definido) ou enquanto a profundidade da aacutervore lt pmax

(valor preacute-definido) Na figura 19 pmax = 3 e nmin = 3

Melhorias Propostas 49

Figura 20-O noacute cheio eacute dividido em trecircs partes agrave esquerda a regiatildeo estaacute dentro do modelo agrave direita estaacute fora e entre as duas linhas que dividem o noacute estaacute a regiatildeo que conteacutem os surfels

Os noacutes cheios recebem um tratamento especial Eles satildeo subdivididos em

trecircs partes da seguinte forma uma que estaacute fora do modelo outra que estaacute

dentro e uma que conteacutem os surfels Esta subdivisatildeo eacute feita por meio da criaccedilatildeo

de dois planos paralelos que dividem o noacute Para determinar estes planos

calcula-se o vetor nm igual agrave meacutedia das normais dos surfels do noacute nm = sum ns

sum ns onde ns eacute a normal de cada surfel do noacute Em seguida encontra-se o

surfel com maior produto interno entre a sua normal e a normal meacutedia

d1=Max(nm ٠ ns) Este surfel juntamente com a normal meacutedia define um dos

planos Encontra-se tambeacutem o surfel com menor produto interno entre a sua

normal e a normal meacutedia d2=Min (nm ٠ ns) Este surfel juntamente com a normal

meacutedia define o outro plano (Figura 20) Se o noacute conteacutem surfels de superfiacutecies de

orientaccedilotildees diferentes ele natildeo seraacute subdividido ou seja os planos coincidiratildeo

com os planos que delimitam o proacuteprio noacute Este teste foi implementado da

seguinte forma escolhe-se um surfel qualquer do noacute Calcula-se o produto

interno entre a normal deste surfel e as outras normais dos outros surfels deste

noacute Se algum produto interno for menor que zero este noacute natildeo seraacute subdividido

Apoacutes a etapa de subdivisatildeo classificam-se os oito cantos deste noacute como

dentro ou fora do modelo por meio da classificaccedilatildeo de um ponto que

descreveremos na sub-seccedilatildeo 5111

Melhorias Propostas 50

a b

c d

Figura 21-O noacute a eacute classificado pelo noacute c o noacute d tambeacutem eacute classificado pelo noacute c a classificaccedilatildeo do noacute a eacute propagada para o noacute b

Jaacute os noacutes vazios da octree seratildeo classificados como ldquodentrordquo ou ldquoforardquo do

modelo da seguinte forma cada noacute folha vazio eacute classificado a partir de um de

seus irmatildeos vizinhos adjacentes Se ele possuir um vizinho adjacente cheio ele

seraacute classificado por este vizinho se natildeo possuir os vizinhos adjacentes seratildeo

classificados primeiro e ele teraacute esta mesma classificaccedilatildeo (Figura 21) Como tem

que existir sempre pelo menos um noacute cheio entre os filhos de um noacute pai entatildeo

sempre esta classificaccedilatildeo poderaacute ser feita Com a classificaccedilatildeo de todos os

filhos tem-se tambeacutem a classificaccedilatildeo dos cantos do noacute pai

Mf03c003fmx a b

Figura 22-Os cantos a e b do noacute cheio possuem a mesma classificaccedilatildeo fora do modelo Esta classificaccedilatildeo foi dada ao noacute vazio adjacente

Melhorias Propostas 51

Para classificar um noacute vazio por meio de um noacute cheio verificam-se os

cantos comuns destes dois noacutes se todos os cantos tiverem a mesma

classificaccedilatildeo esta seraacute dada ao noacute vazio (Figura 22) Se houver classificaccedilotildees

diferentes escolhe-se o surfel do noacute cheio mais proacuteximo ao noacute vazio faz-se o

produto interno entre a normal deste surfel e o vetor que liga o centro do noacute

cheio ao centro do noacute vazio (ou o vetor que liga o surfel ao centro do noacute vazio)

Se o produto interno for maior que zero o noacute eacute classificado como ldquoforardquo senatildeo eacute

classificado como ldquodentrordquo Para encontrar o surfel (pertencente a um noacute cheio)

mais proacuteximo ao noacute vazio existem dois casos

- O noacute cheio eacute folha percorre-se toda a lista de surfels e escolhe o surfel

mais proacuteximo da fronteira entre o noacute cheio e o vazio

- O noacute cheio natildeo eacute um noacute folha percorrem-se os filhos do noacute cheio ou seja

esta pesquisa eacute feita descendo na octree a partir do noacute cheio procurando o

surfel mais proacuteximo agrave fronteira do pai com o noacute vazio a ser classificado

Classificando o centro do noacute vazio todo o noacute deve ter a mesma

classificaccedilatildeo pois este noacute natildeo conteacutem surfels Para encontrar o surfel do noacute

vazio mais proacuteximo da fronteira entre o noacute cheio e o vazio basta testar o valor da

coordenada se a fronteira eacute o lado direito do noacute cheio escolhe-se o surfel com

maior coordenada lsquoxrsquo se eacute o lado esquerdo escolhe-se o surfel com menor lsquoxrsquo

se lado superior surfel com maior lsquoyrsquo etc A seguir apresentamos a classificaccedilatildeo

de um ponto qualquer pertencente a um noacute cheio

Figura 23- Quadtree classificada

Melhorias Propostas 52

5111 Classificaccedilatildeo de um ponto de um noacute cheio

Figura 24 [2] A normal n eacute a normal meacutedia e os surfels s1 e s2 juntamente com a normal

n definem as retas que dividem o noacute O ponto a estaacute fora do modelo e o ponto b estaacute

dentro do modelo

Para um ponto localizado dentro do noacute faz-se o seguinte teste se o noacute foi

dividido testa-se de acordo com a divisatildeo do noacute se o ponto estaacute na parte do noacute

que estaacute dentro do modelo ele eacute classificado como ldquodentrordquo se o ponto estaacute na

parte que estaacute fora do modelo ele eacute classificado como ldquoforardquo (Figura 24) se o

ponto estaacute na parte que conteacutem os surfels encontra-se o surfel s pertencente ao

noacute mais proacuteximo do ponto e o classifica de acordo com s seja ns a normal em s

cs a coordenada de s cp a coordenada do ponto Se (cp - cs )٠ ns gt 0 o ponto

seraacute classificado como ldquoforardquo Senatildeo seraacute classificado como ldquodentrordquo

Se o noacute natildeo foi dividido em planos esta classificaccedilatildeo a partir do surfel

mais proacuteximo seraacute sempre feita

512 Teste DentroFora

Melhorias Propostas 53

Figura 25-Duas circunferecircncias e suas quadtrees correspondentes

O Teste DentroFora classifica os surfels de um modelo como dentro ou

fora de outro modelo ou na sua interseccedilatildeo Este teste foi aqui implementado

exatamente como foi proposto em Adams e Dutreacute [2] exceto que natildeo foi

implementado o meacutetodo TINN - Triangle Inequality Nearest Neighbour [19]

Cada octree eacute percorrida verificando-se se os seus noacutes ou surfels estatildeo dentro

fora ou no contorno do outro modelo (Figura 25) Sejam A e B duas octrees e

queremos classificar a octree A As duas octrees (AB) satildeo percorridas partindo

da raiz

Para cada noacute de A existem quatro casos (Figura 26) Para testar estas

situaccedilotildees os boxes dos noacutes satildeo aumentados de rmax o raio do maior surfel do

modelo Isto eacute feito para compensar o fato de que o surfel natildeo eacute apenas um

ponto mas sim considerado como um disco

Os quatro casos satildeo

Se o noacute de A natildeo intersecta B entatildeo todos os surfels deste noacute satildeo

classificados como fora

Se o noacute de A intersecta apenas noacutes de B que estatildeo fora do modelo

todos os surfels deste noacute satildeo fora

Se o noacute de A intersecta apenas noacutes de B que estatildeo dentro do modelo

todos os surfels deste noacute satildeo dentro

Melhorias Propostas 54

Se o noacute de A intersecta noacutes de B que estatildeo dentro e tambeacutem noacutes de B

que estatildeo fora testa-se se este noacute de A eacute ou natildeo folha Se natildeo for folha

percorre-se os filhos deste noacute de A ateacute encontrar um noacute folha cheio que

intersecta B Para cada surfel sa deste noacute folha de A encontra-se o surfel de B

mais proacuteximo e classifica-se a coordenada de sa da forma apresentada na seccedilatildeo

5111 Seja sb o surfel usado na classificaccedilatildeo de sa Se os discos de sb e sa

se intersectam sa eacute classificado como ldquointerseccedilatildeordquo

(a) (b)

(c) (d)

Figura 26- a modelos natildeo se intersectam b modelo intersecta noacutes fora c modelo intersecta apenas noacutes dentro d modelo intersecta noacutes dentro e noacutes fora

513 Criaccedilatildeo do modelo resultado

Um novo modelo eacute criado com os seguintes surfels (de acordo com a

operaccedilatildeo booleana escolhida pelo usuaacuterio - veja Regra 1 da seccedilatildeo 41)

Uniatildeo - surfels de A que estatildeo fora de B + surfels de B que estatildeo fora de A

Melhorias Propostas 55

Interseccedilatildeo - surfels de A que estatildeo dentro de B + surfels de B que estatildeo

dentro de A

Diferenccedila A-B - surfels de A que estatildeo fora de B + surfels de B que estatildeo

dentro de A (com orientaccedilatildeo invertida)

Como natildeo foi implementado tratamento especial algum de interseccedilatildeo para

o nosso plugin os surfels que se intersectam satildeo mantidos no modelo resultado

final sem modificaccedilotildees

Descrito o algoritmo vejamos a seguir a sua implementaccedilatildeo

52 Implementaccedilatildeo

Este algoritmo foi implementado na forma de um plugin para o software

PointShop 3D [11] Este plugin foi desenvolvido na linguagem C e no sistema

operacional Windows

A escolha deste tipo de implementaccedilatildeo permitiu-nos usar o software

PointShop para os testes do algoritmo Estes testes foram feitos com os modelos

disponibilizados para o PointShop [11] Nesta seccedilatildeo apresentaremos o software

PointShop e as principais estruturas de dados usadas em nosso plugin

O Pointshop eacute um software aberto com seu coacutedigo disponiacutevel e preparado

para trabalhar com plugins Eacute um software de ediccedilatildeo de modelos 3D por pontos

Ele permite aleacutem de visualizar o modelo alterar as suas caracteriacutesticas como

cor brilho e fazer mapeamento de textura iluminaccedilatildeo filtragem (Figura 27)

Melhorias Propostas 56

Figura 27-Software PointShop 3D com dois modelos carregados na sua cena

Aleacutem disso pode-se criar uma cena com vaacuterios modelos e visualizaacute-los de

qualquer ponto de vista Implementa o virtual trackball para rotacionaacute-los e

transladaacute-los Usa uma iluminaccedilatildeo simples direcional A sua arquitetura eacute

extensiacutevel permite que o usuaacuterio adicione seus proacuteprios componentes ao

sistema Possui trecircs tipos de componentes

ldquoToolsrdquo fornece funcionalidades para ediccedilatildeo interativa de superfiacutecie Satildeo

disponibilizados na ldquotoolbarrdquo

Plugins fornece funcionalidades para processar em um soacute passo

modelos ou partes deles selecionadas Satildeo disponibilizados no menu ldquoPluginsrdquo

Renderes fornece funcionalidades de display para os modelos

Para esta dissertaccedilatildeo foi escolhida a construccedilatildeo do componente Plugin

por adequar-se agrave nossa proposta e ser a mais simples de ser construiacuteda O

PointShop [11] jaacute conteacutem uma tool que executa operaccedilotildees booleanas e

deformaccedilatildeo free-form sobre os modelos carregados na cena usando o meacutetodo

de Pauly [3] apresentado no capiacutetulo 4 O nosso plugin Operaccedilotildees Booleanas

implementa o algoritmo descrito na seccedilatildeo anterior baseado na proposta de

Melhorias Propostas 57

Adams e Dutreacute [2] Uma comparaccedilatildeo entre o nosso plugin e a tool de Pauly [3] eacute

feita no capiacutetulo 6

Figura 28-Menu do PointShop com o plugin e as opccedilotildees para operaccedilotildees booleanas

Para se executar o plugin o usuaacuterio precisa carregar dois modelos na

cena do PointShop acionar o plugin informando a operaccedilatildeo que seraacute executada

O plugin executaraacute o algoritmo acima proposto e carregaraacute o resultado na cena

do Pointshop retirando os modelos anteriores

521 Estruturas de Dados

Como vimos o software PointShop [11] trabalha com modelos por pontos

Um modelo deste software descrito na seccedilatildeo 42 conteacutem todas as informaccedilotildees

que o algoritmo proposto em Bart [2] necessita Abaixo relacionamos as

Melhorias Propostas 58

principais estruturas de dados do PointShop usadas no plugin e as principais

estruturas de dados do nosso plugin

As principais classes do PointShop usadas no plugin satildeo

Classe Scene

Classe Objects

Classe SurfelColections

Classe Surfel

Classe StatusBar

Classe Transformer

A hierarquia de dados eacute a seguinte a Scene conteacutem vaacuterios Objects os

quais conteacutem SurfelColections Cada SurfelColections conteacutem Surfels que

suportam uma ou mais propriedades tais como cor difusa cor especular

Classe Scene Classe que representa uma cena que conteacutem modelos

Classe Object Um modelo eacute representado pela classe Object que

conteacutem uma SurfelCollection e as matrizes de transformaccedilatildeo para rotaccedilatildeo

escala e translaccedilatildeo Cada Object eacute identificado pelo seu nome que eacute uacutenico na

Scene O meacutetodo getUniqueName retorna um nome uacutenico Cada Object tem sua

proacutepria matriz de transformaccedilatildeo que pode ser modificada com setRotation

rotate setPosition translate setScale e scale Objects podem ser copiados com

copy Objects consiste em um conjunto de surfels os quais podem ser

recuperados pela getSurfelCollection O Object pode ser ativado com

setActiveObject e recuperado com getActiveObject

Objects podem ser adicionados ou removidos com addObject e

removeObject Os Objects podem ser obtidos pela getFirstObject e

getNextObject

Classe SurfelCollection representa o conjunto de surfels de um modelo

Cada surfelcollection consiste em um conjunto de surfels (SurfelInterface) de

tamanho obtido por getNofSurfels Os surfels podem ser recuperados com

getFirstSurfel getCurrentSurfel e getNextSurfel

A SurfelCollection conteacutem um PropertyDescriptor e uma SurfelList

A SurfelList eacute uma lista duplamente encadeada de surfels Possui os

atributos firstSurfel lastSurfel currentSurfel que satildeo ponteiros para uma

SurfelInterface nSurfels que eacute o nuacutemero de Surfels

A SurfelInterface define a API para os surfels que satildeo os menores

elementos que compotildeem um Object Podem ser considerados como pontos com

uma normal que define a orientaccedilatildeo do ciacuterculo (ou elipse) que seraacute desenhado

Melhorias Propostas 59

tatildeo logo o surfel seja renderizado Tem como atributos dois ponteiros (next e

prev) para SurfelInterface

PropertyDescriptor consiste em ateacute 32 valores descrevendo quais as

propriedades a SurfelInterface suporta

Classe Surfel classe que representa o surfel

Classe StatusBar classe que imprime mensagens na tela Os plugins

podem mandar mensagens para o usuaacuterio pela StatusBar

Mensagens texto podem ser impressas com showMessage O progresso

de uma operaccedilatildeo pode ser indicado com setProgress ou resetProgress

Classe Transformer representa a transformaccedilatildeo entre sistemas de

coordenadas Esta classe fornece meacutetodos para transformar pontos e vetores

entre os diferentes sistemas de coordenadas do Pointshop

A seguir apresentamos as principais estruturas de dados do plugin

Operaccedilotildees Booleanas

As principais estruturas de dados do plugin satildeo boundingbox tree no

lista_surfel surfel

Boundingbox conteacutem dois pontos 3D que definem uma caixa que conteacutem

o modelo um ponto com menores coordenadas xy e z e outro ponto com

maiores xyz

Tree representa a octree do modelo Cada registro conteacutem um ponteiro

para um noacute e oito ponteiros para as 8 octrees filhas

No representa um noacute da octree Conteacutem os seguintes dados

- localizaccedilatildeo do noacute que eacute o canto inferior esquerdo do noacute

- lista_surfel (preenchida apenas para noacutes folha cheios)

- quantidade de surfels do noacute

- classificaccedilatildeo do noacute como dentro fora ou contorno

- classificaccedilatildeo do noacute em relaccedilatildeo a outro modelo

- indica se o noacute eacute folha ou natildeo

- vetor que eacute a meacutedia das normais dos surfels do noacute

- ponto que eacute a meacutedia das localizaccedilotildees dos surfels do noacute

- surfel que tem (entre todos os surfels do noacute) o maior produto interno

entre a sua normal e a normal meacutedia

- surfel que tem (entre todos os surfels do noacute) o menor produto interno

entre a sua normal e a normal meacutedia

- produto interno maacuteximo e miacutenimo entre as normais dos surfels do noacute e a

normal meacutedia deste noacute

Melhorias Propostas 60

- indica se o noacute conteacutem surfels com normais em sentido oposto (produto

interno entre elas eacute menor que zero)

- classificaccedilatildeo dos oito cantos do noacute

lista_surfels lista em que cada registro conteacutem um apontador para um

surfel e um apontador para o proacuteximo registro

surfel representa o surfel da octree Conteacutem a classificaccedilatildeo em relaccedilatildeo a

outro modelo e um ponteiro para o surfel do Poinshop

Resultados 61

6 Resultados

Neste capiacutetulo apresentamos os testes realizados com o plugin para o

PointShop implementado para esta dissertaccedilatildeo a comparaccedilatildeo deste plugin com

o plugin de Pauly [3] e a comparaccedilatildeo entre o meacutetodo de Adams e Dutreacute [2] e o

meacutetodo de Pauly [3]

61 Testes

Os testes foram feitos em um PC x86 Family 6 261600 KB de RAM sem

placa graacutefica sistema operacional Windows 2000 O plugin foi implementado na

linguagem C

Os modelos usados para os testes satildeo modelos disponibilizados no

PointShop [11] Vale lembrar que o meacutetodo implementado em nosso plugin eacute

restrito a modelos soacutelidos e portanto foram usados apenas estes modelos

soacutelidos para os testes

O modelo na Figura 29 que eacute um dos modelos disponibilizados no

PointShop [11] foi usado para mostrar o resultado das operaccedilotildees realizadas

pelo plugin implementado nesta dissertaccedilatildeo O modelo Igea eacute um modelo soacutelido

que conteacutem 134345 surfels

Resultados 62

Figura 29-Modelo do PointShop Igea

Para realizar as operaccedilotildees este modelo foi carregado na cena do

PointShop duas vezes e um deles colorido de vermelho As Figuras 30 31 32

mostram o resultado da operaccedilatildeo de uniatildeo interseccedilatildeo e diferenccedila

respectivamente Os nuacutemeros de surfels dos modelos resultantes satildeo mostrados

na Tabela 2

Resultados 63

Figura 30-Resultado da uniatildeo de duas Igeas

Figura 31-Resultado da interseccedilatildeo de duas Igeas

Resultados 64

Figura 32-Resultado da diferenccedila entre duas Igeas

Tabela 2-Nuacutemero de surfels dos modelos resultantes

Observamos que o nuacutemero de surfels dos modelos resultantes estaacute

coerente com as figuras dos seus modelos

Para avaliar o tempo de processamento das operaccedilotildees foram realizados

vaacuterios testes com o objetivo de obter uma meacutedia dos tempos de realizaccedilatildeo de

cada operaccedilatildeo Tambeacutem foram armazenados os tempos da criaccedilatildeo das duas

octrees e da classificaccedilatildeo de todos os surfels dos dois objetos (como dentro ou

fora do outro modelo) Estes testes foram feitos usando o modelo Igea A meacutedia

dos tempos de processamento foi calculada e os resultados satildeo mostrados na

Tabela 3 Verificamos que o maior tempo gasto eacute para criaccedilatildeo das octrees

Verificamos tambeacutem que este resultado apresentado eacute similar ao resultado

verificado empiricamente com o plugin de Pauly [3] Os tempos gastos para

realizar as operaccedilotildees satildeo similares e o maior tempo gasto no plugin de Pauly

tambeacutem eacute para inicializaccedilatildeo de suas estruturas de dados que incluem a kd-tree

Operaccedilatildeo Nuacutemero de surfels do modelo resultado

Uniatildeo 189715

Interseccedilatildeo 72225

Diferenccedila 134552

Resultados 65

Operaccedilatildeo Criaccedilatildeo das

Octrees (seg)

Classificaccedilatildeo

(seg)

Criaccedilatildeo do

resultado (seg)

Total (seg)

Uniatildeo 39375 1324 18925 7154

Interseccedilatildeo 38585 1585 09547 63982

Diferenccedila 399875 1504 1729 729475

Tabela 3- Meacutedia dos tempos de processamento para as operaccedilotildees com duas Igeas

Com o objetivo de expor melhor os resultados deste trabalho

apresentamos abaixo mais um teste das operaccedilotildees booleanas usando o nosso

plugin Os modelos usados para este segundo teste satildeo o Max Planck e o Male

ambos modelos soacutelidos disponibilizados no PointShop Estes modelos satildeo

mostrados nas figura 33 e 34

O primeiro Max Planck conteacutem 52809 surfels

Figura 33-Modelo do PointShop MaxPlanck

O segundo modelo abaixo Male conteacutem 148138 surfels

Resultados 66

Figura 34-Modelo do PointShop Male

As Figuras 353637 mostram o resultado da operaccedilatildeo de uniatildeo interseccedilatildeo

e diferenccedila respectivamente usando os dois modelos acima Podemos observar

pela figura 35 que o resultado da operaccedilatildeo de diferenccedila neste caso gerou um

modelo resultado com trecircs partes desconexas Os nuacutemeros de surfels de cada

modelo resultado satildeo mostrados na Tabela 5

Figura 35- Resultado da Uniatildeo do modelo Male com MaxPlanck

Resultados 67

Figura 36-Resultado da interseccedilatildeo do modelo Male com o MaxPlanck

Figura 37-Resultado da diferenccedila do modelo Male do modelo MaxPlanck

As meacutedias de tempos de processamento foram calculadas da mesma

forma que o primeiro teste com o modelo Igea acima apresentado Os

resultados satildeo mostrados na Tabela 4 Podemos observar que este teste

Resultados 68

apresenta tempos um pouco menores que o teste com o modelo Igea Isto se

deve ao fato de que o modelo MaxPlanck ser significativamente menor que o

modelo Igea MaxPlanck possui 52809 surfels e Igea conteacutem 134345 surfels

Operaccedilatildeo Criaccedilatildeo das

Octrees (seg)

Classificaccedilatildeo

(seg)

Criaccedilatildeo do

resultado (seg)

Total

(seg)

Uniatildeo 3012 1254 102 5285

Interseccedilatildeo 2985 0901 0861 4747

Diferenccedila 2965 0911 0791 4667

Tabela 4-Tempo de processamento das operaccedilotildees com os modelos MaxPlanck e Male

Operaccedilatildeo Nuacutemero de surfels do resultado

Uniatildeo 126532

Interseccedilatildeo 88414

Diferenccedila 77635

Tabela 5-Nuacutemero de surfels dos modelos resultados das operaccedilotildees com os modelos MaxPlanck e Male

Em seguida apresentaremos uma comparaccedilatildeo entre o nosso plugin e o

plugin de Pauly[3] e tambeacutem uma comparaccedilatildeo entre o meacutetodo de Adams e Dutreacute

[2] e o meacutetodo de Pauly [3]

62 Comparaccedilatildeo entre os dois meacutetodos que realizam operaccedilotildees booleanas

A comparaccedilatildeo entre os meacutetodos de Pauly[3] e de Adams e Dutreacute foi feita

em termos de tempo de processamento e em termos conceituais Em termos de

tempo de processamento comparamos o plugin de Pauly[3] com o nosso plugin

Em termos de tempo de processamento verifica-se empiricamente que os

dois meacutetodos apresentam tempos bastante similares Entretanto o tempo de

processamento do algoritmo aqui implementado ainda pode ser melhorado com

Resultados 69

o uso do meacutetodo TINN [19] que foi proposto em Adams[2] - para otimizar a

pesquisa do surfel mais proacuteximo a um ponto que estaacute localizado na regiatildeo de um

noacute que conteacutem surfels - veja seccedilatildeo 42 O uso deste meacutetodo natildeo foi

implementado para este trabalho e a sua implementaccedilatildeo melhoraria o tempo de

resposta do algoritmo Aleacutem disso o trabalho de Sara F Frisken [12] citado no

capiacutetulo 2 apresenta uma otimizaccedilatildeo no uso de octrees que pode ser

incorporada no algoritmo implementado neste trabalho

Em termos conceituais vamos fazer a comparaccedilatildeo do uso do que

chamamos aqui de Regra 2 do tratamento de interseccedilatildeo e do tratamento de

ldquoarestas vivasrdquo

Como vimos na seccedilatildeo 41 tanto o algoritmo implementado nesta

dissertaccedilatildeo baseado no trabalho de Adams e Dutreacute como o meacutetodo de Pauly

[3] parte do que chamamos aqui de Regra 2 para realizar operaccedilotildees booleanas

com pontos Mas cada um destes meacutetodos daacute um tratamento diferente para o

uso desta regra

O meacutetodo de Pauly usa a Regra 2 para classificaccedilatildeo de cada ponto ou de

cada surfel Para classificar um surfel de B sb como dentro ou fora de A eacute

encontrado o surfel de A sa mais proacuteximo a sb e sb eacute classificado a partir de sa

Para encontrar sa Pauly utiliza uma kd-tree Como esta pesquisa para encontrar

sa eacute cara (mesmo usando uma kd-tree) Pauly utiliza uma esfera que conteacutem

pontos com a mesma classificaccedilatildeo (seccedilatildeo 432) e diminui em 90 este nuacutemero

de pesquisas Pauly utiliza tambeacutem a representaccedilatildeo impliacutecita MLS (Moving Least

Squares) para casos em que a Regra 2 poderia falhar e para tratamento de

interseccedilotildees Entretanto o nuacutemero destes casos em que a Regra 2 poderia falhar

eacute muito pequeno E a representaccedilatildeo MLS natildeo eacute uma estrutura simples de ser

implementada Portanto natildeo encontramos vantagens em usar MLS para estes

casos O meacutetodo de Adams e Dutreacute natildeo trata estes casos e na praacutetica

apresenta resultados bastante satisfatoacuterios como foi mostrado Portanto

consideramos que valeria a pena fazer algum tratamento especial para estes

casos se fosse um procedimento simples Para a execuccedilatildeo do algoritmo de

Pauly o uso de MLS natildeo interfere significativamente porque a construccedilatildeo desta

representaccedilatildeo natildeo eacute feita somente para realizar operaccedilotildees booleanas Os testes

empiacutericos que fizemos com o algoritmo de Pauly natildeo incluem a construccedilatildeo desta

representaccedilatildeo

Aparentemente os dois algoritmos satildeo bastante parecidos um usa octrees

e o outro usa kd-tree As duas estruturas de dados satildeo simples e otimizam a

classificaccedilatildeo dos surfels de um modelo como dentro ou fora do outro modelo

Resultados 70

Mas existe uma diferenccedila conceitual entre dois que merece ser destacada O

algoritmo aqui implementado usa a Regra 2 para classificaccedilatildeo dos noacutes de uma

octree e armazena esta octree classificada (ver capiacutetulo 5) Assim na maioria dos

casos natildeo seraacute necessaacuterio encontrar o surfel mais proacuteximo para classificar um

ponto (ou um surfel) como fora ou dentro de um modelo Caso o ponto esteja em

uma aacuterea da octree classificada ele teraacute a classificaccedilatildeo dada agravequela aacuterea A

pesquisa ao surfel mais proacuteximo seraacute feita apenas nos casos em que o ponto a

ser classificado estaacute localizado entre os planos que subdividem um noacute cheio

O uso desta octree classificada levanta uma questatildeo que natildeo foi citada no

trabalho de Adams e Dutreacute que eacute a proximidade desta estrutura (armazenada)

de octree classificada com uma representaccedilatildeo volumeacutetrica do objeto Sendo

assim esta estrutura pode ser aproveitada para outras funccedilotildees aleacutem da

classificaccedilatildeo dos surfels Por exemplo podemos ter uma aproximaccedilatildeo do

volume de uma cena somando os volumes aproximados dos modelos que a

compotildeem Como o enfoque deste trabalho eacute operaccedilatildeo booleana natildeo vamos nos

aprofundar nesta questatildeo

Outra importante diferenccedila entre os dois trabalhos que jaacute foi explicada na

seccedilatildeo 432 eacute que o meacutetodo de Pauly aplica-se a modelos soacutelidos ou natildeo

soacutelidos enquanto que o meacutetodo de Adams e Dutreacute aplica-se somente a modelos

soacutelidos

Quanto ao tratamento de interseccedilatildeo em termos de visualizaccedilatildeo todos os

dois resolvem bem o problema O tratamento de interseccedilatildeo nos dois trabalhos

tambeacutem resolve o problema da validade da Regra 2 (ver seccedilatildeo 44) Entretanto

o tratamento de Adams e Dutreacute natildeo depende da renderizaccedilatildeo sendo portanto

mais portaacutevel Aleacutem disso uma desvantagem do meacutetodo de Pauly eacute o uso da

representaccedilatildeo impliacutecita MLS (ldquoMoving Least Squaresrdquo) do objeto para obter os

pontos exatamente na curva de interseccedilatildeo Esta representaccedilatildeo torna o

tratamento de interseccedilatildeo mais complexo e a vantagem apresentada natildeo eacute tatildeo

significativa para este tratamento de interseccedilatildeo

Conclusatildeo 71

7 Conclusatildeo

Concluiacutemos entatildeo que as escolhas de Adams e Dutreacute por usar uma

octree classificada e pelo tratamento dado agrave interseccedilatildeo satildeo mais abrangentes

que a escolha de Pauly E consideramos que quanto mais abrangente for uma

escolha conceitual mais resultados poderemos tirar dela No caso de Adams e

Dutreacute eles estendem o problema de classificar um ponto para classificar todo o

modelo Como foi citado ele quase fornece uma representaccedilatildeo volumeacutetrica do

modelo Esta aproximada representaccedilatildeo volumeacutetrica pode nos fornecer outras

informaccedilotildees como por exemplo o volume aproximado do modelo

Aleacutem disso o uso da representaccedilatildeo impliacutecita MLS no meacutetodo de Pauly cria

uma complexidade a mais para o meacutetodo sem apresentar vantagens para a

realizaccedilatildeo de operaccedilotildees booleanas que eacute o nosso enfoque

Logo podemos dizer que o meacutetodo de Adams e Dutreacute apresenta as

seguintes vantagens em relaccedilatildeo ao de Pauly

- a estrutura de octree classificada aleacutem de ser usada para classificaccedilatildeo

fornece informaccedilotildees adicionais como volume aproximado do objeto

- o tempo de processamento no meacutetodo de Adams e Dutreacute tende a ser

melhor que no meacutetodo de Pauly se implementadas as melhorias acima citadas e

se colocaacutessemos em consideraccedilatildeo o uso da representaccedilatildeo impliacutecita MLS

(Moving Least Squares)

- o tratamento de interseccedilatildeo de Adams e Dutreacute apresenta a vantagem da

portabilidade ou seja iraacute funcionar independente do algoritmo de renderizaccedilatildeo

utilizado

E as vantagens do meacutetodo de Pauly em relaccedilatildeo ao de Adams e Dutreacute

- a colocaccedilatildeo de surfels exatamente na curva de interseccedilatildeo

- a possibilidade de trabalhar com modelos soacutelidos ou natildeo soacutelidos

E finalizando concluiacutemos que o estudo relatado nesta dissertaccedilatildeo foi

importante por

- fornecer um breve estudo sobre modelagem por pontos uma nova e

promissora aacuterea dentro da computaccedilatildeo graacutefica

Conclusatildeo 72

- por apresentar uma avaliaccedilatildeo dos dois trabalhos existentes sobre

operaccedilotildees booleanas com pontos encontrando as vantagens de cada um

e levantando questotildees que natildeo tinham sido citadas nos trabalhos originais

- por propor e implementar melhorias ao trabalho de Adams e Dutreacute

71 Trabalhos Futuros

Nossa implementaccedilatildeo pode ser ainda evoluiacuteda com as propostas

apresentadas na seccedilatildeo 62 Como observamos o tempo de processamento do

algoritmo aqui implementado ainda pode ser melhorado com o uso do meacutetodo

TINN [19] - que foi proposto em Adams[2] - para otimizar a pesquisa do surfel

mais proacuteximo a um ponto que estaacute localizado na regiatildeo de um noacute que conteacutem

surfels Aleacutem disso o trabalho Simple and Efficient Trasversal Methods for

Quadtrees and Octrees de Sara F Frisken [12] citado no capiacutetulo 2 apresenta

uma otimizaccedilatildeo no uso de octrees Outra proposta para melhorar o tempo de

processamento do algoritmo aqui implementado eacute usar a forma de trabalhar com

octrees apresentada neste trabalho

O trabalho de Adams e Dutreacute [2] eacute aplicado apenas a objetos soacutelidos O

nosso plugin portanto aplica-se somente a este tipo de objeto Jaacute o trabalho de

Pauly[3] eacute aplicado tambeacutem a modelos natildeo soacutelidos Apresentamos como

proposta a um trabalho futuro a extensatildeo do algoritmo aqui implementado para

modelos natildeo soacutelidos O surfel pode conter uma informaccedilatildeo adicional que indica

se ele estaacute delimitando um volume ou natildeo Assim pode-se ter um modelo com

ldquopartes soacutelidasrdquo e ldquopartes natildeo soacutelidasrdquo Por exemplo a uniatildeo de um plano com

uma esfera poderia resultar numa esfera com ldquoabasrdquo (seriam as partes do plano

que estariam fora da esfera) O modelo resultado teria uma parte correspondente

a um espaccedilo 3D (esfera) e outra parte que seria uma superfiacutecie 2D posicionada

no espaccedilo 3D sem delimitar algum volume (abas)

Muitos trabalhos podem ser desenvolvidos aplicando-se o modelo por

pontos em animaccedilatildeo jogos visualizaccedilatildeo de terrenos criaccedilatildeo de protoacutetipos etc

considerando-se a eficiecircncia e simplicidade do modelo E mais especificamente

as operaccedilotildees booleanas com pontos podem ser aplicadas para criaccedilatildeo de

cenaacuterios testes de colisotildees e nestes casos a representaccedilatildeo usando octrees

pode ser mais explorada considerando-se o seu potencial de representaccedilatildeo

volumeacutetrica de um objeto

Referecircncias Bibliograacuteficas 73

8 Referecircncias Bibliograacuteficas

[1] MAumlNTYLAuml M An Introduction to Solid Modeling Computer Science Press 1988

[2] ADAMS B DUTREacute P Interactive Boolean Operations on Surfel-

Bounded Solids Proceedings of SIGGRAPH 2003 San Diego USA 2003

[3] PAULY M KEISER R KOBBELT L GROSS M Shape Modeling

with Point-Sampled Geometry SIGGRAPH 2003 Computer Graphics

Proceedings Annual Conference Series ACM Press ACM SIGGRAPH 2003

[4] LEVOY M WHITTED T The Use of Points as Display Primitives

Technical Report TR 85-022 The University of North Carolina at Chapel Hill

Department of Computer Science 1985

[5] PFISTER H ZWICKER M VAN BAAR J GROSS M 2000 Surfels

Surface Elements as Rendering Primitives SIGGRAPH 2000 pp 335ndash342 New

Orleans LA July 23-28 2000

[6] ZWICKER M PFISTER H VAN BAAR J GROSS M Surface

Splatting SIGGRAPH 2001

[7] PAULY M KOBBELT L GROSS M Multiresolution Modeling of

Point-Sampled Geometry CS Techinical Report 378 September 16 2002

[8] CURLESS B New Methods for Surface Reconstruction from Range Images PhD thesis Stanford University 1997

[9] RUSINKIEWICZ S Real-time Acquisition and Rendering of Large 3D Models PhD thesis Stanford University 2001

Referecircncias Bibliograacuteficas 74

[10] AMENTA N BERN M KAMVYSSELIS M A new Voronoi-Based

Surface Reconstruction Algorithm SIGGRAPH 98 Conference proceedings pp

415-421 New York 1998

[11] ZWICKER M PAULY M KNOLL O GROSS M Pointshop 3D an

Interactive System for Point-Based Surface Editing Proceedings of SIGGRAPH 2002 San Antonio TX July 2002

[12] FRISKEN S PERRY R Simple and Efficient Traversal Methods for

Quadtrees and Octrees Journal of Graphics Tools Vol 7 Issue 3 May 2003

[13] CORREcircA W T OLIVEIRA M M Silva C T Wang J

Modeling and Rendering of Real Environments

Revista de Informaacutetica Teoacuterica e Aplicada (Brazilian Journal of Theoretic and Applied Computing) 9(2)127-156 2002

[14] DAVIS J MARSCHNER S GARR M LEVOY M Filling Holes in

Complex Surfaces Using Volumetric Diffusion First International Symposium on 3D Data Processing Visualization Transmission June 2002

[15] RAumlSAumlNEN J Surface Splatting Theory Extensions and Implementation Masterrsquos Thesis Dept of Computer Science Helsinki

University of Technology May 28 2002

[16] PAULY M Point Primitives for Interactive Modeling and Processing of 3D Geometry PhD thesis Federal Institute of Technology (ETH)

of Zurich 2003

[17] HOPPE H DEROSE T DUCHAMP T MCDONALD J

STUELZLE W Surface Reconstruction from Unorganized Points Computer Graphics 26(2)71ndash78 July 1992

[18] ALEXA M BEHR J COHEN-OR D FLEISHMAN S LEVIN D

SILVA C T Point Set Surfaces IEEE Visualization 2001 pp 21ndash28 October

2001

Referecircncias Bibliograacuteficas 75

[19] GREENSPAN M GODIN G TALBOT J Acceleration of Binning

Nearest Neighbor Methods Proceedings of Vision Interface 2000 pp 337-

344

[20] MENCL R Reconstruction of Surfaces from Unorganized Three-Dimensional Point Clouds Dissertation Dortmund Univ 2001

[21] KRIVANEK J Representing and Rendering Surfaces With Points

httpciteseernjneccomkrivanek03representinghtml Acesso em 30 jul

2003

[22] KRISTJANSSON ET AL Approximate Boolean Operations on Free-

form Solids Proceedings of SIGGRAPH 01 2001

16

tecnologia destes equipamentos tem progredido muito e eles tecircm se tornado

mais baratos A tendecircncia eacute que o uso destes equipamentos se torne o mais

utilizado meio de obtenccedilatildeo de modelos 3D Isto porque construir modelos 3D

bastante detalhados por meio de um software de modelagem eacute muito trabalhoso

O processo de aquisiccedilatildeo de modelos por meio destes equipamentos automatiza

este processo de construccedilatildeo

No trabalho com modelos 3D frequumlentemente satildeo usadas as operaccedilotildees

booleanas que satildeo operaccedilotildees de uniatildeo interseccedilatildeo ou diferenccedila No esquema

de representaccedilatildeo CSG estas operaccedilotildees fazem parte da representaccedilatildeo do

objeto Estas operaccedilotildees tambeacutem podem ser usadas para criar novos modelos ou

para alteraacute-los Na maioria dos tipos de representaccedilatildeo de objetos 3D estas

operaccedilotildees satildeo bastante complexas

A simplicidade da representaccedilatildeo por pontos permite que as operaccedilotildees

booleanas sejam realizadas com facilidade se compararmos com a realizaccedilatildeo

destas operaccedilotildees em outros tipos de representaccedilatildeo como malhas poligonais

Motivada pelas vantagens desta modelagem e pela utilidade destas operaccedilotildees

esta dissertaccedilatildeo apresenta uma introduccedilatildeo geral de modelagem por pontos e

trabalha mais especificamente com operaccedilotildees booleanas em objetos

modelados por pontos Dois trabalhos que exploram as operaccedilotildees booleanas na

modelagem por pontos seratildeo abordados o trabalho de Adams e Dutreacute [2] e o

trabalho de Pauly et al [3] O presente trabalho implementa o meacutetodo de Adams

e Dutreacute com algumas melhorias e faz uma comparaccedilatildeo entre o meacutetodo de Pauly

[3] e o meacutetodo de Adams e Dutreacute [2] com nossas melhorias

Como contribuiccedilotildees dadas por este trabalho apresentamos

- um estudo sobre modelagem por pontos

- um estudo sobre operaccedilotildees booleanas com pontos

- proposta de melhorias ao algoritmo proposto por Adams e Dutreacute [2]

- comparaccedilatildeo dos dois meacutetodos propostos para realizar estas operaccedilotildees

meacutetodo de Pauly et al [3] e de Adams e Dutreacute [2]

Este trabalho vem apresentado nesta dissertaccedilatildeo organizada em sete

capiacutetulos conforme descrito resumidamente a seguir

O capiacutetulo 2 cita alguns trabalhos sobre modelagem por pontos que estatildeo

relacionados a este trabalho

O capiacutetulo 3 apresenta uma visatildeo geral do modelo por pontos e explica

melhor alguns trabalhos citados no capiacutetulo 2

17

O capiacutetulo 4 apresenta operaccedilotildees booleanas com pontos e os dois

meacutetodos para realizaacute-las na modelagem por pontos meacutetodo de Pauly et al [3] e

de Adams e Dutreacute [2]

O capiacutetulo 5 apresenta algumas melhorias ao algoritmo de Adams e Dutreacute

[2] e a nossa implementaccedilatildeo deste algoritmo

O capiacutetulo 6 traz os resultados obtidos

E finalmente o capiacutetulo 7 encerra o trabalho com uma conclusatildeo e com

possiacuteveis trabalhos futuros

Trabalhos relacionados 18

2 Trabalhos relacionados

O primeiro pesquisador a propor o uso de pontos como primitiva graacutefica foi

Levoy em [4] Ele propotildee o uso de pontos como primitiva de renderizaccedilatildeo e

discute a conversatildeo dos outros modelos para o modelo por pontos

Nos uacuteltimos anos vaacuterios trabalhos importantes tecircm sido realizados na aacuterea

em diversos segmentos em visualizaccedilatildeo podemos destacar os trabalhos de

Pfister [5] e de Zwicker [6] que usam pontos como primitiva de renderizaccedilatildeo e

com resultados praacuteticos interativos muito bons

Em [7] Pauly et al propotildeem algoritmos para modelagem multi-resoluccedilatildeo

em modelos por pontos

Os trabalhos de Curless [8] e Rusinkiewicz [9] discutem os meacutetodos de

aquisiccedilatildeo que consistem em obter uma amostragem de pontos da superfiacutecie do

objeto real por meio de equipamentos como por exemplo o scanner 3D

Nas operaccedilotildees booleanas a interseccedilatildeo das superfiacutecies dos modelos

iniciais seraacute parte do modelo resultado e para ser representada corretamente

precisa ser reconstruiacuteda A reconstruccedilatildeo da superfiacutecie tambeacutem eacute usada na

visualizaccedilatildeo de um modelo Um trabalho significativo na aacuterea de reconstruccedilatildeo de

superfiacutecies estaacute em [10] de N Amenta etal Este trabalho apresenta uma

soluccedilatildeo praacutetica com garantias teoacutericas para este problema e uma heuriacutestica para

o tratamento de arestas vivas a questatildeo mais difiacutecil desta aacuterea Um exemplo

de uma aresta viva eacute o encontro de dois planos natildeo coincidentes

Frequumlentemente a interseccedilatildeo citada acima (interseccedilatildeo entre os modelos iniciais)

gera uma aresta viva (seccedilatildeo 4223)

O algoritmo aqui implementado eacute um plugin para o software PointShop 3D

[11] de Zwicker et al software de ediccedilatildeo de modelos com pontos O PointShop

tem seu coacutedigo aberto documentaccedilatildeo e trabalha com plugins Ele permite a

visualizaccedilatildeo e ediccedilatildeo interativa do modelo por pontos Eacute o uacutenico software livre

disponiacutevel com estas caracteriacutesticas Esta implementaccedilatildeo na forma de um plugin

facilitou muito o trabalho pois natildeo foi necessaacuterio implementar a visualizaccedilatildeo do

modelo 3D Aleacutem disso o Pointshop conteacutem tambeacutem um plugin com a

implementaccedilatildeo do meacutetodo de Pauly et al [3] discutido nesta dissertaccedilatildeo A

Trabalhos relacionados 19

execuccedilatildeo dos dois plugins que realizam operaccedilotildees booleanas pocircde ser

comparada

Os trabalhos aqui discutidos satildeo o de Bart Adams e Philip Dutreacute [2] e de

Pauly et al[3] que apresentam meacutetodos diferentes para realizaccedilatildeo de

operaccedilotildees booleanas com pontos Adams e Dutreacute utilizam octrees [1] e Pauly

Kd-Tree [16] e MLS (Moving Least Squares) [18] Estes algoritmos satildeo

discutidos no capiacutetulo 4

O trabalho de Sara F Frisken [12] apresenta um algoritmo para realizar

operaccedilotildees em octree de forma mais eficiente Como estas operaccedilotildees estatildeo

presentes em todo o nosso algoritmo este trabalho certamente oferece uma

forma de otimizaccedilatildeo mas que natildeo foi implementada

Modelagem por Pontos 20

3 Modelagem por Pontos

A computaccedilatildeo graacutefica natildeo lida diretamente com o objeto ou com o

fenocircmeno fiacutesico lida com modelos graacuteficos ou geomeacutetricos Modelos graacuteficos

satildeo estruturas computacionais (abstratas) que capturam aspectos de objetos de

interesse para uma aplicaccedilatildeo como forma cor textura etc Se apenas a forma

ou a geometria do objeto eacute relevante temos modelos geomeacutetricos

Estes modelos satildeo usados em vaacuterias aplicaccedilotildees em computaccedilatildeo graacutefica

como roboacutetica visatildeo computacional simulaccedilotildees realistas anaacutelises estruturais

prototipagem projeto e manufatura de produtos eletromecacircnicos arquitetura

Existem vaacuterios tipos de modelos graacuteficos Esta dissertaccedilatildeo trata de um tipo

muito em voga atualmente que eacute o modelo por pontos

Neste capiacutetulo daremos uma visatildeo geral do modelo por pontos

Introduziremos este modelo e seu processo de criaccedilatildeo Seraacute apresentado o que

eacute um modelo por pontos e o conceito de surfel [5] introduziremos os tipos de

distribuiccedilatildeo dos surfels uma estruturaccedilatildeo aplicada a estes surfels e dados que

eles podem conter As quatro proacuteximas subseccedilotildees (Ideacuteia da representaccedilatildeo

Tipos de distribuiccedilatildeo dos surfels Estrutura de multi-resoluccedilatildeo e Dados que um

surfel pode conter) tratam destes toacutepicos Um modelo por pontos pode ser criado

a partir da conversatildeo de outros tipos de modelagem NURBS por exemplo para

o modelo por pontos ou a partir de um processo de aquisiccedilatildeo Esta uacuteltima forma

de criaccedilatildeo pode ser dividida em duas etapas aquisiccedilatildeo do modelo reconstruccedilatildeo

da superfiacutecie As subseccedilotildees 35 e 36 tratam destas duas etapas

respectivamente A ediccedilatildeo do modelo 3D eacute tratada brevemente na subseccedilatildeo 38

e a sua visualizaccedilatildeo na subseccedilatildeo 37 A apresentaccedilatildeo do processo de aquisiccedilatildeo

(seccedilatildeo 35) eacute baseada no tutorial de W T Correcirca [13] A etapa de ediccedilatildeo 3D

consiste em operaccedilotildees para mudanccedila da cor textura ou forma do modelo Para

esta etapa enfocaremos as operaccedilotildees booleanas que modificam a forma do

modelo ou criam novos modelos

31 Ideacuteia da Representaccedilatildeo

Modelagem por Pontos 21

Figura 1 [20] -Um modelo por pontos e sua visualizaccedilatildeo

Um modelo por pontos representa um objeto atraveacutes de seu contorno Eacute

um tipo de representaccedilatildeo B-Rep (Boundary Representation) [1] Este contorno

consiste em uma superfiacutecie 2D posicionada no espaccedilo 3D Na modelagem por

pontos ela eacute representada por um conjunto de pontos 3D que satildeo uma

amostragem dos (infinitos) pontos que formam a superfiacutecie contiacutenua (Figura 1) A

amostragem pode ser obtida de diversas maneiras Uma delas o processo de

aquisiccedilatildeo progrediu muito nos uacuteltimos anos e este foi um dos fatores que tornou

muito importante o desenvolvimento deste modelo por pontos Outra forma de

gerar amostragem eacute fazer uma conversatildeo de um outro modelo NURBS por

exemplo para o modelo por pontos

Estes pontos satildeo denominados surfels e podem conter aleacutem da posiccedilatildeo

3D outras informaccedilotildees como normal agrave superfiacutecie cor textura raio de alcance A

Figura 2 mostra um conjunto de surfels representando uma superfiacutecie No surfel

em destaque podemos ver o raio de alcance rt e a normal n agrave superfiacutecie

Modelagem por Pontos 22

Figura 2 [5] A superfiacutecie modelada por surfels O surfel em destaque tem raio de alcance

rt e normal n

Como o modelo natildeo armazena qualquer informaccedilatildeo sobre a conexatildeo entre

os surfels a reconstruccedilatildeo da superfiacutecie contiacutenua a partir dele pode exigir

algumas restriccedilotildees na amostragem (seccedilatildeo 36)

32 Tipos de distribuiccedilatildeo dos surfels

Existem dois tipos de distribuiccedilatildeo dos surfels na modelagem por pontos

uniforme e natildeo uniforme Na distribuiccedilatildeo uniforme cada um deles descreve

partes de mesmo tamanho da superfiacutecie Na natildeo uniforme cada surfel armazena

a informaccedilatildeo de seu raio de alcance que eacute o raio do disco que este surfel

representa

A distribuiccedilatildeo uniforme tem a vantagem de ser mais simples e natildeo ser

necessaacuterio armazenar o raio de alcance do disco mas ela apresenta a seguinte

desvantagem se o modelo possui regiotildees com muito detalhe e regiotildees com

pouco detalhe ele teraacute que manter uma alta densidade mesmo nas regiotildees de

poucos detalhes

33 Estrutura de multi-resoluccedilatildeo

Um objeto pode ser representado em vaacuterios niacuteveis de detalhes Por

exemplo podemos representar um mesmo objeto com vaacuterias resoluccedilotildees

diferentes Este conceito pode ser aplicado ao modelo por pontos Desta forma

um modelo eacute representado por uma estrutura hieraacuterquica (uma aacutervore por

exemplo) onde em cada niacutevel temos uma representaccedilatildeo do objeto em uma

Modelagem por Pontos 23

determinada resoluccedilatildeo Em [7] Pauly et al propotildeem algoritmos para modelagem

multi-resoluccedilatildeo em modelos por pontos

34 Dados que um surfel pode conter

Cada surfel armazena sua localizaccedilatildeo e pode tambeacutem conter informaccedilotildees

como a cor ou coordenadas de textura Se a amostragem natildeo for uniforme o

surfel conteacutem a informaccedilatildeo do raio de alcance que eacute o raio de um disco cujo

centro eacute a posiccedilatildeo do surfel O surfel pode tambeacutem conter o vetor normal agrave

superfiacutecie e assim o surfel pode ser visto como um disco orientado A superfiacutecie

tambeacutem pode ser vista como uma superfiacutecie orientada

35 Aquisiccedilatildeo do modelo

Esta introduccedilatildeo sobre aquisiccedilatildeo do modelo aqui apresentada baseia-se no

tutorial de W T Correcirca [13]

O processo de aquisiccedilatildeo consiste em obter uma amostragem de pontos da

superfiacutecie do objeto real por meio de equipamentos como por exemplo o

scanner 3D Eacute uma aacuterea que tem progredido muito nos uacuteltimos anos A

resoluccedilatildeo e a precisatildeo dos equipamentos de aquisiccedilatildeo tecircm melhorado bastante

e o custo deles reduzido de forma significativa Isso possibilita que a aquisiccedilatildeo

de modelos 3D seja usada em aplicaccedilotildees de desenho industrial arte ou em

produtos para a aacuterea de entretenimento O consequumlente maior uso destes

equipamentos criou a necessidade de avanccedilos no tratamento dos seus dados de

saiacuteda que satildeo um conjunto de pontos

Este processo pode ser dividido em trecircs partes [13] aquisiccedilatildeo da

geometria aquisiccedilatildeo da textura e correccedilatildeo de falhas da aquisiccedilatildeo

351 Aquisiccedilatildeo da geometria

Existem vaacuterios meacutetodos de aquisiccedilatildeo da geometria Curless [8] e

Rusinkiewicz [9] classificaram estes meacutetodos em trecircs categorias meacutetodos por

contato transmissatildeo e reflexatildeo

O meacutetodo por contato toca a superfiacutecie do objeto com uma sonda e grava

a posiccedilatildeo Este meacutetodo do qual o Coordinate Measuring Machines (CMMs) eacute

Modelagem por Pontos 24

um exemplo eacute bastante preciso mas eacute muito lento e natildeo adequado a objetos

fraacutegeis

Meacutetodos por transmissatildeo projetam ondas de energia sobre o objeto e

gravam a energia transmitida Por exemplo tomografia computadorizada que

projeta ondas de raio-x sobre o objeto e mede a quantidade de radiaccedilatildeo que

passa atraveacutes dele O resultado eacute um modelo geomeacutetrico de alta resoluccedilatildeo Este

meacutetodo pode captar detalhes do objeto que natildeo satildeo visiacuteveis de fora do objeto

Por outro lado ele eacute caro e arriscado

Meacutetodos por reflexatildeo podem ser oacuteticos ou natildeo-oacuteticos Natildeo-oacuteticos incluem

radares que medem a distacircncia a um objeto enviando microondas ou ondas

sonoras para o objeto e gravando o tempo que a onda gasta para retornar Estes

meacutetodos natildeo satildeo muito precisos nem raacutepidos

Meacutetodos por reflexatildeo oacuteticos podem ser passivos ou ativos Meacutetodos oacuteticos

passivos natildeo interagem com o objeto e incluem teacutecnicas de visatildeo computacional

como shape-from-shading stereo triangulation optical flow e meacutetodos de

decomposiccedilatildeo para video streams Estes meacutetodos raramente constroem

modelos precisos e sua maior aplicaccedilatildeo eacute em reconhecimento de objetos

Meacutetodos oacuteticos ativos projetam luz sobre um objeto de maneira estruturada

e atraveacutes da reflexatildeo da luz determinam a forma do objeto Exemplos satildeo depth

from defocus photometric stereo projected-light triangulation time of flight

Meacutetodos por reflexatildeo oacuteticos ativos tecircm muitas vantagens sobre os passivos tecircm

um melhor desempenho quando natildeo existe textura satildeo mais baratos e mais

robustos e produzem uma amostragem precisa

352 Aquisiccedilatildeo da textura

Idealmente noacutes gostariacuteamos de ter uma completa descriccedilatildeo de como um

ponto da superfiacutecie reflete a luz dependendo do vetor normal a esta superfiacutecie

da direccedilatildeo do raio de luz incidente e do comprimento de onda Tal descriccedilatildeo eacute

conhecida como Bidirectional Reflectance Distribution Function (BRDF) Medir

BRDFs com precisatildeo eacute um problema difiacutecil

Pode-se ter uma aproximaccedilatildeo da aquisiccedilatildeo de cores do objeto tirando

fotos dele O objeto eacute fotografado e a cor de cada ponto da superfiacutecie eacute obtida a

partir de um mapeamento das fotos 2D para o modelo 3D Para mapear a

fotografia agrave geometria precisamos conhecer os paracircmetros de projeccedilatildeo da

cacircmera e a sua posiccedilatildeo no momento em que a foto foi batida Para cada ponto

Modelagem por Pontos 25

3D do modelo encontramos sua projeccedilatildeo 2D no plano da cacircmera e associamos

a cor do pixel nesta projeccedilatildeo agrave cor do ponto 3D

353 Correccedilatildeo das falhas da aquisiccedilatildeo

O processo de aquisiccedilatildeo deixa frequumlentemente buracos no modelo devido

a ruiacutedos no processo ou agrave impossibilidade de aquisiccedilatildeo de determinadas partes

de uma superfiacutecie Estes buracos devem ser corrigidos Pode-se usar por

exemplo um filtro de passa-baixa para remoccedilatildeo de ruiacutedos [14] Meacutetodos de

difusatildeo geomeacutetrica tecircm sido aplicados para preenchimento dos buracos [15] A

correccedilatildeo das falhas eacute tida como um preacute-processamento para o processo de

reconstruccedilatildeo da superfiacutecie contiacutenua (seccedilatildeo 36)

36 Reconstruccedilatildeo da superfiacutecie (contiacutenua) a partir do modelo (discreto)

A reconstruccedilatildeo da superfiacutecie contiacutenua consiste em a partir de um conjunto

natildeo estruturado de pontos obter um modelo contiacutenuo desta superfiacutecie Esta

reconstruccedilatildeo eacute frequumlentemente exigida para um modelo por pontos Na sua

visualizaccedilatildeo podemos desejar focar qualquer parte do modelo Para fazermos

operaccedilotildees booleanas com os modelos podemos querer determinar exatamente

onde eles se intersectam

No entanto natildeo precisamos ter necessariamente a representaccedilatildeo contiacutenua

de todo o objeto ao mesmo tempo A reconstruccedilatildeo desta superfiacutecie a partir dos

pontos amostrados pode ser feita no momento que for mais adequado agrave

aplicaccedilatildeo Na visualizaccedilatildeo a reconstruccedilatildeo pode ser feita na projeccedilatildeo 2D da

parte do modelo em foco (seccedilatildeo 37) Para operaccedilotildees booleanas pode-se

reconstruir apenas a aacuterea da interseccedilatildeo dos modelos

Este processo de reconstruccedilatildeo de superfiacutecie tem sido muito estudado em

modelagem geomeacutetrica e geometria computacional nos uacuteltimos anos O trabalho

mais importante desta aacuterea eacute o trabalho de Amenta et al [10] que foi a primeira

soluccedilatildeo com garantias demonstraacuteveis para este problema de reconstruccedilatildeo de

superfiacutecie A seccedilatildeo 44 explica estes conceitos e o trabalho [10] Este trabalho

demonstra que teoricamente para que a reconstruccedilatildeo da superfiacutecie (contiacutenua) a

partir das amostras seja correta a amostragem deve ser adequada Ele usa o

conceito de ldquoEixo Medialrdquo para definir o que eacute uma amostragem adequada

Modelagem por Pontos 26

(seccedilatildeo 44) Em duas dimensotildees os veacutertices de Voronoi de uma amostragem

densa aproximam o ldquoEixo Medialrdquo da amostragem

Por meio deste conceito de Eixo Medial [1016] obtecircm-se paracircmetros

teoacutericos para a definiccedilatildeo de amostragem adequada e baseado neste conceito

o algoritmo apresentado em [10] traz uma soluccedilatildeo praacutetica para o problema

obtendo uma malha poligonal a partir do modelo por pontos

O PointShop 3D [11] software de ediccedilatildeo de modelos por pontos utilizado

nesta pesquisa faz quando necessaacuterio a reconstruccedilatildeo da superfiacutecie Para isso

o PointShop 3D explora a vizinhanccedila local (surfels vizinhos de acordo com suas

posiccedilotildees) Ele usa o conceito de Eixo Medial para justificar seu meacutetodo de

reconstruccedilatildeo da superfiacutecie que na praacutetica apresenta resultados bastante

satisfatoacuterios apesar de teoricamente natildeo ter garantias [16]

37 Visualizaccedilatildeo do modelo

A primeira abordagem para visualizaccedilatildeo de um modelo por pontos foi

construir uma malha de poliacutegonos a partir dos surfels e renderizaacute-la Mas a

construccedilatildeo de malhas a partir dos surfels eacute um processo muito caro e lento

principalmente para modelos complexos Na tentativa de obter uma visualizaccedilatildeo

interativa do modelo por pontos estatildeo sendo estudadas teacutecnicas que utilizam

surfels como primitiva de visualizaccedilatildeo A ideacuteia foi apresentada inicialmente por

Levoy [4]

Figura 3 [21] -Modelo por pontos e sua renderizaccedilatildeo usando Surface Splatting

Modelagem por Pontos 27

O objetivo da renderizaccedilatildeo a partir dos surfels eacute projetaacute-los na tela e

reconstruir as superfiacutecies de forma contiacutenua sem buracos Para que esta

renderizaccedilatildeo seja amplamente utilizada deve-se ter cuidado com o uso de

memoacuteria e com a qualidade da imagem gerada Teacutecnicas recentes como Surface

Splatting [6] faz a renderizaccedilatildeo interativamente com qualidade (Figura 3)

comparada a outros meacutetodos de renderizaccedilatildeo como Image Based Rendering

Em geral a visualizaccedilatildeo do modelo por pontos pode ser dividida nas seguintes

etapas

- warping - projeccedilatildeo em perspectiva de cada ponto do modelo na tela

processo anaacutelogo agrave projeccedilatildeo de veacutertices dos triacircngulos na malha triangular Se

um pixel da tela estiver contido em mais de uma projeccedilatildeo de surfels (vizinhos)

ou seja mais de um ponto cobre este pixel os atributos destes pontos seratildeo

combinados

- shading por ponto - o processo de shading eacute realizado para cada ponto

visiacutevel (os pontos que natildeo satildeo vistos do ponto de vista em questatildeo devem ser

retirados) Qualquer modelo local de shading pode ser aplicado Uma nova

teacutecnica foi proposta em Surface Splatting [6]

- reconstruccedilatildeo da imagem ndash pixels que natildeo ldquoreceberamrdquo projeccedilatildeo de

nenhum ponto formam buracos na imagem Esta imagem deve ser reconstruiacuteda

sem buracos sem aliasing e as superfiacutecies devem ser reconstruiacutedas de forma

contiacutenua e devem ser ldquosuavizadasrdquo (smooth surface)

Os algoritmos de renderizaccedilatildeo por pontos podem tratar a questatildeo de

buracos na visualizaccedilatildeo de trecircs formas [17]

Detecccedilatildeo e preenchimento de buracos no espaccedilo da tela pontos satildeo

projetados na tela e pixels que natildeo receberam pontos satildeo detectados (buracos)

Para preencher estes buracos que natildeo receberam pontos eacute feita uma

interpolaccedilatildeo entre os vizinhos

Geraccedilatildeo de mais pontos a superfiacutecie eacute interpolada no espaccedilo do modelo

para garantir que todos os pixels recebam pelo menos a projeccedilatildeo de um ponto

Splatting um surfel eacute projetado na tela e sua contribuiccedilatildeo eacute espalhada de

forma diferenciada para os pixels vizinhos Agrave medida em que o vizinho se torna

mais distante a contribuiccedilatildeo do surfel diminui

Raumlsaumlnen faz uma analogia do processo de renderizaccedilatildeo proposto em [6]

com o mapeamento de textura [15] No mapeamento de textura para um

determinado pixel da tela satildeo encontrados os pontos da textura que afetam este

Modelagem por Pontos 28

pixel Num sentido inverso em splatting para um determinado surfel (que

representa a textura) satildeo encontrados os pixels da tela que este surfel afeta

38 Ediccedilatildeo do modelo

Ediccedilatildeo de um modelo 3D consiste em operaccedilotildees que modificam

caracteriacutesticas deste modelo como cor textura forma ou criam novos modelos

O software PointShop 3D [11] software de ediccedilatildeo de modelos por pontos 3D

implementa vaacuterias destas operaccedilotildees (ver seccedilatildeo 52)

Para modificar a forma de um modelo ou criar um novo satildeo muito usadas

as operaccedilotildees booleanas que eacute o nosso enfoque nesta dissertaccedilatildeo Na

modelagem CSG (Constructive Solid Geometry) as operaccedilotildees booleanas satildeo

usadas juntamente com primitivas soacutelidas para definir um modelo No entanto

em alguns tipos de modelos estas operaccedilotildees satildeo difiacuteceis como por exemplo

em malhas poligonais Com pontos elas podem ser feitas interativamente [32]

Operaccedilotildees Booleanas com Pontos 29

4 Operaccedilotildees Booleanas com Pontos

Operaccedilotildees booleanas satildeo as operaccedilotildees de uniatildeo interseccedilatildeo e diferenccedila

definidas na teoria matemaacutetica de conjuntos Estas operaccedilotildees satildeo aplicadas em

modelos soacutelidos para alteraacute-los ou para criar novos modelos A Figura 4 abaixo

mostra a criaccedilatildeo de trecircs novos modelos a partir de quatro modelos iniciais

Figura 4 [22] Trecircs modelos novos foram criados a partir dos quatro iniciais (esfera

cilindro dois cubos) O primeiro eacute a esfera menos um cubo em seguida retirou-se outro

cubo e por uacuteltimo retirou-se o cilindro

Estas operaccedilotildees satildeo aplicadas em objetos modelados por pontos em dois

trabalhos no trabalho de Bart Adams e Philip Dutreacute [2] e no trabalho de Pauly

et Al [3] Neste capiacutetulo a seccedilatildeo 41 apresenta a parte comum aos dois

trabalhos e as seccedilotildees 42 e 43 apresentam as particularidades de cada um A

seccedilatildeo 44 discute uma questatildeo natildeo explicitada em nenhum dos dois trabalhos

41 Meacutetodos para realizar operaccedilotildees booleanas em objetos modelados por pontos

A Figura 5 mostra o resultado do meacutetodo de Adams[2] operaccedilotildees de

uniatildeo diferenccedila e interseccedilatildeo de objetos soacutelidos 3D modelados por pontos

Operaccedilotildees Booleanas com Pontos 30

Figura 5 [2]-A partir de dois modelos por pontos uma heacutelice e uma cabeccedila as trecircs operaccedilotildees booleanas satildeo mostradas da esquerda para a direita uniatildeo diferenccedila e interseccedilatildeo

Sejam A e B objetos 3D soacutelidos modelados por pontos Definem-se os

seguintes elementos

Af ndash superfiacutecie (contorno) de A que estaacute fora de B

Ad ndash superfiacutecie (contorno) de A que estaacute dentro de B

Bf ndash superfiacutecie (contorno) de B que estaacute fora de A

Bd ndash superfiacutecie (contorno) de B que estaacute dentro de A

O resultado da operaccedilatildeo booleana entre A e B seraacute um modelo C cuja

superfiacutecie de contorno pode ser determinada pela seguinte regra [2] que aqui

chamamos de Regra 1

Regra 1 A U B Af + Bf

A cap B Ad + Bd

A ndash B Af + Bd (com a orientaccedilatildeo invertida)

B ndash A Ad (com a orientaccedilatildeo invertida) + Bf

A Figura 6 mostra as operaccedilotildees com dois modelos A e B

(a) (b)

Operaccedilotildees Booleanas com Pontos 31

(c) (d)

Figura 6 [22] (a) Dois modelos A e B (b) Posicionados de forma que A tem

uma parte dentro de B eacute mostrado o resultado A U B Af + Bf (c) Resultado de A ndash B Af

+ Bd (d) Resultado de A cap B Ad + Bd

Bart [2] e Pauly [3] apresentam dois meacutetodos para determinar os

elementos acima Estes dois meacutetodos satildeo construiacutedos a partir dos seguintes

conceitos os elementos Af Ad Bf Bd satildeo uma parte da superfiacutecie modelada por

pontos e portanto satildeo conjuntos de surfels Para determinaacute-los eacute necessaacuteria

entatildeo a classificaccedilatildeo de um surfel (que pode se resumir agrave classificaccedilatildeo de um

ponto que eacute o seu centro) de uma superfiacutecie como dentro ou fora de um outro

modelo Os dois meacutetodos utilizam a seguinte regra para esta classificaccedilatildeo aqui

denominada Regra 2

Regra 2 Dado um ponto x qualquer um volume V determinado por uma superfiacutecie

de contorno S uma amostragem P da superfiacutecie S um ponto p є P que eacute a

amostra mais proacutexima a x um vetor np normal agrave S em p e orientado para fora de

S temos que

(x ndash p) np gt 0 x notinV

Ou seja para classificar um ponto em relaccedilatildeo a um modelo verificamos o

produto interno entre a normal em p (surfel mais proacuteximo a x) e o vetor (x - p)

se este produto interno for maior que zero x natildeo pertence ao volume V e seraacute

classificado como fora senatildeo seraacute classificado como dentro De maneira

ainda mais informal se a normal em p apontar para a direccedilatildeo oposta a x x seraacute

classificado como dentro se apontar para x x seraacute classificado como fora

A Figura 7 mostra a Regra 2

Operaccedilotildees Booleanas com Pontos 32

Figura 7 Para classificar o ponto x encontra-se o surfel p (com normal np) mais proacuteximo

a x Se o produto interno entre np e (x ndash p) for maior que zero entatildeo x eacute classificado como

fora senatildeo seraacute classificado como dentro

A validade da Regra 2 eacute discutida na Seccedilatildeo 44 Uma das restriccedilotildees

teoacutericas para garantir-lhe a validade eacute que a superfiacutecie seja suave

Cada um dos dois meacutetodos daacute um tratamento diferente para o uso desta

regra Pauly usa a regra diretamente encontrando o surfel mais proacuteximo a um

ponto e classificando este ponto a partir deste surfel Ele utiliza tambeacutem a

representaccedilatildeo impliacutecita MLS (Moving Least Squares [18]) para casos em que a

Regra 2 poderia falhar e para tratamento de interseccedilotildees [3] Seu meacutetodo vale

para modelos soacutelidos ou natildeo soacutelidos O meacutetodo de Adams e Dutreacute [2] utiliza

octrees [1] criando uma classificaccedilatildeo dos noacutes da octree a partir desta Regra 2

Os pontos satildeo entatildeo classificados de acordo com o noacute da octree que o conteacutem

Este segundo meacutetodo aplica-se somente a modelos soacutelidos Os dois meacutetodos

seratildeo descritos em detalhes nas seccedilotildees abaixo

Como um surfel eacute considerado um disco podemos dizer que surfels de

dois modelos diferentes podem se intersectar A interseccedilatildeo destes dois surfels

corresponde agrave interseccedilatildeo destes dois discos Estes surfels geram problemas

para visualizaccedilatildeo se forem acrescentados ao resultado sem um tratamento

especiacutefico apresentaratildeo artefatos natildeo desejaacuteveis na renderizaccedilatildeo do modelo

resultado (Figura 8) se natildeo forem acrescentados ao resultado deixaratildeo buracos

no modelo

Operaccedilotildees Booleanas com Pontos 33

Figura 8 [2] -Interseccedilatildeo de duas esferas agrave esquerda sem nenhum tratamento de interseccedilatildeo agrave direita apoacutes o tratamento de interseccedilatildeo

Aleacutem disso nem sempre esta interseccedilatildeo forma uma superfiacutecie suave

Esta interseccedilatildeo pode formar uma aresta viva (seccedilatildeo 4223) gerando

problemas tambeacutem para o uso da Regra 2 que eacute vaacutelida apenas para superfiacutecies

suaves Eacute necessaacuterio entatildeo fazer um tratamento desta superfiacutecie de interseccedilatildeo

(formada por surfels originados de diferentes modelos) O tratamento de cada

um dos meacutetodos para este caso seraacute tambeacutem abaixo apresentado

42 Meacutetodo de Adams e Dutreacute

O meacutetodo aplica-se somente a modelos soacutelidos Para determinaccedilatildeo dos

elementos da aqui chamada Regra 1 (seccedilatildeo 41) este meacutetodo utiliza uma octree

[1] que subdivide o espaccedilo do modelo em trecircs fora dentro ou no contorno do

modelo Estes espaccedilos satildeo determinados pela classificaccedilatildeo dos noacutes da octree a

partir da Regra 2 Tambeacutem eacute usado o meacutetodo TINN - Triangle Inequality Nearest

Neighbour [19] - para otimizar a pesquisa dentro do noacute A seguir descrevemos o

modelo usado neste meacutetodo apresentando os dados associados aos pontos o

tipo de distribuiccedilatildeo e o algoritmo que realiza as operaccedilotildees

421 Modelo por Pontos em Adams e Dutreacute

Os surfels neste meacutetodo contecircm as seguintes informaccedilotildees posiccedilatildeo do

surfel xs orientaccedilatildeo do surfel ns e raio de alcance do surfel rs O surfel pode ser

pensado como um disco ortogonal a ns com centro xs e raio rs O raio eacute

escolhido de tal forma que a projeccedilatildeo dos discos no plano da imagem se

sobreponham

Operaccedilotildees Booleanas com Pontos 34

Os objetos representados satildeo soacutelidos A distribuiccedilatildeo dos surfels eacute

uniforme embora o algoritmo natildeo exija esta condiccedilatildeo Para cada soacutelido eacute

definido um rmax = Max rs o raio de alcance do maior surfel pertencente agrave

superfiacutecie do soacutelido Como o raio eacute escolhido de tal forma que a projeccedilatildeo dos

discos no plano da imagem se sobreponham o controle da amostragem eacute

entatildeo ligado agrave renderizaccedilatildeo

422 Algoritmo de Operaccedilotildees Booleanas

Utilizando objetos modelados da forma descrita acima o meacutetodo realiza

operaccedilotildees de uniatildeo interseccedilatildeo e diferenccedila com modelos soacutelidos Supondo dois

modelos soacutelidos S1 e S2 O algoritmo pode ser dividido nas seguintes etapas

Criaccedilatildeo de uma octree para cada modelo Teste Dentro-Fora Tratamento da

interseccedilatildeo Estas etapas satildeo apresentadas nas proacuteximas seccedilotildees

4221 Criaccedilatildeo de uma octree para cada modelo

Eacute criada uma octree [1] para cada modelo A criaccedilatildeo de uma octree eacute feita

da seguinte forma

Gera-se a ldquoCaixa envolventerdquo caixa alinhada com os eixos que conteacutem

todo o modelo A ldquoCaixa envolventerdquo corresponde ao noacute raiz da octree Este noacute

conteacutem inicialmente todos os surfels do modelo Em seguida o noacute raiz eacute

dividido em oito noacutes filhos Os surfels satildeo distribuiacutedos entre estes oito noacutes Cada

um deles caso contenha surfels eacute dividido novamente em 8 filhos e seus surfels

satildeo redistribuiacutedos entre eles Este processo eacute repetido recursivamente enquanto

o nuacutemero de surfels do noacute for maior que zero ou ateacute uma profundidade maacutexima

preacute-definida da octree ser alcanccedilada

Cada noacute da octree deve ser classificado O objetivo desta classificaccedilatildeo eacute

determinar que parte da octree estaacute dentro do modelo e que parte estaacute fora Os

noacutes da octree satildeo entatildeo classificados como ldquodentrordquo ldquoforardquo e ldquocontornordquo

Podemos ilustrar esta classificaccedilatildeo em 2D a Figura 9 mostra uma quadtree

classificada

Operaccedilotildees Booleanas com Pontos 35

Figura 9-Um objeto representado por pontos com suas normais e sua quadtree correspondente classificada os noacutes cinza claro estatildeo dentro do modelo noacutes cinza mais escuro estatildeo fora do modelo e noacutes com cinza intermediaacuterio satildeo noacutes cheios noacutes que conteacutem pontos

O noacutes que conteacutem surfels satildeo classificados como ldquocontornordquo Para

classificar um noacute vazio existem trecircs casos

o noacute vazio tem apenas um vizinho-irmatildeo natildeo vazio

o noacute vazio tem mais de um vizinho-irmatildeo natildeo vazio

o noacute vazio natildeo tem vizinhos-irmatildeos natildeo vazios

No primeiro caso o noacute vazio eacute classificado pelo seu vizinho natildeo vazio No

segundo caso considera-se qualquer um dos vizinhos natildeo vazios No terceiro

caso classifica-se primeiro os noacutes vizinhos e eacute dada a mesma classificaccedilatildeo para

o noacute vazio Como cada noacute natildeo folha de uma octree tem pelo menos um noacute filho

natildeo vazio sempre pode ser feita a classificaccedilatildeo dos noacutes vazios A classificaccedilatildeo

eacute feita da seguinte forma dentre os surfels do vizinho-irmatildeo escolhido encontra-

se o surfel mais proacuteximo ao noacute a ser classificado Se a normal deste surfel

aponta para o noacute vazio a ser classificado entatildeo ele eacute classificado como ldquoforardquo

Se a normal aponta no sentido contraacuterio entatildeo ele eacute classificado como ldquodentrordquo

De maneira mais formal sejam cv e cc coordenadas dos centros do noacute vazio e

do noacute contorno respectivamente Seja s o surfel mais proacuteximo ao noacute vazio e ns

a normal em s Se ( cv - cc )٠ ns gt 0 ( produto interno entre a normal em s e o

vetor cv - cc for maior que zero ) o noacute vazio seraacute classificado como ldquoforardquo

Senatildeo seraacute classificado como ldquodentrordquo

Em geral os noacutes ldquocontornordquo satildeo subdivididos em trecircs partes uma que estaacute

fora do modelo uma que estaacute dentro do modelo e uma terceira que conteacutem os

surfels Esta subdivisatildeo eacute feita por meio da criaccedilatildeo de dois planos paralelos que

Operaccedilotildees Booleanas com Pontos 36

dividem o noacute Para determinar estes planos calcula-se o vetor nm igual agrave

meacutedia das normais dos surfels do noacute nm = sum ns sum ns onde ns eacute a normal de

cada surfel do noacute

Em seguida encontra-se o surfel com maior produto interno entre a sua

normal e a normal meacutedia d1=Max(nm ٠ ns) Este surfel juntamente com a normal

meacutedia define um dos planos Encontra-se tambeacutem o surfel com menor produto

interno entre a sua normal e a normal meacutedia d2=Min(nm ٠ ns) Este surfel

juntamente com a normal meacutedia define o outro plano A Figura 10 mostra a

divisatildeo de um noacute de uma quadtree nas trecircs partes dentro do modelo fora do

modelo e no ldquocontornordquo

Esta subdivisatildeo aplica-se apenas a noacutes que conteacutem surfels cujas direccedilotildees

natildeo variem em mais de 90 graus Caso isso ocorra ele natildeo seraacute subdividido Ou

seja se um noacute possuir dois vetores normais (de dois surfels diferentes) que

formem um acircngulo maior que 90 graus ele natildeo seraacute subdividido

Figura 10 [2] -Divisatildeo de noacute de contorno a parte agrave esquerda estaacute fora do modelo a parte agrave direita estaacute dentro do modelo e a faixa intermediaacuteria conteacutem os surfels

4222 Teste Dentro-Fora

O Teste Dentro-Fora faz a classificaccedilatildeo dos surfels de um modelo como

ldquodentrordquo ou ldquoforardquo de outro modelo Portanto aplicaremos este mesmo teste duas

vezes uma para o modelo S1 em relaccedilatildeo ao modelo S2 e outra para S2 em

relaccedilatildeo a S1 Vamos mostrar o teste Dentro-Fora para o caso da classificaccedilatildeo

dos surfels do modelo S1 em relaccedilatildeo a S2

Operaccedilotildees Booleanas com Pontos 37

No item anterior foram criadas duas octrees uma para o modelo S1 e

outra para o modelo S2 Chamemos de A e B as octrees de S1 e S2

respectivamente Para classificar S1 em relaccedilatildeo a S2 inicialmente eacute feita uma

avaliaccedilatildeo da posiccedilatildeo de A em relaccedilatildeo a B A e B podem estar nas seguintes

situaccedilotildees

- A natildeo intersecta B

- A intersecta apenas noacutes ldquoforardquo de B

- A intersecta apenas noacutes ldquodentrordquo de B

- A intersecta noacutes ldquoforardquo e noacutes ldquodentrordquo de B

Para testar estas situaccedilotildees os noacutes satildeo aumentados de rmax o raio do

maior surfel do modelo soacutelido Isto eacute feito para compensar o fato de que o surfel

natildeo eacute apenas um ponto mas sim considerado como um disco

No primeiro e no segundo caso todos os surfels de A satildeo classificados

como ldquoforardquo No terceiro caso todos os surfels de A satildeo classificados como

ldquodentrordquo

No quarto caso temos que percorrer a octree A Comeccedilando pelo noacute raiz

percorre-se os filhos deste noacute Para cada filho os quatro testes acima satildeo feitos

Se o noacute filho encontra-se em um dos trecircs primeiros casos a classificaccedilatildeo eacute dada

como foi citada acima Se um filho estaacute no quarto caso e natildeo eacute um noacute folha

repete-se recursivamente o mesmo procedimento para seus filhos ateacute encontrar-

se um noacute folha Para um noacute que estaacute no quarto caso e eacute folha percorre-se a lista

de surfels que este noacute conteacutem classificando cada um destes surfels Seja sa um

surfel desta lista Para este caso percorre-se a octree B para classificar sa

Primeiramente encontramos o noacute de B que conteacutem sa Se este noacute de B foi

dividido testa-se de acordo com esta divisatildeo do noacute se o surfel sa estaacute na parte

do noacute que estaacute dentro do modelo ele eacute classificado como ldquodentrordquo se sa estaacute na

parte que estaacute fora do modelo ele eacute classificado como ldquoforardquo se sa estaacute na parte

intermediaacuteria ou se o noacute de B natildeo foi subdividido em planos encontra-se sb que

eacute o surfel pertencente a este noacute de B que estaacute mais proacuteximo de sa sa seraacute

entatildeo classificado de acordo com sb Se ( sa - sb )٠ nb gt 0 sa eacute classificado

como ldquoforardquo senatildeo eacute classificado como ldquodentrordquo Se os discos de sb e sa se

intersectam sa eacute marcado como interseccedilatildeo Para encontrar sb o algoritmo

implementa o meacutetodo TINN ndash Triangle Inequality Nearest Neighbour [19]

Operaccedilotildees Booleanas com Pontos 38

4223 Tratamento da interseccedilatildeo

Os surfels de A que intersectam surfels de B satildeo classificados como

ldquointerseccedilatildeordquo Se eles natildeo forem incluiacutedos no modelo resultado o soacutelido resultado

teraacute buracos Se eles forem incluiacutedos sem algum tratamento eles natildeo

representaratildeo adequadamente a regiatildeo Em geral o surfel sa (um surfel

ldquointerseccedilatildeordquo de A) eacute dividido em dois pelo plano que conteacutem o surfel sb (surfel de

B que sa intersecta) uma parte que estaacute fora de B e outra que estaacute dentro de B

Dependendo da operaccedilatildeo que estaacute sendo realizada vamos querer manter uma

destas partes do surfel sa no modelo resultado Seja xa a posiccedilatildeo do surfel sa e o

surfel sa uma circunferecircncia de centro xa e raio ra igual ao raio de alcance de sa

O plano que conteacutem o surfel sb define uma corda desta circunferecircncia como

mostra a Figura 11 O surfel sa seraacute substituiacutedo por um surfel menor que

ultrapassa esta corda de uma distacircncia e definida pelo usuaacuterio Para cobrir

completamente a interseccedilatildeo seratildeo adicionados surfels menores que cruzam a

corda de interseccedilatildeo

Figura 11 -Interseccedilatildeo do surfel s e do plano que passa pelo surfel t o surfel mais proacuteximo a s O surfel s eacute substituiacutedo por trecircs surfels menores

Operaccedilotildees Booleanas com Pontos 39

O tratamento de interseccedilatildeo proposto por Adams e Dutreacute [2] natildeo soacute evita

os buracos mas tambeacutem cria uma forma de renderizaccedilatildeo de arestas vivas A

colocaccedilatildeo de vaacuterios pequenos surfels na regiatildeo da interseccedilatildeo permite esta

correta renderizaccedilatildeo das ldquoarestas vivasrdquo Desta forma o problema das arestas

vivas eacute resolvido na modelagem (Figura 12) A vantagem de se resolver o caso

na modelagem eacute que natildeo eacute necessaacuterio fazer um tratamento especial na

renderizaccedilatildeo para que mostre esta aresta viva Diferente do tratamento feito

em Pauly (seccedilatildeo 431) que resolve esta questatildeo em tempo de renderizaccedilatildeo

Aleacutem disso o tratamento resolve alguns casos onde a Regra 2 poderia falhar

(veja em Validade da Regra 2-seccedilatildeo 44)

Figura 12 [2] -Agrave direita eacute mostrado o resultado do tratamento de interseccedilatildeo para o caso de Arestas Vivas do objeto agrave esquerda

43 Meacutetodo de Pauly

O meacutetodo aplica-se a objetos soacutelidos e natildeo soacutelidos Os modelos podem ser

obtidos a partir de diferentes entradas como nuvem de pontos irregulares ou por

meio de scanners 3D Cria um modelo hiacutebrido destes objetos usa o modelo por

pontos juntamente com a representaccedilatildeo impliacutecita Moving Least Squares - MLS

[18] Realiza operaccedilotildees booleanas com pontos e utiliza adicionalmente MLS

para alguns casos de classificaccedilatildeo de surfels e no tratamento de interseccedilatildeo A

seguir apresentamos as caracteriacutesticas do modelo por pontos deste meacutetodo e o

algoritmo que realiza as operaccedilotildees

Operaccedilotildees Booleanas com Pontos 40

431 Modelo em Pauly

O modelo eacute uma estrutura hiacutebrida de pontos com a representaccedilatildeo impliacutecita

Moving Least Squares - MLS [18] Esta estrutura eacute usada para fazer operaccedilotildees

booleanas e tambeacutem operaccedilotildees de free-form (natildeo abordadas nesta

dissertaccedilatildeo) Para operaccedilotildees booleanas a representaccedilatildeo MLS permite que a

curva de interseccedilatildeo entre os modelos seja reconstruiacuteda e surfels sejam

colocados nesta curva e em alguns casos de classificaccedilatildeo de surfels mostrados

na seccedilatildeo 432 Para este modelo natildeo existem restriccedilotildees quanto agrave forma do

objeto

Os surfels contecircm informaccedilotildees sobre sua posiccedilatildeo e sua normal Aleacutem

disso surfels podem conter informaccedilotildees adicionais como textura cor

propriedades de materiais

A distribuiccedilatildeo dos surfels eacute natildeo-uniforme e a amostragem eacute

aproximadamente adequada (Veja seccedilatildeo 44)

432 Algoritmo de Operaccedilotildees Booleanas

O algoritmo classifica surfels de um modelo como ldquodentrordquo ou ldquoforardquo de

outro modelo Antes de colocarmos como eacute feita esta classificaccedilatildeo devemos

acrescentar que Pauly estende esta classificaccedilatildeo para modelos que natildeo satildeo

soacutelidos Ou seja mesmo um modelo natildeo soacutelido divide o espaccedilo da cena (espaccedilo

em que se encontra o modelo) em dois sub-espaccedilos dentro ou fora do modelo

Pauly faz esta subdivisatildeo da seguinte forma

Como a superfiacutecie que determina o modelo eacute orientada (conteacutem vetores

normais agrave superfiacutecie que apontam para ldquoforardquo do modelo) Pauly considera que

um modelo natildeo soacutelido divide o espaccedilo em dois sub-espaccedilos um ldquoforardquo do

modelo (os vetores normais apontam para este sub-espaccedilo) e um que estaacute

ldquodentrordquo do modelo (os vetores normais apontam para direccedilatildeo oposta a este sub-

espaccedilo) Por exemplo um plano eacute representado como um conjunto de surfels

contidos num determinado espaccedilo geomeacutetrico plano π Cada surfel conteacutem um

vetor normal direcionado Este modelo divide entatildeo o espaccedilo em dois sub-

espaccedilos o sub-espaccedilo que eacute apontado por estes surfels (considerado ldquoforardquo do

modelo) e o sub-espaccedilo que estaacute na direccedilatildeo oposta (considerado ldquodentrordquo do

modelo) Desta forma ele aplica as classificaccedilotildees de ldquodentrordquo e ldquoforardquo de um

modelo tambeacutem a modelos natildeo soacutelidos A partir desta consideraccedilatildeo as

Operaccedilotildees Booleanas com Pontos 41

operaccedilotildees booleanas satildeo realizadas com os modelos natildeo soacutelidos da mesma

forma que com os modelos soacutelidos

Para determinar esta classificaccedilatildeo (dentro ou fora do modelo) Pauly utiliza

a Regra 2 Para pesquisa do surfel mais proacuteximo o meacutetodo usa a estrutura Kd-

tree [16] e tambeacutem o algoritmo ANN [16] No entanto o meacutetodo apresenta uma

restriccedilatildeo da Regra 2 ela soacute deve ser usada para classificaccedilotildees de pontos x se

a distacircncia x-p for maior que o espaccedilamento da amostragem local ηp em p

Este espaccedilamento da amostragem local ηp em p eacute um caacutelculo aproximado da

distacircncia meacutedia entre os surfels vizinhos a p Se x estaacute muito proacuteximo agrave

superfiacutecie a classificaccedilatildeo pode falhar Neste caso ele calcula o ponto exato de

S mais proacuteximo a x usando a projeccedilatildeo MLS (ldquoMoving Least Squaresrdquo)

Por questotildees de melhoria de desempenho utiliza-se o fato de que sendo

Ωp (x) a classificaccedilatildeo do ponto x em relaccedilatildeo agrave amostragem P tem-se que Ωp (x)

= Ωp (xrsquo) para todos os pontos de xrsquo que estatildeo dentro da esfera de centro x e

raio igual a x-p - ηp (onde p eacute o surfel mais proacuteximo e ηp eacute o espaccedilamento

local da amostragem em p acima citado) Ou seja sendo x um ponto qualquer p

o surfel mais proacuteximo a x ηp eacute o espaccedilamento local da amostragem em p se

desenharmos uma esfera com centro x e raio igual a x-p - ηp temos que

todos os pontos xrsquo que estatildeo dentro da esfera teratildeo a mesma classificaccedilatildeo de x

Desta forma o nuacutemero de vezes que a classificaccedilatildeo eacute feita (pesquisando-se o

surfel mais proacuteximo ao ponto e usando a Regra 2) diminui em ateacute 90 Assim

em geral a classificaccedilatildeo de um surfel eacute obtida a partir do seu surfel vizinho

Dados

S1 a superfiacutecie MLS de contorno que define o modelo A

S2 a superfiacutecie MLS de contorno que define o modelo B

P1 o conjunto de surfels que representa a superfiacutecie S1

P2 o conjunto de surfels que representa a superfiacutecie S2

Ωp1 (x) a classificaccedilatildeo do ponto p em relaccedilatildeo a uma amostragem P1

Q1 o subconjunto de P1 que vai compor o resultado

Ωp2 (x) a classificaccedilatildeo do ponto p em relaccedilatildeo a uma amostragem P2

Q2 o subconjunto de P2 que vai compor o resultado

Os conjuntos Q1 e Q2 satildeo obtidos por meio da Tabela 1 mostrada abaixo

Operaccedilotildees Booleanas com Pontos 42

Tabela 1 Classificaccedilatildeo para operaccedilotildees booleanas

Para o tratamento de interseccedilatildeo neste meacutetodo satildeo computados pontos

que caem exatamente na curva de interseccedilatildeo e estes satildeo acrescentados ao

modelo resultado Estes pontos satildeo determinados de forma que a densidade da

amostragem vai crescendo agrave medida que os surfels se aproximam da curva de

interseccedilatildeo e convergem para este ponto de interseccedilatildeo como mostra a Figura

13

(a) (b) (c)

Figura 13 - Os novos surfels satildeo colocados exatamente na curva de interseccedilatildeo

e convergem para o ponto de interseccedilatildeo

A Figura 14 mostra o processo de encontrar os surfels que caem nesta

curva de interseccedilatildeo Inicialmente satildeo encontrados todos os pontos de Q1 e Q2

que estatildeo proacuteximos agrave curva de interseccedilatildeo por meio da funccedilatildeo de distacircncia do

operador de projeccedilatildeo MLS Em seguida procura-se todos os pares mais

proacuteximos (q1 є Q1 q2 є Q2 ) e computa-se o ponto q na curva de interseccedilatildeo da

seguinte forma (veja a Figura 14)Seja r o ponto na linha de interseccedilatildeo dos dois

planos tangentes em q1 e q2 e que estaacute mais proacuteximo a estes dois pontos isto eacute

que minimiza a distacircncia ||r-q1|| + ||r-q2|| r eacute a primeira aproximaccedilatildeo de q e agora

pode ser projetado sobre S1 e S2 para obter dois novos pontos de partida q1rsquo e q2

rsquo

para a iteraccedilatildeo Este procedimento pode ser repetido iterativamente ateacute que os

pontos q1 e q2 convirjam ao ponto q na curva de interseccedilatildeo Normalmente este

processo requer menos de trecircs iteraccedilotildees

Operaccedilotildees Booleanas com Pontos 43

(a) (b)

(c)

Figura 14 (a) Suponhamos a reta que eacute a interseccedilatildeo do plano tangente a S1 em q1 e o

plano tangente a S2 em q2 O ponto r eacute o ponto desta reta que estaacute mais proacuteximo a q1 e

q2 (b) r eacute projetado sobre S1 e S2 obtendo-se q1acute e q2acute dois novos pontos de partida

para nova iteraccedilatildeo (c) A nova iteraccedilatildeo gera r que eacute uma aproximaccedilatildeo melhor de q

Pauly faz o tratamento de arestas vivas em tempo de renderizaccedilatildeo Ele

faz uma alteraccedilatildeo no renderizador Marca os surfels de interseccedilatildeo e ao

renderizaacute-los satildeo cortados para gerar uma aresta viva

44 Validade da Regra 2

Os dois meacutetodos analisados nesta dissertaccedilatildeo utilizam a seguinte regra

para a classificaccedilatildeo de um surfel

Regra 2 dado um volume V determinado por uma superfiacutecie de contorno

S uma amostragem P da superfiacutecie S um ponto x qualquer um ponto p є P que

eacute a amostra mais proacutexima a x um vetor ny normal a S em p e orientado para

fora de S temos que (x ndash p) np gt 0 x notinV

Em [16] eacute colocado que esta regra eacute tirada da seguinte propriedade da

geometria diferencial (aqui chamada Propriedade 1)

Propriedade 1 Dado um volume V determinado por uma superfiacutecie de

contorno S contiacutenua e duplamente diferenciaacutevel um ponto x qualquer um ponto

Operaccedilotildees Booleanas com Pontos 44

y є S que eacute o ponto de S mais proacuteximo a x um vetor ny normal a S em y e

orientado para fora de S temos que (x ndash y) ny gt 0 x notinV

A Figura 15 ilustra esta propriedade

Figura 15 Para verificar se o ponto x estaacute fora de um contorno C encontra-se o ponto y

de C Se o produto interno entre a normal em y e o vetor que liga y a x for maior que

zero entatildeo x estaacute fora de C senatildeo estaacute dentro de C

Pauly assume que tendo uma amostragem P da superfiacutecie S podemos

usar a Propriedade 1 substituindo y por p o surfel mais proacuteximo ao ponto x (x ndash

p) np gt 0 x notinV (Regra 2) Esta amostragem P em seu trabalho eacute

(aproximadamente) uma ldquoamostragem adequadardquo Tambeacutem seu tratamento de

interseccedilatildeo cria uma aproximaccedilatildeo dela (seccedilatildeo 43) Empiricamente a

ldquodiscretizaccedilatildeo da propriedaderdquo eacute vaacutelida a partir desta suposiccedilatildeo Mas isso natildeo foi

demonstrado teoricamente em seu trabalho

Pauly coloca em [16] que natildeo existe ainda uma teoria matemaacutetica rigorosa

de amostragem anaacuteloga a teoria de Fourier para superfiacutecies discretas

A melhor aproximaccedilatildeo teoacuterica para esta aacuterea eacute o uso do Eixo Medial que

foi colocado em [10] Vamos descrever este trabalho brevemente nesta seccedilatildeo

Este trabalho apresenta um algoritmo de reconstruccedilatildeo de superfiacutecie que parte de

uma amostragem adequada (abaixo definida) de pontos e obteacutem uma malha

que eacute topologicamente equivalente agrave superfiacutecie do objeto e agrave medida que a

densidade da amostragem cresce a saiacuteda converge para esta superfiacutecie

Para definir amostragem adequada o trabalho parte do conceito de Eixo

Medial

Operaccedilotildees Booleanas com Pontos 45

ldquoEixo Medialrdquo de uma superfiacutecie 2D posicionada no R3 eacute o conjunto

(fechado) de pontos pi para os quais buscando-se o ponto da superfiacutecie que

estaacute mais proacuteximo a pi mais de um ponto pertencentes a esta superfiacutecie satildeo

encontrados A Figura 16 abaixo ilustra o Eixo Medial em 2D

Figura 16 [10] As curvas de cor mais clara satildeo o Eixo Medial da curva em preto

Em duas dimensotildees os veacutertices de Voronoi de uma amostragem densa

aproximam o ldquoEixo Medialrdquo da amostragem (mas esta propriedade natildeo se

estende a 3D) A Figura 17 mostra o Eixo Medial em 3D

Figura 17 [10] Em 3D geralmente o Eixo Medial eacute uma superfiacutecie 2D (em cor mais

clara) Aqui o quadrado eacute o Eixo Medial da superfiacutecie transparente que o contorna

Podemos definir agora a amostragem adequada da seguinte forma

Supondo uma superfiacutecie suave que quer dizer uma 2-manifold duplamente

diferenciaacutevel posicionada no R3 uma ldquoamostragem adequadardquo desta superfiacutecie eacute

aquela na qual a densidade da amostragem eacute (pelo menos) inversamente

proporcional agrave distacircncia ao ldquoEixo Medialrdquo A Figura 18 mostra uma amostragem

adequada

Operaccedilotildees Booleanas com Pontos 46

Figura 18 [10] A figura mostra o diagrama de Voronoi de uma amostragem de pontos S

Da mesma forma que o a amostragem aproxima a curva os veacutertices de Voronoi

aproximam o Eixo Medial

Na praacutetica na reconstruccedilatildeo da superfiacutecie uma aproximaccedilatildeo deste ldquoEixo

Medialrdquo eacute computada (devido agrave dificuldade de computaacute-lo exatamente e em

alguns casos ateacute impossibilidade)

Melhorias Propostas 47

5 Melhorias Propostas

No capiacutetulo 4 apresentamos dois meacutetodos que realizam operaccedilotildees

booleanas em modelos por pontos o meacutetodo de Adams e Dutreacute [2] e o meacutetodo

de Pauly[3] Para esta dissertaccedilatildeo usamos o meacutetodo de Adams e Dutreacute [2] e

propomos as seguintes melhorias

- Alteramos o momento em que eacute feita a classificaccedilatildeo da octree Fazemos

esta classificaccedilatildeo durante a sua criaccedilatildeo Os noacutes filhos de um noacute pai P qualquer

satildeo classificados logo apoacutes a criaccedilatildeo de todos estes filhos de P

independentemente do restante da octree ter sido criada Isso pode ser feito

porque a octree eacute construiacuteda na ordem raiz-esquerda-direita (preorder

traversal) e portanto apoacutes todos os filhos de um noacute pai serem criados a parte

necessaacuteria da octree para a classificaccedilatildeo destes filhos jaacute estaacute criada

- A classificaccedilatildeo da octree eacute otimizada classificando-se os cantos dos seus

noacutes como dentro ou fora do modelo Na classificaccedilatildeo de um noacute n1 a partir de seu

vizinho n2 se os cantos que satildeo comuns a n1 e n2 tiverem a mesma

classificaccedilatildeo esta seraacute dada ao noacute Assim diminuiacutemos o nuacutemero de pesquisas

pelo surfel mais proacuteximo que eacute a parte criacutetica da classificaccedilatildeo dos noacutes da octree

em termos de tempo de processamento

- Acrescentamos um valor miacutenimo (maior que zero) para o nuacutemero de

surfels contidos em um noacute que eacute uma das condiccedilotildees de parada na criaccedilatildeo da

octree Verificamos que desta forma diminui-se a chance de erro na classificaccedilatildeo

de partes criacuteticas como ldquoarestas vivasrdquo

Uma comparaccedilatildeo entre a nossa implementaccedilatildeo e a de Pauly tambeacutem seraacute

feita no capiacutetulo 6

51 Descriccedilatildeo do algoritmo

O algoritmo implementado para esta dissertaccedilatildeo baseado no meacutetodo de

Adams e Dutreacute [2] pode ser dividido nas seguintes partes Criaccedilatildeo e

classificaccedilatildeo de uma octree para cada modelo Teste DentroFora Criaccedilatildeo do

modelo resultado Natildeo foi implementado tratamento especial algum de

interseccedilatildeo para o nosso plugin As proacuteximas seccedilotildees apresentam estas partes

Melhorias Propostas 48

511 Criaccedilatildeo e classificaccedilatildeo de uma octree para cada modelo

As ideacuteias do algoritmo satildeo aqui ilustradas em 2D mas a extensatildeo delas

para 3D eacute feita facilmente

Para cada modelo a octree eacute criada e classificada da seguinte forma

Figura 19-Quadtree classificada Os noacutes mais escuros estatildeo fora do modelo os mais claros dentro e os em tom intermediaacuterio satildeo noacutes de contorno

Gera-se uma ldquocaixa envolventerdquo do modelo contendo todos os surfels e

cria-se o noacute raiz da octree que corresponde a esta ldquocaixa envolventerdquo Este noacute

raiz eacute subdividido em oito filhos e seus surfels satildeo distribuiacutedos entre eles Ao

inveacutes de testarmos os valores de xy e z para cada surfel a fim de determinar

para qual filho ele iraacute utilizamos listas auxiliares Primeiro os surfels satildeo

subdivididos em dois grupos pelos valores de x e armazenados em uma lista

auxiliar Em seguida cada uma das listas eacute subdividida pelo valor de y e as

quatro listas obtidas seratildeo subdivididas pelo valor de z Ao final teremos 8 listas

de surfels cada uma delas pertencente a um filho

Cada noacute seraacute entatildeo novamente subdividido enquanto contiver um nuacutemero

de surfels gt nmin (valor preacute-definido) ou enquanto a profundidade da aacutervore lt pmax

(valor preacute-definido) Na figura 19 pmax = 3 e nmin = 3

Melhorias Propostas 49

Figura 20-O noacute cheio eacute dividido em trecircs partes agrave esquerda a regiatildeo estaacute dentro do modelo agrave direita estaacute fora e entre as duas linhas que dividem o noacute estaacute a regiatildeo que conteacutem os surfels

Os noacutes cheios recebem um tratamento especial Eles satildeo subdivididos em

trecircs partes da seguinte forma uma que estaacute fora do modelo outra que estaacute

dentro e uma que conteacutem os surfels Esta subdivisatildeo eacute feita por meio da criaccedilatildeo

de dois planos paralelos que dividem o noacute Para determinar estes planos

calcula-se o vetor nm igual agrave meacutedia das normais dos surfels do noacute nm = sum ns

sum ns onde ns eacute a normal de cada surfel do noacute Em seguida encontra-se o

surfel com maior produto interno entre a sua normal e a normal meacutedia

d1=Max(nm ٠ ns) Este surfel juntamente com a normal meacutedia define um dos

planos Encontra-se tambeacutem o surfel com menor produto interno entre a sua

normal e a normal meacutedia d2=Min (nm ٠ ns) Este surfel juntamente com a normal

meacutedia define o outro plano (Figura 20) Se o noacute conteacutem surfels de superfiacutecies de

orientaccedilotildees diferentes ele natildeo seraacute subdividido ou seja os planos coincidiratildeo

com os planos que delimitam o proacuteprio noacute Este teste foi implementado da

seguinte forma escolhe-se um surfel qualquer do noacute Calcula-se o produto

interno entre a normal deste surfel e as outras normais dos outros surfels deste

noacute Se algum produto interno for menor que zero este noacute natildeo seraacute subdividido

Apoacutes a etapa de subdivisatildeo classificam-se os oito cantos deste noacute como

dentro ou fora do modelo por meio da classificaccedilatildeo de um ponto que

descreveremos na sub-seccedilatildeo 5111

Melhorias Propostas 50

a b

c d

Figura 21-O noacute a eacute classificado pelo noacute c o noacute d tambeacutem eacute classificado pelo noacute c a classificaccedilatildeo do noacute a eacute propagada para o noacute b

Jaacute os noacutes vazios da octree seratildeo classificados como ldquodentrordquo ou ldquoforardquo do

modelo da seguinte forma cada noacute folha vazio eacute classificado a partir de um de

seus irmatildeos vizinhos adjacentes Se ele possuir um vizinho adjacente cheio ele

seraacute classificado por este vizinho se natildeo possuir os vizinhos adjacentes seratildeo

classificados primeiro e ele teraacute esta mesma classificaccedilatildeo (Figura 21) Como tem

que existir sempre pelo menos um noacute cheio entre os filhos de um noacute pai entatildeo

sempre esta classificaccedilatildeo poderaacute ser feita Com a classificaccedilatildeo de todos os

filhos tem-se tambeacutem a classificaccedilatildeo dos cantos do noacute pai

Mf03c003fmx a b

Figura 22-Os cantos a e b do noacute cheio possuem a mesma classificaccedilatildeo fora do modelo Esta classificaccedilatildeo foi dada ao noacute vazio adjacente

Melhorias Propostas 51

Para classificar um noacute vazio por meio de um noacute cheio verificam-se os

cantos comuns destes dois noacutes se todos os cantos tiverem a mesma

classificaccedilatildeo esta seraacute dada ao noacute vazio (Figura 22) Se houver classificaccedilotildees

diferentes escolhe-se o surfel do noacute cheio mais proacuteximo ao noacute vazio faz-se o

produto interno entre a normal deste surfel e o vetor que liga o centro do noacute

cheio ao centro do noacute vazio (ou o vetor que liga o surfel ao centro do noacute vazio)

Se o produto interno for maior que zero o noacute eacute classificado como ldquoforardquo senatildeo eacute

classificado como ldquodentrordquo Para encontrar o surfel (pertencente a um noacute cheio)

mais proacuteximo ao noacute vazio existem dois casos

- O noacute cheio eacute folha percorre-se toda a lista de surfels e escolhe o surfel

mais proacuteximo da fronteira entre o noacute cheio e o vazio

- O noacute cheio natildeo eacute um noacute folha percorrem-se os filhos do noacute cheio ou seja

esta pesquisa eacute feita descendo na octree a partir do noacute cheio procurando o

surfel mais proacuteximo agrave fronteira do pai com o noacute vazio a ser classificado

Classificando o centro do noacute vazio todo o noacute deve ter a mesma

classificaccedilatildeo pois este noacute natildeo conteacutem surfels Para encontrar o surfel do noacute

vazio mais proacuteximo da fronteira entre o noacute cheio e o vazio basta testar o valor da

coordenada se a fronteira eacute o lado direito do noacute cheio escolhe-se o surfel com

maior coordenada lsquoxrsquo se eacute o lado esquerdo escolhe-se o surfel com menor lsquoxrsquo

se lado superior surfel com maior lsquoyrsquo etc A seguir apresentamos a classificaccedilatildeo

de um ponto qualquer pertencente a um noacute cheio

Figura 23- Quadtree classificada

Melhorias Propostas 52

5111 Classificaccedilatildeo de um ponto de um noacute cheio

Figura 24 [2] A normal n eacute a normal meacutedia e os surfels s1 e s2 juntamente com a normal

n definem as retas que dividem o noacute O ponto a estaacute fora do modelo e o ponto b estaacute

dentro do modelo

Para um ponto localizado dentro do noacute faz-se o seguinte teste se o noacute foi

dividido testa-se de acordo com a divisatildeo do noacute se o ponto estaacute na parte do noacute

que estaacute dentro do modelo ele eacute classificado como ldquodentrordquo se o ponto estaacute na

parte que estaacute fora do modelo ele eacute classificado como ldquoforardquo (Figura 24) se o

ponto estaacute na parte que conteacutem os surfels encontra-se o surfel s pertencente ao

noacute mais proacuteximo do ponto e o classifica de acordo com s seja ns a normal em s

cs a coordenada de s cp a coordenada do ponto Se (cp - cs )٠ ns gt 0 o ponto

seraacute classificado como ldquoforardquo Senatildeo seraacute classificado como ldquodentrordquo

Se o noacute natildeo foi dividido em planos esta classificaccedilatildeo a partir do surfel

mais proacuteximo seraacute sempre feita

512 Teste DentroFora

Melhorias Propostas 53

Figura 25-Duas circunferecircncias e suas quadtrees correspondentes

O Teste DentroFora classifica os surfels de um modelo como dentro ou

fora de outro modelo ou na sua interseccedilatildeo Este teste foi aqui implementado

exatamente como foi proposto em Adams e Dutreacute [2] exceto que natildeo foi

implementado o meacutetodo TINN - Triangle Inequality Nearest Neighbour [19]

Cada octree eacute percorrida verificando-se se os seus noacutes ou surfels estatildeo dentro

fora ou no contorno do outro modelo (Figura 25) Sejam A e B duas octrees e

queremos classificar a octree A As duas octrees (AB) satildeo percorridas partindo

da raiz

Para cada noacute de A existem quatro casos (Figura 26) Para testar estas

situaccedilotildees os boxes dos noacutes satildeo aumentados de rmax o raio do maior surfel do

modelo Isto eacute feito para compensar o fato de que o surfel natildeo eacute apenas um

ponto mas sim considerado como um disco

Os quatro casos satildeo

Se o noacute de A natildeo intersecta B entatildeo todos os surfels deste noacute satildeo

classificados como fora

Se o noacute de A intersecta apenas noacutes de B que estatildeo fora do modelo

todos os surfels deste noacute satildeo fora

Se o noacute de A intersecta apenas noacutes de B que estatildeo dentro do modelo

todos os surfels deste noacute satildeo dentro

Melhorias Propostas 54

Se o noacute de A intersecta noacutes de B que estatildeo dentro e tambeacutem noacutes de B

que estatildeo fora testa-se se este noacute de A eacute ou natildeo folha Se natildeo for folha

percorre-se os filhos deste noacute de A ateacute encontrar um noacute folha cheio que

intersecta B Para cada surfel sa deste noacute folha de A encontra-se o surfel de B

mais proacuteximo e classifica-se a coordenada de sa da forma apresentada na seccedilatildeo

5111 Seja sb o surfel usado na classificaccedilatildeo de sa Se os discos de sb e sa

se intersectam sa eacute classificado como ldquointerseccedilatildeordquo

(a) (b)

(c) (d)

Figura 26- a modelos natildeo se intersectam b modelo intersecta noacutes fora c modelo intersecta apenas noacutes dentro d modelo intersecta noacutes dentro e noacutes fora

513 Criaccedilatildeo do modelo resultado

Um novo modelo eacute criado com os seguintes surfels (de acordo com a

operaccedilatildeo booleana escolhida pelo usuaacuterio - veja Regra 1 da seccedilatildeo 41)

Uniatildeo - surfels de A que estatildeo fora de B + surfels de B que estatildeo fora de A

Melhorias Propostas 55

Interseccedilatildeo - surfels de A que estatildeo dentro de B + surfels de B que estatildeo

dentro de A

Diferenccedila A-B - surfels de A que estatildeo fora de B + surfels de B que estatildeo

dentro de A (com orientaccedilatildeo invertida)

Como natildeo foi implementado tratamento especial algum de interseccedilatildeo para

o nosso plugin os surfels que se intersectam satildeo mantidos no modelo resultado

final sem modificaccedilotildees

Descrito o algoritmo vejamos a seguir a sua implementaccedilatildeo

52 Implementaccedilatildeo

Este algoritmo foi implementado na forma de um plugin para o software

PointShop 3D [11] Este plugin foi desenvolvido na linguagem C e no sistema

operacional Windows

A escolha deste tipo de implementaccedilatildeo permitiu-nos usar o software

PointShop para os testes do algoritmo Estes testes foram feitos com os modelos

disponibilizados para o PointShop [11] Nesta seccedilatildeo apresentaremos o software

PointShop e as principais estruturas de dados usadas em nosso plugin

O Pointshop eacute um software aberto com seu coacutedigo disponiacutevel e preparado

para trabalhar com plugins Eacute um software de ediccedilatildeo de modelos 3D por pontos

Ele permite aleacutem de visualizar o modelo alterar as suas caracteriacutesticas como

cor brilho e fazer mapeamento de textura iluminaccedilatildeo filtragem (Figura 27)

Melhorias Propostas 56

Figura 27-Software PointShop 3D com dois modelos carregados na sua cena

Aleacutem disso pode-se criar uma cena com vaacuterios modelos e visualizaacute-los de

qualquer ponto de vista Implementa o virtual trackball para rotacionaacute-los e

transladaacute-los Usa uma iluminaccedilatildeo simples direcional A sua arquitetura eacute

extensiacutevel permite que o usuaacuterio adicione seus proacuteprios componentes ao

sistema Possui trecircs tipos de componentes

ldquoToolsrdquo fornece funcionalidades para ediccedilatildeo interativa de superfiacutecie Satildeo

disponibilizados na ldquotoolbarrdquo

Plugins fornece funcionalidades para processar em um soacute passo

modelos ou partes deles selecionadas Satildeo disponibilizados no menu ldquoPluginsrdquo

Renderes fornece funcionalidades de display para os modelos

Para esta dissertaccedilatildeo foi escolhida a construccedilatildeo do componente Plugin

por adequar-se agrave nossa proposta e ser a mais simples de ser construiacuteda O

PointShop [11] jaacute conteacutem uma tool que executa operaccedilotildees booleanas e

deformaccedilatildeo free-form sobre os modelos carregados na cena usando o meacutetodo

de Pauly [3] apresentado no capiacutetulo 4 O nosso plugin Operaccedilotildees Booleanas

implementa o algoritmo descrito na seccedilatildeo anterior baseado na proposta de

Melhorias Propostas 57

Adams e Dutreacute [2] Uma comparaccedilatildeo entre o nosso plugin e a tool de Pauly [3] eacute

feita no capiacutetulo 6

Figura 28-Menu do PointShop com o plugin e as opccedilotildees para operaccedilotildees booleanas

Para se executar o plugin o usuaacuterio precisa carregar dois modelos na

cena do PointShop acionar o plugin informando a operaccedilatildeo que seraacute executada

O plugin executaraacute o algoritmo acima proposto e carregaraacute o resultado na cena

do Pointshop retirando os modelos anteriores

521 Estruturas de Dados

Como vimos o software PointShop [11] trabalha com modelos por pontos

Um modelo deste software descrito na seccedilatildeo 42 conteacutem todas as informaccedilotildees

que o algoritmo proposto em Bart [2] necessita Abaixo relacionamos as

Melhorias Propostas 58

principais estruturas de dados do PointShop usadas no plugin e as principais

estruturas de dados do nosso plugin

As principais classes do PointShop usadas no plugin satildeo

Classe Scene

Classe Objects

Classe SurfelColections

Classe Surfel

Classe StatusBar

Classe Transformer

A hierarquia de dados eacute a seguinte a Scene conteacutem vaacuterios Objects os

quais conteacutem SurfelColections Cada SurfelColections conteacutem Surfels que

suportam uma ou mais propriedades tais como cor difusa cor especular

Classe Scene Classe que representa uma cena que conteacutem modelos

Classe Object Um modelo eacute representado pela classe Object que

conteacutem uma SurfelCollection e as matrizes de transformaccedilatildeo para rotaccedilatildeo

escala e translaccedilatildeo Cada Object eacute identificado pelo seu nome que eacute uacutenico na

Scene O meacutetodo getUniqueName retorna um nome uacutenico Cada Object tem sua

proacutepria matriz de transformaccedilatildeo que pode ser modificada com setRotation

rotate setPosition translate setScale e scale Objects podem ser copiados com

copy Objects consiste em um conjunto de surfels os quais podem ser

recuperados pela getSurfelCollection O Object pode ser ativado com

setActiveObject e recuperado com getActiveObject

Objects podem ser adicionados ou removidos com addObject e

removeObject Os Objects podem ser obtidos pela getFirstObject e

getNextObject

Classe SurfelCollection representa o conjunto de surfels de um modelo

Cada surfelcollection consiste em um conjunto de surfels (SurfelInterface) de

tamanho obtido por getNofSurfels Os surfels podem ser recuperados com

getFirstSurfel getCurrentSurfel e getNextSurfel

A SurfelCollection conteacutem um PropertyDescriptor e uma SurfelList

A SurfelList eacute uma lista duplamente encadeada de surfels Possui os

atributos firstSurfel lastSurfel currentSurfel que satildeo ponteiros para uma

SurfelInterface nSurfels que eacute o nuacutemero de Surfels

A SurfelInterface define a API para os surfels que satildeo os menores

elementos que compotildeem um Object Podem ser considerados como pontos com

uma normal que define a orientaccedilatildeo do ciacuterculo (ou elipse) que seraacute desenhado

Melhorias Propostas 59

tatildeo logo o surfel seja renderizado Tem como atributos dois ponteiros (next e

prev) para SurfelInterface

PropertyDescriptor consiste em ateacute 32 valores descrevendo quais as

propriedades a SurfelInterface suporta

Classe Surfel classe que representa o surfel

Classe StatusBar classe que imprime mensagens na tela Os plugins

podem mandar mensagens para o usuaacuterio pela StatusBar

Mensagens texto podem ser impressas com showMessage O progresso

de uma operaccedilatildeo pode ser indicado com setProgress ou resetProgress

Classe Transformer representa a transformaccedilatildeo entre sistemas de

coordenadas Esta classe fornece meacutetodos para transformar pontos e vetores

entre os diferentes sistemas de coordenadas do Pointshop

A seguir apresentamos as principais estruturas de dados do plugin

Operaccedilotildees Booleanas

As principais estruturas de dados do plugin satildeo boundingbox tree no

lista_surfel surfel

Boundingbox conteacutem dois pontos 3D que definem uma caixa que conteacutem

o modelo um ponto com menores coordenadas xy e z e outro ponto com

maiores xyz

Tree representa a octree do modelo Cada registro conteacutem um ponteiro

para um noacute e oito ponteiros para as 8 octrees filhas

No representa um noacute da octree Conteacutem os seguintes dados

- localizaccedilatildeo do noacute que eacute o canto inferior esquerdo do noacute

- lista_surfel (preenchida apenas para noacutes folha cheios)

- quantidade de surfels do noacute

- classificaccedilatildeo do noacute como dentro fora ou contorno

- classificaccedilatildeo do noacute em relaccedilatildeo a outro modelo

- indica se o noacute eacute folha ou natildeo

- vetor que eacute a meacutedia das normais dos surfels do noacute

- ponto que eacute a meacutedia das localizaccedilotildees dos surfels do noacute

- surfel que tem (entre todos os surfels do noacute) o maior produto interno

entre a sua normal e a normal meacutedia

- surfel que tem (entre todos os surfels do noacute) o menor produto interno

entre a sua normal e a normal meacutedia

- produto interno maacuteximo e miacutenimo entre as normais dos surfels do noacute e a

normal meacutedia deste noacute

Melhorias Propostas 60

- indica se o noacute conteacutem surfels com normais em sentido oposto (produto

interno entre elas eacute menor que zero)

- classificaccedilatildeo dos oito cantos do noacute

lista_surfels lista em que cada registro conteacutem um apontador para um

surfel e um apontador para o proacuteximo registro

surfel representa o surfel da octree Conteacutem a classificaccedilatildeo em relaccedilatildeo a

outro modelo e um ponteiro para o surfel do Poinshop

Resultados 61

6 Resultados

Neste capiacutetulo apresentamos os testes realizados com o plugin para o

PointShop implementado para esta dissertaccedilatildeo a comparaccedilatildeo deste plugin com

o plugin de Pauly [3] e a comparaccedilatildeo entre o meacutetodo de Adams e Dutreacute [2] e o

meacutetodo de Pauly [3]

61 Testes

Os testes foram feitos em um PC x86 Family 6 261600 KB de RAM sem

placa graacutefica sistema operacional Windows 2000 O plugin foi implementado na

linguagem C

Os modelos usados para os testes satildeo modelos disponibilizados no

PointShop [11] Vale lembrar que o meacutetodo implementado em nosso plugin eacute

restrito a modelos soacutelidos e portanto foram usados apenas estes modelos

soacutelidos para os testes

O modelo na Figura 29 que eacute um dos modelos disponibilizados no

PointShop [11] foi usado para mostrar o resultado das operaccedilotildees realizadas

pelo plugin implementado nesta dissertaccedilatildeo O modelo Igea eacute um modelo soacutelido

que conteacutem 134345 surfels

Resultados 62

Figura 29-Modelo do PointShop Igea

Para realizar as operaccedilotildees este modelo foi carregado na cena do

PointShop duas vezes e um deles colorido de vermelho As Figuras 30 31 32

mostram o resultado da operaccedilatildeo de uniatildeo interseccedilatildeo e diferenccedila

respectivamente Os nuacutemeros de surfels dos modelos resultantes satildeo mostrados

na Tabela 2

Resultados 63

Figura 30-Resultado da uniatildeo de duas Igeas

Figura 31-Resultado da interseccedilatildeo de duas Igeas

Resultados 64

Figura 32-Resultado da diferenccedila entre duas Igeas

Tabela 2-Nuacutemero de surfels dos modelos resultantes

Observamos que o nuacutemero de surfels dos modelos resultantes estaacute

coerente com as figuras dos seus modelos

Para avaliar o tempo de processamento das operaccedilotildees foram realizados

vaacuterios testes com o objetivo de obter uma meacutedia dos tempos de realizaccedilatildeo de

cada operaccedilatildeo Tambeacutem foram armazenados os tempos da criaccedilatildeo das duas

octrees e da classificaccedilatildeo de todos os surfels dos dois objetos (como dentro ou

fora do outro modelo) Estes testes foram feitos usando o modelo Igea A meacutedia

dos tempos de processamento foi calculada e os resultados satildeo mostrados na

Tabela 3 Verificamos que o maior tempo gasto eacute para criaccedilatildeo das octrees

Verificamos tambeacutem que este resultado apresentado eacute similar ao resultado

verificado empiricamente com o plugin de Pauly [3] Os tempos gastos para

realizar as operaccedilotildees satildeo similares e o maior tempo gasto no plugin de Pauly

tambeacutem eacute para inicializaccedilatildeo de suas estruturas de dados que incluem a kd-tree

Operaccedilatildeo Nuacutemero de surfels do modelo resultado

Uniatildeo 189715

Interseccedilatildeo 72225

Diferenccedila 134552

Resultados 65

Operaccedilatildeo Criaccedilatildeo das

Octrees (seg)

Classificaccedilatildeo

(seg)

Criaccedilatildeo do

resultado (seg)

Total (seg)

Uniatildeo 39375 1324 18925 7154

Interseccedilatildeo 38585 1585 09547 63982

Diferenccedila 399875 1504 1729 729475

Tabela 3- Meacutedia dos tempos de processamento para as operaccedilotildees com duas Igeas

Com o objetivo de expor melhor os resultados deste trabalho

apresentamos abaixo mais um teste das operaccedilotildees booleanas usando o nosso

plugin Os modelos usados para este segundo teste satildeo o Max Planck e o Male

ambos modelos soacutelidos disponibilizados no PointShop Estes modelos satildeo

mostrados nas figura 33 e 34

O primeiro Max Planck conteacutem 52809 surfels

Figura 33-Modelo do PointShop MaxPlanck

O segundo modelo abaixo Male conteacutem 148138 surfels

Resultados 66

Figura 34-Modelo do PointShop Male

As Figuras 353637 mostram o resultado da operaccedilatildeo de uniatildeo interseccedilatildeo

e diferenccedila respectivamente usando os dois modelos acima Podemos observar

pela figura 35 que o resultado da operaccedilatildeo de diferenccedila neste caso gerou um

modelo resultado com trecircs partes desconexas Os nuacutemeros de surfels de cada

modelo resultado satildeo mostrados na Tabela 5

Figura 35- Resultado da Uniatildeo do modelo Male com MaxPlanck

Resultados 67

Figura 36-Resultado da interseccedilatildeo do modelo Male com o MaxPlanck

Figura 37-Resultado da diferenccedila do modelo Male do modelo MaxPlanck

As meacutedias de tempos de processamento foram calculadas da mesma

forma que o primeiro teste com o modelo Igea acima apresentado Os

resultados satildeo mostrados na Tabela 4 Podemos observar que este teste

Resultados 68

apresenta tempos um pouco menores que o teste com o modelo Igea Isto se

deve ao fato de que o modelo MaxPlanck ser significativamente menor que o

modelo Igea MaxPlanck possui 52809 surfels e Igea conteacutem 134345 surfels

Operaccedilatildeo Criaccedilatildeo das

Octrees (seg)

Classificaccedilatildeo

(seg)

Criaccedilatildeo do

resultado (seg)

Total

(seg)

Uniatildeo 3012 1254 102 5285

Interseccedilatildeo 2985 0901 0861 4747

Diferenccedila 2965 0911 0791 4667

Tabela 4-Tempo de processamento das operaccedilotildees com os modelos MaxPlanck e Male

Operaccedilatildeo Nuacutemero de surfels do resultado

Uniatildeo 126532

Interseccedilatildeo 88414

Diferenccedila 77635

Tabela 5-Nuacutemero de surfels dos modelos resultados das operaccedilotildees com os modelos MaxPlanck e Male

Em seguida apresentaremos uma comparaccedilatildeo entre o nosso plugin e o

plugin de Pauly[3] e tambeacutem uma comparaccedilatildeo entre o meacutetodo de Adams e Dutreacute

[2] e o meacutetodo de Pauly [3]

62 Comparaccedilatildeo entre os dois meacutetodos que realizam operaccedilotildees booleanas

A comparaccedilatildeo entre os meacutetodos de Pauly[3] e de Adams e Dutreacute foi feita

em termos de tempo de processamento e em termos conceituais Em termos de

tempo de processamento comparamos o plugin de Pauly[3] com o nosso plugin

Em termos de tempo de processamento verifica-se empiricamente que os

dois meacutetodos apresentam tempos bastante similares Entretanto o tempo de

processamento do algoritmo aqui implementado ainda pode ser melhorado com

Resultados 69

o uso do meacutetodo TINN [19] que foi proposto em Adams[2] - para otimizar a

pesquisa do surfel mais proacuteximo a um ponto que estaacute localizado na regiatildeo de um

noacute que conteacutem surfels - veja seccedilatildeo 42 O uso deste meacutetodo natildeo foi

implementado para este trabalho e a sua implementaccedilatildeo melhoraria o tempo de

resposta do algoritmo Aleacutem disso o trabalho de Sara F Frisken [12] citado no

capiacutetulo 2 apresenta uma otimizaccedilatildeo no uso de octrees que pode ser

incorporada no algoritmo implementado neste trabalho

Em termos conceituais vamos fazer a comparaccedilatildeo do uso do que

chamamos aqui de Regra 2 do tratamento de interseccedilatildeo e do tratamento de

ldquoarestas vivasrdquo

Como vimos na seccedilatildeo 41 tanto o algoritmo implementado nesta

dissertaccedilatildeo baseado no trabalho de Adams e Dutreacute como o meacutetodo de Pauly

[3] parte do que chamamos aqui de Regra 2 para realizar operaccedilotildees booleanas

com pontos Mas cada um destes meacutetodos daacute um tratamento diferente para o

uso desta regra

O meacutetodo de Pauly usa a Regra 2 para classificaccedilatildeo de cada ponto ou de

cada surfel Para classificar um surfel de B sb como dentro ou fora de A eacute

encontrado o surfel de A sa mais proacuteximo a sb e sb eacute classificado a partir de sa

Para encontrar sa Pauly utiliza uma kd-tree Como esta pesquisa para encontrar

sa eacute cara (mesmo usando uma kd-tree) Pauly utiliza uma esfera que conteacutem

pontos com a mesma classificaccedilatildeo (seccedilatildeo 432) e diminui em 90 este nuacutemero

de pesquisas Pauly utiliza tambeacutem a representaccedilatildeo impliacutecita MLS (Moving Least

Squares) para casos em que a Regra 2 poderia falhar e para tratamento de

interseccedilotildees Entretanto o nuacutemero destes casos em que a Regra 2 poderia falhar

eacute muito pequeno E a representaccedilatildeo MLS natildeo eacute uma estrutura simples de ser

implementada Portanto natildeo encontramos vantagens em usar MLS para estes

casos O meacutetodo de Adams e Dutreacute natildeo trata estes casos e na praacutetica

apresenta resultados bastante satisfatoacuterios como foi mostrado Portanto

consideramos que valeria a pena fazer algum tratamento especial para estes

casos se fosse um procedimento simples Para a execuccedilatildeo do algoritmo de

Pauly o uso de MLS natildeo interfere significativamente porque a construccedilatildeo desta

representaccedilatildeo natildeo eacute feita somente para realizar operaccedilotildees booleanas Os testes

empiacutericos que fizemos com o algoritmo de Pauly natildeo incluem a construccedilatildeo desta

representaccedilatildeo

Aparentemente os dois algoritmos satildeo bastante parecidos um usa octrees

e o outro usa kd-tree As duas estruturas de dados satildeo simples e otimizam a

classificaccedilatildeo dos surfels de um modelo como dentro ou fora do outro modelo

Resultados 70

Mas existe uma diferenccedila conceitual entre dois que merece ser destacada O

algoritmo aqui implementado usa a Regra 2 para classificaccedilatildeo dos noacutes de uma

octree e armazena esta octree classificada (ver capiacutetulo 5) Assim na maioria dos

casos natildeo seraacute necessaacuterio encontrar o surfel mais proacuteximo para classificar um

ponto (ou um surfel) como fora ou dentro de um modelo Caso o ponto esteja em

uma aacuterea da octree classificada ele teraacute a classificaccedilatildeo dada agravequela aacuterea A

pesquisa ao surfel mais proacuteximo seraacute feita apenas nos casos em que o ponto a

ser classificado estaacute localizado entre os planos que subdividem um noacute cheio

O uso desta octree classificada levanta uma questatildeo que natildeo foi citada no

trabalho de Adams e Dutreacute que eacute a proximidade desta estrutura (armazenada)

de octree classificada com uma representaccedilatildeo volumeacutetrica do objeto Sendo

assim esta estrutura pode ser aproveitada para outras funccedilotildees aleacutem da

classificaccedilatildeo dos surfels Por exemplo podemos ter uma aproximaccedilatildeo do

volume de uma cena somando os volumes aproximados dos modelos que a

compotildeem Como o enfoque deste trabalho eacute operaccedilatildeo booleana natildeo vamos nos

aprofundar nesta questatildeo

Outra importante diferenccedila entre os dois trabalhos que jaacute foi explicada na

seccedilatildeo 432 eacute que o meacutetodo de Pauly aplica-se a modelos soacutelidos ou natildeo

soacutelidos enquanto que o meacutetodo de Adams e Dutreacute aplica-se somente a modelos

soacutelidos

Quanto ao tratamento de interseccedilatildeo em termos de visualizaccedilatildeo todos os

dois resolvem bem o problema O tratamento de interseccedilatildeo nos dois trabalhos

tambeacutem resolve o problema da validade da Regra 2 (ver seccedilatildeo 44) Entretanto

o tratamento de Adams e Dutreacute natildeo depende da renderizaccedilatildeo sendo portanto

mais portaacutevel Aleacutem disso uma desvantagem do meacutetodo de Pauly eacute o uso da

representaccedilatildeo impliacutecita MLS (ldquoMoving Least Squaresrdquo) do objeto para obter os

pontos exatamente na curva de interseccedilatildeo Esta representaccedilatildeo torna o

tratamento de interseccedilatildeo mais complexo e a vantagem apresentada natildeo eacute tatildeo

significativa para este tratamento de interseccedilatildeo

Conclusatildeo 71

7 Conclusatildeo

Concluiacutemos entatildeo que as escolhas de Adams e Dutreacute por usar uma

octree classificada e pelo tratamento dado agrave interseccedilatildeo satildeo mais abrangentes

que a escolha de Pauly E consideramos que quanto mais abrangente for uma

escolha conceitual mais resultados poderemos tirar dela No caso de Adams e

Dutreacute eles estendem o problema de classificar um ponto para classificar todo o

modelo Como foi citado ele quase fornece uma representaccedilatildeo volumeacutetrica do

modelo Esta aproximada representaccedilatildeo volumeacutetrica pode nos fornecer outras

informaccedilotildees como por exemplo o volume aproximado do modelo

Aleacutem disso o uso da representaccedilatildeo impliacutecita MLS no meacutetodo de Pauly cria

uma complexidade a mais para o meacutetodo sem apresentar vantagens para a

realizaccedilatildeo de operaccedilotildees booleanas que eacute o nosso enfoque

Logo podemos dizer que o meacutetodo de Adams e Dutreacute apresenta as

seguintes vantagens em relaccedilatildeo ao de Pauly

- a estrutura de octree classificada aleacutem de ser usada para classificaccedilatildeo

fornece informaccedilotildees adicionais como volume aproximado do objeto

- o tempo de processamento no meacutetodo de Adams e Dutreacute tende a ser

melhor que no meacutetodo de Pauly se implementadas as melhorias acima citadas e

se colocaacutessemos em consideraccedilatildeo o uso da representaccedilatildeo impliacutecita MLS

(Moving Least Squares)

- o tratamento de interseccedilatildeo de Adams e Dutreacute apresenta a vantagem da

portabilidade ou seja iraacute funcionar independente do algoritmo de renderizaccedilatildeo

utilizado

E as vantagens do meacutetodo de Pauly em relaccedilatildeo ao de Adams e Dutreacute

- a colocaccedilatildeo de surfels exatamente na curva de interseccedilatildeo

- a possibilidade de trabalhar com modelos soacutelidos ou natildeo soacutelidos

E finalizando concluiacutemos que o estudo relatado nesta dissertaccedilatildeo foi

importante por

- fornecer um breve estudo sobre modelagem por pontos uma nova e

promissora aacuterea dentro da computaccedilatildeo graacutefica

Conclusatildeo 72

- por apresentar uma avaliaccedilatildeo dos dois trabalhos existentes sobre

operaccedilotildees booleanas com pontos encontrando as vantagens de cada um

e levantando questotildees que natildeo tinham sido citadas nos trabalhos originais

- por propor e implementar melhorias ao trabalho de Adams e Dutreacute

71 Trabalhos Futuros

Nossa implementaccedilatildeo pode ser ainda evoluiacuteda com as propostas

apresentadas na seccedilatildeo 62 Como observamos o tempo de processamento do

algoritmo aqui implementado ainda pode ser melhorado com o uso do meacutetodo

TINN [19] - que foi proposto em Adams[2] - para otimizar a pesquisa do surfel

mais proacuteximo a um ponto que estaacute localizado na regiatildeo de um noacute que conteacutem

surfels Aleacutem disso o trabalho Simple and Efficient Trasversal Methods for

Quadtrees and Octrees de Sara F Frisken [12] citado no capiacutetulo 2 apresenta

uma otimizaccedilatildeo no uso de octrees Outra proposta para melhorar o tempo de

processamento do algoritmo aqui implementado eacute usar a forma de trabalhar com

octrees apresentada neste trabalho

O trabalho de Adams e Dutreacute [2] eacute aplicado apenas a objetos soacutelidos O

nosso plugin portanto aplica-se somente a este tipo de objeto Jaacute o trabalho de

Pauly[3] eacute aplicado tambeacutem a modelos natildeo soacutelidos Apresentamos como

proposta a um trabalho futuro a extensatildeo do algoritmo aqui implementado para

modelos natildeo soacutelidos O surfel pode conter uma informaccedilatildeo adicional que indica

se ele estaacute delimitando um volume ou natildeo Assim pode-se ter um modelo com

ldquopartes soacutelidasrdquo e ldquopartes natildeo soacutelidasrdquo Por exemplo a uniatildeo de um plano com

uma esfera poderia resultar numa esfera com ldquoabasrdquo (seriam as partes do plano

que estariam fora da esfera) O modelo resultado teria uma parte correspondente

a um espaccedilo 3D (esfera) e outra parte que seria uma superfiacutecie 2D posicionada

no espaccedilo 3D sem delimitar algum volume (abas)

Muitos trabalhos podem ser desenvolvidos aplicando-se o modelo por

pontos em animaccedilatildeo jogos visualizaccedilatildeo de terrenos criaccedilatildeo de protoacutetipos etc

considerando-se a eficiecircncia e simplicidade do modelo E mais especificamente

as operaccedilotildees booleanas com pontos podem ser aplicadas para criaccedilatildeo de

cenaacuterios testes de colisotildees e nestes casos a representaccedilatildeo usando octrees

pode ser mais explorada considerando-se o seu potencial de representaccedilatildeo

volumeacutetrica de um objeto

Referecircncias Bibliograacuteficas 73

8 Referecircncias Bibliograacuteficas

[1] MAumlNTYLAuml M An Introduction to Solid Modeling Computer Science Press 1988

[2] ADAMS B DUTREacute P Interactive Boolean Operations on Surfel-

Bounded Solids Proceedings of SIGGRAPH 2003 San Diego USA 2003

[3] PAULY M KEISER R KOBBELT L GROSS M Shape Modeling

with Point-Sampled Geometry SIGGRAPH 2003 Computer Graphics

Proceedings Annual Conference Series ACM Press ACM SIGGRAPH 2003

[4] LEVOY M WHITTED T The Use of Points as Display Primitives

Technical Report TR 85-022 The University of North Carolina at Chapel Hill

Department of Computer Science 1985

[5] PFISTER H ZWICKER M VAN BAAR J GROSS M 2000 Surfels

Surface Elements as Rendering Primitives SIGGRAPH 2000 pp 335ndash342 New

Orleans LA July 23-28 2000

[6] ZWICKER M PFISTER H VAN BAAR J GROSS M Surface

Splatting SIGGRAPH 2001

[7] PAULY M KOBBELT L GROSS M Multiresolution Modeling of

Point-Sampled Geometry CS Techinical Report 378 September 16 2002

[8] CURLESS B New Methods for Surface Reconstruction from Range Images PhD thesis Stanford University 1997

[9] RUSINKIEWICZ S Real-time Acquisition and Rendering of Large 3D Models PhD thesis Stanford University 2001

Referecircncias Bibliograacuteficas 74

[10] AMENTA N BERN M KAMVYSSELIS M A new Voronoi-Based

Surface Reconstruction Algorithm SIGGRAPH 98 Conference proceedings pp

415-421 New York 1998

[11] ZWICKER M PAULY M KNOLL O GROSS M Pointshop 3D an

Interactive System for Point-Based Surface Editing Proceedings of SIGGRAPH 2002 San Antonio TX July 2002

[12] FRISKEN S PERRY R Simple and Efficient Traversal Methods for

Quadtrees and Octrees Journal of Graphics Tools Vol 7 Issue 3 May 2003

[13] CORREcircA W T OLIVEIRA M M Silva C T Wang J

Modeling and Rendering of Real Environments

Revista de Informaacutetica Teoacuterica e Aplicada (Brazilian Journal of Theoretic and Applied Computing) 9(2)127-156 2002

[14] DAVIS J MARSCHNER S GARR M LEVOY M Filling Holes in

Complex Surfaces Using Volumetric Diffusion First International Symposium on 3D Data Processing Visualization Transmission June 2002

[15] RAumlSAumlNEN J Surface Splatting Theory Extensions and Implementation Masterrsquos Thesis Dept of Computer Science Helsinki

University of Technology May 28 2002

[16] PAULY M Point Primitives for Interactive Modeling and Processing of 3D Geometry PhD thesis Federal Institute of Technology (ETH)

of Zurich 2003

[17] HOPPE H DEROSE T DUCHAMP T MCDONALD J

STUELZLE W Surface Reconstruction from Unorganized Points Computer Graphics 26(2)71ndash78 July 1992

[18] ALEXA M BEHR J COHEN-OR D FLEISHMAN S LEVIN D

SILVA C T Point Set Surfaces IEEE Visualization 2001 pp 21ndash28 October

2001

Referecircncias Bibliograacuteficas 75

[19] GREENSPAN M GODIN G TALBOT J Acceleration of Binning

Nearest Neighbor Methods Proceedings of Vision Interface 2000 pp 337-

344

[20] MENCL R Reconstruction of Surfaces from Unorganized Three-Dimensional Point Clouds Dissertation Dortmund Univ 2001

[21] KRIVANEK J Representing and Rendering Surfaces With Points

httpciteseernjneccomkrivanek03representinghtml Acesso em 30 jul

2003

[22] KRISTJANSSON ET AL Approximate Boolean Operations on Free-

form Solids Proceedings of SIGGRAPH 01 2001

17

O capiacutetulo 4 apresenta operaccedilotildees booleanas com pontos e os dois

meacutetodos para realizaacute-las na modelagem por pontos meacutetodo de Pauly et al [3] e

de Adams e Dutreacute [2]

O capiacutetulo 5 apresenta algumas melhorias ao algoritmo de Adams e Dutreacute

[2] e a nossa implementaccedilatildeo deste algoritmo

O capiacutetulo 6 traz os resultados obtidos

E finalmente o capiacutetulo 7 encerra o trabalho com uma conclusatildeo e com

possiacuteveis trabalhos futuros

Trabalhos relacionados 18

2 Trabalhos relacionados

O primeiro pesquisador a propor o uso de pontos como primitiva graacutefica foi

Levoy em [4] Ele propotildee o uso de pontos como primitiva de renderizaccedilatildeo e

discute a conversatildeo dos outros modelos para o modelo por pontos

Nos uacuteltimos anos vaacuterios trabalhos importantes tecircm sido realizados na aacuterea

em diversos segmentos em visualizaccedilatildeo podemos destacar os trabalhos de

Pfister [5] e de Zwicker [6] que usam pontos como primitiva de renderizaccedilatildeo e

com resultados praacuteticos interativos muito bons

Em [7] Pauly et al propotildeem algoritmos para modelagem multi-resoluccedilatildeo

em modelos por pontos

Os trabalhos de Curless [8] e Rusinkiewicz [9] discutem os meacutetodos de

aquisiccedilatildeo que consistem em obter uma amostragem de pontos da superfiacutecie do

objeto real por meio de equipamentos como por exemplo o scanner 3D

Nas operaccedilotildees booleanas a interseccedilatildeo das superfiacutecies dos modelos

iniciais seraacute parte do modelo resultado e para ser representada corretamente

precisa ser reconstruiacuteda A reconstruccedilatildeo da superfiacutecie tambeacutem eacute usada na

visualizaccedilatildeo de um modelo Um trabalho significativo na aacuterea de reconstruccedilatildeo de

superfiacutecies estaacute em [10] de N Amenta etal Este trabalho apresenta uma

soluccedilatildeo praacutetica com garantias teoacutericas para este problema e uma heuriacutestica para

o tratamento de arestas vivas a questatildeo mais difiacutecil desta aacuterea Um exemplo

de uma aresta viva eacute o encontro de dois planos natildeo coincidentes

Frequumlentemente a interseccedilatildeo citada acima (interseccedilatildeo entre os modelos iniciais)

gera uma aresta viva (seccedilatildeo 4223)

O algoritmo aqui implementado eacute um plugin para o software PointShop 3D

[11] de Zwicker et al software de ediccedilatildeo de modelos com pontos O PointShop

tem seu coacutedigo aberto documentaccedilatildeo e trabalha com plugins Ele permite a

visualizaccedilatildeo e ediccedilatildeo interativa do modelo por pontos Eacute o uacutenico software livre

disponiacutevel com estas caracteriacutesticas Esta implementaccedilatildeo na forma de um plugin

facilitou muito o trabalho pois natildeo foi necessaacuterio implementar a visualizaccedilatildeo do

modelo 3D Aleacutem disso o Pointshop conteacutem tambeacutem um plugin com a

implementaccedilatildeo do meacutetodo de Pauly et al [3] discutido nesta dissertaccedilatildeo A

Trabalhos relacionados 19

execuccedilatildeo dos dois plugins que realizam operaccedilotildees booleanas pocircde ser

comparada

Os trabalhos aqui discutidos satildeo o de Bart Adams e Philip Dutreacute [2] e de

Pauly et al[3] que apresentam meacutetodos diferentes para realizaccedilatildeo de

operaccedilotildees booleanas com pontos Adams e Dutreacute utilizam octrees [1] e Pauly

Kd-Tree [16] e MLS (Moving Least Squares) [18] Estes algoritmos satildeo

discutidos no capiacutetulo 4

O trabalho de Sara F Frisken [12] apresenta um algoritmo para realizar

operaccedilotildees em octree de forma mais eficiente Como estas operaccedilotildees estatildeo

presentes em todo o nosso algoritmo este trabalho certamente oferece uma

forma de otimizaccedilatildeo mas que natildeo foi implementada

Modelagem por Pontos 20

3 Modelagem por Pontos

A computaccedilatildeo graacutefica natildeo lida diretamente com o objeto ou com o

fenocircmeno fiacutesico lida com modelos graacuteficos ou geomeacutetricos Modelos graacuteficos

satildeo estruturas computacionais (abstratas) que capturam aspectos de objetos de

interesse para uma aplicaccedilatildeo como forma cor textura etc Se apenas a forma

ou a geometria do objeto eacute relevante temos modelos geomeacutetricos

Estes modelos satildeo usados em vaacuterias aplicaccedilotildees em computaccedilatildeo graacutefica

como roboacutetica visatildeo computacional simulaccedilotildees realistas anaacutelises estruturais

prototipagem projeto e manufatura de produtos eletromecacircnicos arquitetura

Existem vaacuterios tipos de modelos graacuteficos Esta dissertaccedilatildeo trata de um tipo

muito em voga atualmente que eacute o modelo por pontos

Neste capiacutetulo daremos uma visatildeo geral do modelo por pontos

Introduziremos este modelo e seu processo de criaccedilatildeo Seraacute apresentado o que

eacute um modelo por pontos e o conceito de surfel [5] introduziremos os tipos de

distribuiccedilatildeo dos surfels uma estruturaccedilatildeo aplicada a estes surfels e dados que

eles podem conter As quatro proacuteximas subseccedilotildees (Ideacuteia da representaccedilatildeo

Tipos de distribuiccedilatildeo dos surfels Estrutura de multi-resoluccedilatildeo e Dados que um

surfel pode conter) tratam destes toacutepicos Um modelo por pontos pode ser criado

a partir da conversatildeo de outros tipos de modelagem NURBS por exemplo para

o modelo por pontos ou a partir de um processo de aquisiccedilatildeo Esta uacuteltima forma

de criaccedilatildeo pode ser dividida em duas etapas aquisiccedilatildeo do modelo reconstruccedilatildeo

da superfiacutecie As subseccedilotildees 35 e 36 tratam destas duas etapas

respectivamente A ediccedilatildeo do modelo 3D eacute tratada brevemente na subseccedilatildeo 38

e a sua visualizaccedilatildeo na subseccedilatildeo 37 A apresentaccedilatildeo do processo de aquisiccedilatildeo

(seccedilatildeo 35) eacute baseada no tutorial de W T Correcirca [13] A etapa de ediccedilatildeo 3D

consiste em operaccedilotildees para mudanccedila da cor textura ou forma do modelo Para

esta etapa enfocaremos as operaccedilotildees booleanas que modificam a forma do

modelo ou criam novos modelos

31 Ideacuteia da Representaccedilatildeo

Modelagem por Pontos 21

Figura 1 [20] -Um modelo por pontos e sua visualizaccedilatildeo

Um modelo por pontos representa um objeto atraveacutes de seu contorno Eacute

um tipo de representaccedilatildeo B-Rep (Boundary Representation) [1] Este contorno

consiste em uma superfiacutecie 2D posicionada no espaccedilo 3D Na modelagem por

pontos ela eacute representada por um conjunto de pontos 3D que satildeo uma

amostragem dos (infinitos) pontos que formam a superfiacutecie contiacutenua (Figura 1) A

amostragem pode ser obtida de diversas maneiras Uma delas o processo de

aquisiccedilatildeo progrediu muito nos uacuteltimos anos e este foi um dos fatores que tornou

muito importante o desenvolvimento deste modelo por pontos Outra forma de

gerar amostragem eacute fazer uma conversatildeo de um outro modelo NURBS por

exemplo para o modelo por pontos

Estes pontos satildeo denominados surfels e podem conter aleacutem da posiccedilatildeo

3D outras informaccedilotildees como normal agrave superfiacutecie cor textura raio de alcance A

Figura 2 mostra um conjunto de surfels representando uma superfiacutecie No surfel

em destaque podemos ver o raio de alcance rt e a normal n agrave superfiacutecie

Modelagem por Pontos 22

Figura 2 [5] A superfiacutecie modelada por surfels O surfel em destaque tem raio de alcance

rt e normal n

Como o modelo natildeo armazena qualquer informaccedilatildeo sobre a conexatildeo entre

os surfels a reconstruccedilatildeo da superfiacutecie contiacutenua a partir dele pode exigir

algumas restriccedilotildees na amostragem (seccedilatildeo 36)

32 Tipos de distribuiccedilatildeo dos surfels

Existem dois tipos de distribuiccedilatildeo dos surfels na modelagem por pontos

uniforme e natildeo uniforme Na distribuiccedilatildeo uniforme cada um deles descreve

partes de mesmo tamanho da superfiacutecie Na natildeo uniforme cada surfel armazena

a informaccedilatildeo de seu raio de alcance que eacute o raio do disco que este surfel

representa

A distribuiccedilatildeo uniforme tem a vantagem de ser mais simples e natildeo ser

necessaacuterio armazenar o raio de alcance do disco mas ela apresenta a seguinte

desvantagem se o modelo possui regiotildees com muito detalhe e regiotildees com

pouco detalhe ele teraacute que manter uma alta densidade mesmo nas regiotildees de

poucos detalhes

33 Estrutura de multi-resoluccedilatildeo

Um objeto pode ser representado em vaacuterios niacuteveis de detalhes Por

exemplo podemos representar um mesmo objeto com vaacuterias resoluccedilotildees

diferentes Este conceito pode ser aplicado ao modelo por pontos Desta forma

um modelo eacute representado por uma estrutura hieraacuterquica (uma aacutervore por

exemplo) onde em cada niacutevel temos uma representaccedilatildeo do objeto em uma

Modelagem por Pontos 23

determinada resoluccedilatildeo Em [7] Pauly et al propotildeem algoritmos para modelagem

multi-resoluccedilatildeo em modelos por pontos

34 Dados que um surfel pode conter

Cada surfel armazena sua localizaccedilatildeo e pode tambeacutem conter informaccedilotildees

como a cor ou coordenadas de textura Se a amostragem natildeo for uniforme o

surfel conteacutem a informaccedilatildeo do raio de alcance que eacute o raio de um disco cujo

centro eacute a posiccedilatildeo do surfel O surfel pode tambeacutem conter o vetor normal agrave

superfiacutecie e assim o surfel pode ser visto como um disco orientado A superfiacutecie

tambeacutem pode ser vista como uma superfiacutecie orientada

35 Aquisiccedilatildeo do modelo

Esta introduccedilatildeo sobre aquisiccedilatildeo do modelo aqui apresentada baseia-se no

tutorial de W T Correcirca [13]

O processo de aquisiccedilatildeo consiste em obter uma amostragem de pontos da

superfiacutecie do objeto real por meio de equipamentos como por exemplo o

scanner 3D Eacute uma aacuterea que tem progredido muito nos uacuteltimos anos A

resoluccedilatildeo e a precisatildeo dos equipamentos de aquisiccedilatildeo tecircm melhorado bastante

e o custo deles reduzido de forma significativa Isso possibilita que a aquisiccedilatildeo

de modelos 3D seja usada em aplicaccedilotildees de desenho industrial arte ou em

produtos para a aacuterea de entretenimento O consequumlente maior uso destes

equipamentos criou a necessidade de avanccedilos no tratamento dos seus dados de

saiacuteda que satildeo um conjunto de pontos

Este processo pode ser dividido em trecircs partes [13] aquisiccedilatildeo da

geometria aquisiccedilatildeo da textura e correccedilatildeo de falhas da aquisiccedilatildeo

351 Aquisiccedilatildeo da geometria

Existem vaacuterios meacutetodos de aquisiccedilatildeo da geometria Curless [8] e

Rusinkiewicz [9] classificaram estes meacutetodos em trecircs categorias meacutetodos por

contato transmissatildeo e reflexatildeo

O meacutetodo por contato toca a superfiacutecie do objeto com uma sonda e grava

a posiccedilatildeo Este meacutetodo do qual o Coordinate Measuring Machines (CMMs) eacute

Modelagem por Pontos 24

um exemplo eacute bastante preciso mas eacute muito lento e natildeo adequado a objetos

fraacutegeis

Meacutetodos por transmissatildeo projetam ondas de energia sobre o objeto e

gravam a energia transmitida Por exemplo tomografia computadorizada que

projeta ondas de raio-x sobre o objeto e mede a quantidade de radiaccedilatildeo que

passa atraveacutes dele O resultado eacute um modelo geomeacutetrico de alta resoluccedilatildeo Este

meacutetodo pode captar detalhes do objeto que natildeo satildeo visiacuteveis de fora do objeto

Por outro lado ele eacute caro e arriscado

Meacutetodos por reflexatildeo podem ser oacuteticos ou natildeo-oacuteticos Natildeo-oacuteticos incluem

radares que medem a distacircncia a um objeto enviando microondas ou ondas

sonoras para o objeto e gravando o tempo que a onda gasta para retornar Estes

meacutetodos natildeo satildeo muito precisos nem raacutepidos

Meacutetodos por reflexatildeo oacuteticos podem ser passivos ou ativos Meacutetodos oacuteticos

passivos natildeo interagem com o objeto e incluem teacutecnicas de visatildeo computacional

como shape-from-shading stereo triangulation optical flow e meacutetodos de

decomposiccedilatildeo para video streams Estes meacutetodos raramente constroem

modelos precisos e sua maior aplicaccedilatildeo eacute em reconhecimento de objetos

Meacutetodos oacuteticos ativos projetam luz sobre um objeto de maneira estruturada

e atraveacutes da reflexatildeo da luz determinam a forma do objeto Exemplos satildeo depth

from defocus photometric stereo projected-light triangulation time of flight

Meacutetodos por reflexatildeo oacuteticos ativos tecircm muitas vantagens sobre os passivos tecircm

um melhor desempenho quando natildeo existe textura satildeo mais baratos e mais

robustos e produzem uma amostragem precisa

352 Aquisiccedilatildeo da textura

Idealmente noacutes gostariacuteamos de ter uma completa descriccedilatildeo de como um

ponto da superfiacutecie reflete a luz dependendo do vetor normal a esta superfiacutecie

da direccedilatildeo do raio de luz incidente e do comprimento de onda Tal descriccedilatildeo eacute

conhecida como Bidirectional Reflectance Distribution Function (BRDF) Medir

BRDFs com precisatildeo eacute um problema difiacutecil

Pode-se ter uma aproximaccedilatildeo da aquisiccedilatildeo de cores do objeto tirando

fotos dele O objeto eacute fotografado e a cor de cada ponto da superfiacutecie eacute obtida a

partir de um mapeamento das fotos 2D para o modelo 3D Para mapear a

fotografia agrave geometria precisamos conhecer os paracircmetros de projeccedilatildeo da

cacircmera e a sua posiccedilatildeo no momento em que a foto foi batida Para cada ponto

Modelagem por Pontos 25

3D do modelo encontramos sua projeccedilatildeo 2D no plano da cacircmera e associamos

a cor do pixel nesta projeccedilatildeo agrave cor do ponto 3D

353 Correccedilatildeo das falhas da aquisiccedilatildeo

O processo de aquisiccedilatildeo deixa frequumlentemente buracos no modelo devido

a ruiacutedos no processo ou agrave impossibilidade de aquisiccedilatildeo de determinadas partes

de uma superfiacutecie Estes buracos devem ser corrigidos Pode-se usar por

exemplo um filtro de passa-baixa para remoccedilatildeo de ruiacutedos [14] Meacutetodos de

difusatildeo geomeacutetrica tecircm sido aplicados para preenchimento dos buracos [15] A

correccedilatildeo das falhas eacute tida como um preacute-processamento para o processo de

reconstruccedilatildeo da superfiacutecie contiacutenua (seccedilatildeo 36)

36 Reconstruccedilatildeo da superfiacutecie (contiacutenua) a partir do modelo (discreto)

A reconstruccedilatildeo da superfiacutecie contiacutenua consiste em a partir de um conjunto

natildeo estruturado de pontos obter um modelo contiacutenuo desta superfiacutecie Esta

reconstruccedilatildeo eacute frequumlentemente exigida para um modelo por pontos Na sua

visualizaccedilatildeo podemos desejar focar qualquer parte do modelo Para fazermos

operaccedilotildees booleanas com os modelos podemos querer determinar exatamente

onde eles se intersectam

No entanto natildeo precisamos ter necessariamente a representaccedilatildeo contiacutenua

de todo o objeto ao mesmo tempo A reconstruccedilatildeo desta superfiacutecie a partir dos

pontos amostrados pode ser feita no momento que for mais adequado agrave

aplicaccedilatildeo Na visualizaccedilatildeo a reconstruccedilatildeo pode ser feita na projeccedilatildeo 2D da

parte do modelo em foco (seccedilatildeo 37) Para operaccedilotildees booleanas pode-se

reconstruir apenas a aacuterea da interseccedilatildeo dos modelos

Este processo de reconstruccedilatildeo de superfiacutecie tem sido muito estudado em

modelagem geomeacutetrica e geometria computacional nos uacuteltimos anos O trabalho

mais importante desta aacuterea eacute o trabalho de Amenta et al [10] que foi a primeira

soluccedilatildeo com garantias demonstraacuteveis para este problema de reconstruccedilatildeo de

superfiacutecie A seccedilatildeo 44 explica estes conceitos e o trabalho [10] Este trabalho

demonstra que teoricamente para que a reconstruccedilatildeo da superfiacutecie (contiacutenua) a

partir das amostras seja correta a amostragem deve ser adequada Ele usa o

conceito de ldquoEixo Medialrdquo para definir o que eacute uma amostragem adequada

Modelagem por Pontos 26

(seccedilatildeo 44) Em duas dimensotildees os veacutertices de Voronoi de uma amostragem

densa aproximam o ldquoEixo Medialrdquo da amostragem

Por meio deste conceito de Eixo Medial [1016] obtecircm-se paracircmetros

teoacutericos para a definiccedilatildeo de amostragem adequada e baseado neste conceito

o algoritmo apresentado em [10] traz uma soluccedilatildeo praacutetica para o problema

obtendo uma malha poligonal a partir do modelo por pontos

O PointShop 3D [11] software de ediccedilatildeo de modelos por pontos utilizado

nesta pesquisa faz quando necessaacuterio a reconstruccedilatildeo da superfiacutecie Para isso

o PointShop 3D explora a vizinhanccedila local (surfels vizinhos de acordo com suas

posiccedilotildees) Ele usa o conceito de Eixo Medial para justificar seu meacutetodo de

reconstruccedilatildeo da superfiacutecie que na praacutetica apresenta resultados bastante

satisfatoacuterios apesar de teoricamente natildeo ter garantias [16]

37 Visualizaccedilatildeo do modelo

A primeira abordagem para visualizaccedilatildeo de um modelo por pontos foi

construir uma malha de poliacutegonos a partir dos surfels e renderizaacute-la Mas a

construccedilatildeo de malhas a partir dos surfels eacute um processo muito caro e lento

principalmente para modelos complexos Na tentativa de obter uma visualizaccedilatildeo

interativa do modelo por pontos estatildeo sendo estudadas teacutecnicas que utilizam

surfels como primitiva de visualizaccedilatildeo A ideacuteia foi apresentada inicialmente por

Levoy [4]

Figura 3 [21] -Modelo por pontos e sua renderizaccedilatildeo usando Surface Splatting

Modelagem por Pontos 27

O objetivo da renderizaccedilatildeo a partir dos surfels eacute projetaacute-los na tela e

reconstruir as superfiacutecies de forma contiacutenua sem buracos Para que esta

renderizaccedilatildeo seja amplamente utilizada deve-se ter cuidado com o uso de

memoacuteria e com a qualidade da imagem gerada Teacutecnicas recentes como Surface

Splatting [6] faz a renderizaccedilatildeo interativamente com qualidade (Figura 3)

comparada a outros meacutetodos de renderizaccedilatildeo como Image Based Rendering

Em geral a visualizaccedilatildeo do modelo por pontos pode ser dividida nas seguintes

etapas

- warping - projeccedilatildeo em perspectiva de cada ponto do modelo na tela

processo anaacutelogo agrave projeccedilatildeo de veacutertices dos triacircngulos na malha triangular Se

um pixel da tela estiver contido em mais de uma projeccedilatildeo de surfels (vizinhos)

ou seja mais de um ponto cobre este pixel os atributos destes pontos seratildeo

combinados

- shading por ponto - o processo de shading eacute realizado para cada ponto

visiacutevel (os pontos que natildeo satildeo vistos do ponto de vista em questatildeo devem ser

retirados) Qualquer modelo local de shading pode ser aplicado Uma nova

teacutecnica foi proposta em Surface Splatting [6]

- reconstruccedilatildeo da imagem ndash pixels que natildeo ldquoreceberamrdquo projeccedilatildeo de

nenhum ponto formam buracos na imagem Esta imagem deve ser reconstruiacuteda

sem buracos sem aliasing e as superfiacutecies devem ser reconstruiacutedas de forma

contiacutenua e devem ser ldquosuavizadasrdquo (smooth surface)

Os algoritmos de renderizaccedilatildeo por pontos podem tratar a questatildeo de

buracos na visualizaccedilatildeo de trecircs formas [17]

Detecccedilatildeo e preenchimento de buracos no espaccedilo da tela pontos satildeo

projetados na tela e pixels que natildeo receberam pontos satildeo detectados (buracos)

Para preencher estes buracos que natildeo receberam pontos eacute feita uma

interpolaccedilatildeo entre os vizinhos

Geraccedilatildeo de mais pontos a superfiacutecie eacute interpolada no espaccedilo do modelo

para garantir que todos os pixels recebam pelo menos a projeccedilatildeo de um ponto

Splatting um surfel eacute projetado na tela e sua contribuiccedilatildeo eacute espalhada de

forma diferenciada para os pixels vizinhos Agrave medida em que o vizinho se torna

mais distante a contribuiccedilatildeo do surfel diminui

Raumlsaumlnen faz uma analogia do processo de renderizaccedilatildeo proposto em [6]

com o mapeamento de textura [15] No mapeamento de textura para um

determinado pixel da tela satildeo encontrados os pontos da textura que afetam este

Modelagem por Pontos 28

pixel Num sentido inverso em splatting para um determinado surfel (que

representa a textura) satildeo encontrados os pixels da tela que este surfel afeta

38 Ediccedilatildeo do modelo

Ediccedilatildeo de um modelo 3D consiste em operaccedilotildees que modificam

caracteriacutesticas deste modelo como cor textura forma ou criam novos modelos

O software PointShop 3D [11] software de ediccedilatildeo de modelos por pontos 3D

implementa vaacuterias destas operaccedilotildees (ver seccedilatildeo 52)

Para modificar a forma de um modelo ou criar um novo satildeo muito usadas

as operaccedilotildees booleanas que eacute o nosso enfoque nesta dissertaccedilatildeo Na

modelagem CSG (Constructive Solid Geometry) as operaccedilotildees booleanas satildeo

usadas juntamente com primitivas soacutelidas para definir um modelo No entanto

em alguns tipos de modelos estas operaccedilotildees satildeo difiacuteceis como por exemplo

em malhas poligonais Com pontos elas podem ser feitas interativamente [32]

Operaccedilotildees Booleanas com Pontos 29

4 Operaccedilotildees Booleanas com Pontos

Operaccedilotildees booleanas satildeo as operaccedilotildees de uniatildeo interseccedilatildeo e diferenccedila

definidas na teoria matemaacutetica de conjuntos Estas operaccedilotildees satildeo aplicadas em

modelos soacutelidos para alteraacute-los ou para criar novos modelos A Figura 4 abaixo

mostra a criaccedilatildeo de trecircs novos modelos a partir de quatro modelos iniciais

Figura 4 [22] Trecircs modelos novos foram criados a partir dos quatro iniciais (esfera

cilindro dois cubos) O primeiro eacute a esfera menos um cubo em seguida retirou-se outro

cubo e por uacuteltimo retirou-se o cilindro

Estas operaccedilotildees satildeo aplicadas em objetos modelados por pontos em dois

trabalhos no trabalho de Bart Adams e Philip Dutreacute [2] e no trabalho de Pauly

et Al [3] Neste capiacutetulo a seccedilatildeo 41 apresenta a parte comum aos dois

trabalhos e as seccedilotildees 42 e 43 apresentam as particularidades de cada um A

seccedilatildeo 44 discute uma questatildeo natildeo explicitada em nenhum dos dois trabalhos

41 Meacutetodos para realizar operaccedilotildees booleanas em objetos modelados por pontos

A Figura 5 mostra o resultado do meacutetodo de Adams[2] operaccedilotildees de

uniatildeo diferenccedila e interseccedilatildeo de objetos soacutelidos 3D modelados por pontos

Operaccedilotildees Booleanas com Pontos 30

Figura 5 [2]-A partir de dois modelos por pontos uma heacutelice e uma cabeccedila as trecircs operaccedilotildees booleanas satildeo mostradas da esquerda para a direita uniatildeo diferenccedila e interseccedilatildeo

Sejam A e B objetos 3D soacutelidos modelados por pontos Definem-se os

seguintes elementos

Af ndash superfiacutecie (contorno) de A que estaacute fora de B

Ad ndash superfiacutecie (contorno) de A que estaacute dentro de B

Bf ndash superfiacutecie (contorno) de B que estaacute fora de A

Bd ndash superfiacutecie (contorno) de B que estaacute dentro de A

O resultado da operaccedilatildeo booleana entre A e B seraacute um modelo C cuja

superfiacutecie de contorno pode ser determinada pela seguinte regra [2] que aqui

chamamos de Regra 1

Regra 1 A U B Af + Bf

A cap B Ad + Bd

A ndash B Af + Bd (com a orientaccedilatildeo invertida)

B ndash A Ad (com a orientaccedilatildeo invertida) + Bf

A Figura 6 mostra as operaccedilotildees com dois modelos A e B

(a) (b)

Operaccedilotildees Booleanas com Pontos 31

(c) (d)

Figura 6 [22] (a) Dois modelos A e B (b) Posicionados de forma que A tem

uma parte dentro de B eacute mostrado o resultado A U B Af + Bf (c) Resultado de A ndash B Af

+ Bd (d) Resultado de A cap B Ad + Bd

Bart [2] e Pauly [3] apresentam dois meacutetodos para determinar os

elementos acima Estes dois meacutetodos satildeo construiacutedos a partir dos seguintes

conceitos os elementos Af Ad Bf Bd satildeo uma parte da superfiacutecie modelada por

pontos e portanto satildeo conjuntos de surfels Para determinaacute-los eacute necessaacuteria

entatildeo a classificaccedilatildeo de um surfel (que pode se resumir agrave classificaccedilatildeo de um

ponto que eacute o seu centro) de uma superfiacutecie como dentro ou fora de um outro

modelo Os dois meacutetodos utilizam a seguinte regra para esta classificaccedilatildeo aqui

denominada Regra 2

Regra 2 Dado um ponto x qualquer um volume V determinado por uma superfiacutecie

de contorno S uma amostragem P da superfiacutecie S um ponto p є P que eacute a

amostra mais proacutexima a x um vetor np normal agrave S em p e orientado para fora de

S temos que

(x ndash p) np gt 0 x notinV

Ou seja para classificar um ponto em relaccedilatildeo a um modelo verificamos o

produto interno entre a normal em p (surfel mais proacuteximo a x) e o vetor (x - p)

se este produto interno for maior que zero x natildeo pertence ao volume V e seraacute

classificado como fora senatildeo seraacute classificado como dentro De maneira

ainda mais informal se a normal em p apontar para a direccedilatildeo oposta a x x seraacute

classificado como dentro se apontar para x x seraacute classificado como fora

A Figura 7 mostra a Regra 2

Operaccedilotildees Booleanas com Pontos 32

Figura 7 Para classificar o ponto x encontra-se o surfel p (com normal np) mais proacuteximo

a x Se o produto interno entre np e (x ndash p) for maior que zero entatildeo x eacute classificado como

fora senatildeo seraacute classificado como dentro

A validade da Regra 2 eacute discutida na Seccedilatildeo 44 Uma das restriccedilotildees

teoacutericas para garantir-lhe a validade eacute que a superfiacutecie seja suave

Cada um dos dois meacutetodos daacute um tratamento diferente para o uso desta

regra Pauly usa a regra diretamente encontrando o surfel mais proacuteximo a um

ponto e classificando este ponto a partir deste surfel Ele utiliza tambeacutem a

representaccedilatildeo impliacutecita MLS (Moving Least Squares [18]) para casos em que a

Regra 2 poderia falhar e para tratamento de interseccedilotildees [3] Seu meacutetodo vale

para modelos soacutelidos ou natildeo soacutelidos O meacutetodo de Adams e Dutreacute [2] utiliza

octrees [1] criando uma classificaccedilatildeo dos noacutes da octree a partir desta Regra 2

Os pontos satildeo entatildeo classificados de acordo com o noacute da octree que o conteacutem

Este segundo meacutetodo aplica-se somente a modelos soacutelidos Os dois meacutetodos

seratildeo descritos em detalhes nas seccedilotildees abaixo

Como um surfel eacute considerado um disco podemos dizer que surfels de

dois modelos diferentes podem se intersectar A interseccedilatildeo destes dois surfels

corresponde agrave interseccedilatildeo destes dois discos Estes surfels geram problemas

para visualizaccedilatildeo se forem acrescentados ao resultado sem um tratamento

especiacutefico apresentaratildeo artefatos natildeo desejaacuteveis na renderizaccedilatildeo do modelo

resultado (Figura 8) se natildeo forem acrescentados ao resultado deixaratildeo buracos

no modelo

Operaccedilotildees Booleanas com Pontos 33

Figura 8 [2] -Interseccedilatildeo de duas esferas agrave esquerda sem nenhum tratamento de interseccedilatildeo agrave direita apoacutes o tratamento de interseccedilatildeo

Aleacutem disso nem sempre esta interseccedilatildeo forma uma superfiacutecie suave

Esta interseccedilatildeo pode formar uma aresta viva (seccedilatildeo 4223) gerando

problemas tambeacutem para o uso da Regra 2 que eacute vaacutelida apenas para superfiacutecies

suaves Eacute necessaacuterio entatildeo fazer um tratamento desta superfiacutecie de interseccedilatildeo

(formada por surfels originados de diferentes modelos) O tratamento de cada

um dos meacutetodos para este caso seraacute tambeacutem abaixo apresentado

42 Meacutetodo de Adams e Dutreacute

O meacutetodo aplica-se somente a modelos soacutelidos Para determinaccedilatildeo dos

elementos da aqui chamada Regra 1 (seccedilatildeo 41) este meacutetodo utiliza uma octree

[1] que subdivide o espaccedilo do modelo em trecircs fora dentro ou no contorno do

modelo Estes espaccedilos satildeo determinados pela classificaccedilatildeo dos noacutes da octree a

partir da Regra 2 Tambeacutem eacute usado o meacutetodo TINN - Triangle Inequality Nearest

Neighbour [19] - para otimizar a pesquisa dentro do noacute A seguir descrevemos o

modelo usado neste meacutetodo apresentando os dados associados aos pontos o

tipo de distribuiccedilatildeo e o algoritmo que realiza as operaccedilotildees

421 Modelo por Pontos em Adams e Dutreacute

Os surfels neste meacutetodo contecircm as seguintes informaccedilotildees posiccedilatildeo do

surfel xs orientaccedilatildeo do surfel ns e raio de alcance do surfel rs O surfel pode ser

pensado como um disco ortogonal a ns com centro xs e raio rs O raio eacute

escolhido de tal forma que a projeccedilatildeo dos discos no plano da imagem se

sobreponham

Operaccedilotildees Booleanas com Pontos 34

Os objetos representados satildeo soacutelidos A distribuiccedilatildeo dos surfels eacute

uniforme embora o algoritmo natildeo exija esta condiccedilatildeo Para cada soacutelido eacute

definido um rmax = Max rs o raio de alcance do maior surfel pertencente agrave

superfiacutecie do soacutelido Como o raio eacute escolhido de tal forma que a projeccedilatildeo dos

discos no plano da imagem se sobreponham o controle da amostragem eacute

entatildeo ligado agrave renderizaccedilatildeo

422 Algoritmo de Operaccedilotildees Booleanas

Utilizando objetos modelados da forma descrita acima o meacutetodo realiza

operaccedilotildees de uniatildeo interseccedilatildeo e diferenccedila com modelos soacutelidos Supondo dois

modelos soacutelidos S1 e S2 O algoritmo pode ser dividido nas seguintes etapas

Criaccedilatildeo de uma octree para cada modelo Teste Dentro-Fora Tratamento da

interseccedilatildeo Estas etapas satildeo apresentadas nas proacuteximas seccedilotildees

4221 Criaccedilatildeo de uma octree para cada modelo

Eacute criada uma octree [1] para cada modelo A criaccedilatildeo de uma octree eacute feita

da seguinte forma

Gera-se a ldquoCaixa envolventerdquo caixa alinhada com os eixos que conteacutem

todo o modelo A ldquoCaixa envolventerdquo corresponde ao noacute raiz da octree Este noacute

conteacutem inicialmente todos os surfels do modelo Em seguida o noacute raiz eacute

dividido em oito noacutes filhos Os surfels satildeo distribuiacutedos entre estes oito noacutes Cada

um deles caso contenha surfels eacute dividido novamente em 8 filhos e seus surfels

satildeo redistribuiacutedos entre eles Este processo eacute repetido recursivamente enquanto

o nuacutemero de surfels do noacute for maior que zero ou ateacute uma profundidade maacutexima

preacute-definida da octree ser alcanccedilada

Cada noacute da octree deve ser classificado O objetivo desta classificaccedilatildeo eacute

determinar que parte da octree estaacute dentro do modelo e que parte estaacute fora Os

noacutes da octree satildeo entatildeo classificados como ldquodentrordquo ldquoforardquo e ldquocontornordquo

Podemos ilustrar esta classificaccedilatildeo em 2D a Figura 9 mostra uma quadtree

classificada

Operaccedilotildees Booleanas com Pontos 35

Figura 9-Um objeto representado por pontos com suas normais e sua quadtree correspondente classificada os noacutes cinza claro estatildeo dentro do modelo noacutes cinza mais escuro estatildeo fora do modelo e noacutes com cinza intermediaacuterio satildeo noacutes cheios noacutes que conteacutem pontos

O noacutes que conteacutem surfels satildeo classificados como ldquocontornordquo Para

classificar um noacute vazio existem trecircs casos

o noacute vazio tem apenas um vizinho-irmatildeo natildeo vazio

o noacute vazio tem mais de um vizinho-irmatildeo natildeo vazio

o noacute vazio natildeo tem vizinhos-irmatildeos natildeo vazios

No primeiro caso o noacute vazio eacute classificado pelo seu vizinho natildeo vazio No

segundo caso considera-se qualquer um dos vizinhos natildeo vazios No terceiro

caso classifica-se primeiro os noacutes vizinhos e eacute dada a mesma classificaccedilatildeo para

o noacute vazio Como cada noacute natildeo folha de uma octree tem pelo menos um noacute filho

natildeo vazio sempre pode ser feita a classificaccedilatildeo dos noacutes vazios A classificaccedilatildeo

eacute feita da seguinte forma dentre os surfels do vizinho-irmatildeo escolhido encontra-

se o surfel mais proacuteximo ao noacute a ser classificado Se a normal deste surfel

aponta para o noacute vazio a ser classificado entatildeo ele eacute classificado como ldquoforardquo

Se a normal aponta no sentido contraacuterio entatildeo ele eacute classificado como ldquodentrordquo

De maneira mais formal sejam cv e cc coordenadas dos centros do noacute vazio e

do noacute contorno respectivamente Seja s o surfel mais proacuteximo ao noacute vazio e ns

a normal em s Se ( cv - cc )٠ ns gt 0 ( produto interno entre a normal em s e o

vetor cv - cc for maior que zero ) o noacute vazio seraacute classificado como ldquoforardquo

Senatildeo seraacute classificado como ldquodentrordquo

Em geral os noacutes ldquocontornordquo satildeo subdivididos em trecircs partes uma que estaacute

fora do modelo uma que estaacute dentro do modelo e uma terceira que conteacutem os

surfels Esta subdivisatildeo eacute feita por meio da criaccedilatildeo de dois planos paralelos que

Operaccedilotildees Booleanas com Pontos 36

dividem o noacute Para determinar estes planos calcula-se o vetor nm igual agrave

meacutedia das normais dos surfels do noacute nm = sum ns sum ns onde ns eacute a normal de

cada surfel do noacute

Em seguida encontra-se o surfel com maior produto interno entre a sua

normal e a normal meacutedia d1=Max(nm ٠ ns) Este surfel juntamente com a normal

meacutedia define um dos planos Encontra-se tambeacutem o surfel com menor produto

interno entre a sua normal e a normal meacutedia d2=Min(nm ٠ ns) Este surfel

juntamente com a normal meacutedia define o outro plano A Figura 10 mostra a

divisatildeo de um noacute de uma quadtree nas trecircs partes dentro do modelo fora do

modelo e no ldquocontornordquo

Esta subdivisatildeo aplica-se apenas a noacutes que conteacutem surfels cujas direccedilotildees

natildeo variem em mais de 90 graus Caso isso ocorra ele natildeo seraacute subdividido Ou

seja se um noacute possuir dois vetores normais (de dois surfels diferentes) que

formem um acircngulo maior que 90 graus ele natildeo seraacute subdividido

Figura 10 [2] -Divisatildeo de noacute de contorno a parte agrave esquerda estaacute fora do modelo a parte agrave direita estaacute dentro do modelo e a faixa intermediaacuteria conteacutem os surfels

4222 Teste Dentro-Fora

O Teste Dentro-Fora faz a classificaccedilatildeo dos surfels de um modelo como

ldquodentrordquo ou ldquoforardquo de outro modelo Portanto aplicaremos este mesmo teste duas

vezes uma para o modelo S1 em relaccedilatildeo ao modelo S2 e outra para S2 em

relaccedilatildeo a S1 Vamos mostrar o teste Dentro-Fora para o caso da classificaccedilatildeo

dos surfels do modelo S1 em relaccedilatildeo a S2

Operaccedilotildees Booleanas com Pontos 37

No item anterior foram criadas duas octrees uma para o modelo S1 e

outra para o modelo S2 Chamemos de A e B as octrees de S1 e S2

respectivamente Para classificar S1 em relaccedilatildeo a S2 inicialmente eacute feita uma

avaliaccedilatildeo da posiccedilatildeo de A em relaccedilatildeo a B A e B podem estar nas seguintes

situaccedilotildees

- A natildeo intersecta B

- A intersecta apenas noacutes ldquoforardquo de B

- A intersecta apenas noacutes ldquodentrordquo de B

- A intersecta noacutes ldquoforardquo e noacutes ldquodentrordquo de B

Para testar estas situaccedilotildees os noacutes satildeo aumentados de rmax o raio do

maior surfel do modelo soacutelido Isto eacute feito para compensar o fato de que o surfel

natildeo eacute apenas um ponto mas sim considerado como um disco

No primeiro e no segundo caso todos os surfels de A satildeo classificados

como ldquoforardquo No terceiro caso todos os surfels de A satildeo classificados como

ldquodentrordquo

No quarto caso temos que percorrer a octree A Comeccedilando pelo noacute raiz

percorre-se os filhos deste noacute Para cada filho os quatro testes acima satildeo feitos

Se o noacute filho encontra-se em um dos trecircs primeiros casos a classificaccedilatildeo eacute dada

como foi citada acima Se um filho estaacute no quarto caso e natildeo eacute um noacute folha

repete-se recursivamente o mesmo procedimento para seus filhos ateacute encontrar-

se um noacute folha Para um noacute que estaacute no quarto caso e eacute folha percorre-se a lista

de surfels que este noacute conteacutem classificando cada um destes surfels Seja sa um

surfel desta lista Para este caso percorre-se a octree B para classificar sa

Primeiramente encontramos o noacute de B que conteacutem sa Se este noacute de B foi

dividido testa-se de acordo com esta divisatildeo do noacute se o surfel sa estaacute na parte

do noacute que estaacute dentro do modelo ele eacute classificado como ldquodentrordquo se sa estaacute na

parte que estaacute fora do modelo ele eacute classificado como ldquoforardquo se sa estaacute na parte

intermediaacuteria ou se o noacute de B natildeo foi subdividido em planos encontra-se sb que

eacute o surfel pertencente a este noacute de B que estaacute mais proacuteximo de sa sa seraacute

entatildeo classificado de acordo com sb Se ( sa - sb )٠ nb gt 0 sa eacute classificado

como ldquoforardquo senatildeo eacute classificado como ldquodentrordquo Se os discos de sb e sa se

intersectam sa eacute marcado como interseccedilatildeo Para encontrar sb o algoritmo

implementa o meacutetodo TINN ndash Triangle Inequality Nearest Neighbour [19]

Operaccedilotildees Booleanas com Pontos 38

4223 Tratamento da interseccedilatildeo

Os surfels de A que intersectam surfels de B satildeo classificados como

ldquointerseccedilatildeordquo Se eles natildeo forem incluiacutedos no modelo resultado o soacutelido resultado

teraacute buracos Se eles forem incluiacutedos sem algum tratamento eles natildeo

representaratildeo adequadamente a regiatildeo Em geral o surfel sa (um surfel

ldquointerseccedilatildeordquo de A) eacute dividido em dois pelo plano que conteacutem o surfel sb (surfel de

B que sa intersecta) uma parte que estaacute fora de B e outra que estaacute dentro de B

Dependendo da operaccedilatildeo que estaacute sendo realizada vamos querer manter uma

destas partes do surfel sa no modelo resultado Seja xa a posiccedilatildeo do surfel sa e o

surfel sa uma circunferecircncia de centro xa e raio ra igual ao raio de alcance de sa

O plano que conteacutem o surfel sb define uma corda desta circunferecircncia como

mostra a Figura 11 O surfel sa seraacute substituiacutedo por um surfel menor que

ultrapassa esta corda de uma distacircncia e definida pelo usuaacuterio Para cobrir

completamente a interseccedilatildeo seratildeo adicionados surfels menores que cruzam a

corda de interseccedilatildeo

Figura 11 -Interseccedilatildeo do surfel s e do plano que passa pelo surfel t o surfel mais proacuteximo a s O surfel s eacute substituiacutedo por trecircs surfels menores

Operaccedilotildees Booleanas com Pontos 39

O tratamento de interseccedilatildeo proposto por Adams e Dutreacute [2] natildeo soacute evita

os buracos mas tambeacutem cria uma forma de renderizaccedilatildeo de arestas vivas A

colocaccedilatildeo de vaacuterios pequenos surfels na regiatildeo da interseccedilatildeo permite esta

correta renderizaccedilatildeo das ldquoarestas vivasrdquo Desta forma o problema das arestas

vivas eacute resolvido na modelagem (Figura 12) A vantagem de se resolver o caso

na modelagem eacute que natildeo eacute necessaacuterio fazer um tratamento especial na

renderizaccedilatildeo para que mostre esta aresta viva Diferente do tratamento feito

em Pauly (seccedilatildeo 431) que resolve esta questatildeo em tempo de renderizaccedilatildeo

Aleacutem disso o tratamento resolve alguns casos onde a Regra 2 poderia falhar

(veja em Validade da Regra 2-seccedilatildeo 44)

Figura 12 [2] -Agrave direita eacute mostrado o resultado do tratamento de interseccedilatildeo para o caso de Arestas Vivas do objeto agrave esquerda

43 Meacutetodo de Pauly

O meacutetodo aplica-se a objetos soacutelidos e natildeo soacutelidos Os modelos podem ser

obtidos a partir de diferentes entradas como nuvem de pontos irregulares ou por

meio de scanners 3D Cria um modelo hiacutebrido destes objetos usa o modelo por

pontos juntamente com a representaccedilatildeo impliacutecita Moving Least Squares - MLS

[18] Realiza operaccedilotildees booleanas com pontos e utiliza adicionalmente MLS

para alguns casos de classificaccedilatildeo de surfels e no tratamento de interseccedilatildeo A

seguir apresentamos as caracteriacutesticas do modelo por pontos deste meacutetodo e o

algoritmo que realiza as operaccedilotildees

Operaccedilotildees Booleanas com Pontos 40

431 Modelo em Pauly

O modelo eacute uma estrutura hiacutebrida de pontos com a representaccedilatildeo impliacutecita

Moving Least Squares - MLS [18] Esta estrutura eacute usada para fazer operaccedilotildees

booleanas e tambeacutem operaccedilotildees de free-form (natildeo abordadas nesta

dissertaccedilatildeo) Para operaccedilotildees booleanas a representaccedilatildeo MLS permite que a

curva de interseccedilatildeo entre os modelos seja reconstruiacuteda e surfels sejam

colocados nesta curva e em alguns casos de classificaccedilatildeo de surfels mostrados

na seccedilatildeo 432 Para este modelo natildeo existem restriccedilotildees quanto agrave forma do

objeto

Os surfels contecircm informaccedilotildees sobre sua posiccedilatildeo e sua normal Aleacutem

disso surfels podem conter informaccedilotildees adicionais como textura cor

propriedades de materiais

A distribuiccedilatildeo dos surfels eacute natildeo-uniforme e a amostragem eacute

aproximadamente adequada (Veja seccedilatildeo 44)

432 Algoritmo de Operaccedilotildees Booleanas

O algoritmo classifica surfels de um modelo como ldquodentrordquo ou ldquoforardquo de

outro modelo Antes de colocarmos como eacute feita esta classificaccedilatildeo devemos

acrescentar que Pauly estende esta classificaccedilatildeo para modelos que natildeo satildeo

soacutelidos Ou seja mesmo um modelo natildeo soacutelido divide o espaccedilo da cena (espaccedilo

em que se encontra o modelo) em dois sub-espaccedilos dentro ou fora do modelo

Pauly faz esta subdivisatildeo da seguinte forma

Como a superfiacutecie que determina o modelo eacute orientada (conteacutem vetores

normais agrave superfiacutecie que apontam para ldquoforardquo do modelo) Pauly considera que

um modelo natildeo soacutelido divide o espaccedilo em dois sub-espaccedilos um ldquoforardquo do

modelo (os vetores normais apontam para este sub-espaccedilo) e um que estaacute

ldquodentrordquo do modelo (os vetores normais apontam para direccedilatildeo oposta a este sub-

espaccedilo) Por exemplo um plano eacute representado como um conjunto de surfels

contidos num determinado espaccedilo geomeacutetrico plano π Cada surfel conteacutem um

vetor normal direcionado Este modelo divide entatildeo o espaccedilo em dois sub-

espaccedilos o sub-espaccedilo que eacute apontado por estes surfels (considerado ldquoforardquo do

modelo) e o sub-espaccedilo que estaacute na direccedilatildeo oposta (considerado ldquodentrordquo do

modelo) Desta forma ele aplica as classificaccedilotildees de ldquodentrordquo e ldquoforardquo de um

modelo tambeacutem a modelos natildeo soacutelidos A partir desta consideraccedilatildeo as

Operaccedilotildees Booleanas com Pontos 41

operaccedilotildees booleanas satildeo realizadas com os modelos natildeo soacutelidos da mesma

forma que com os modelos soacutelidos

Para determinar esta classificaccedilatildeo (dentro ou fora do modelo) Pauly utiliza

a Regra 2 Para pesquisa do surfel mais proacuteximo o meacutetodo usa a estrutura Kd-

tree [16] e tambeacutem o algoritmo ANN [16] No entanto o meacutetodo apresenta uma

restriccedilatildeo da Regra 2 ela soacute deve ser usada para classificaccedilotildees de pontos x se

a distacircncia x-p for maior que o espaccedilamento da amostragem local ηp em p

Este espaccedilamento da amostragem local ηp em p eacute um caacutelculo aproximado da

distacircncia meacutedia entre os surfels vizinhos a p Se x estaacute muito proacuteximo agrave

superfiacutecie a classificaccedilatildeo pode falhar Neste caso ele calcula o ponto exato de

S mais proacuteximo a x usando a projeccedilatildeo MLS (ldquoMoving Least Squaresrdquo)

Por questotildees de melhoria de desempenho utiliza-se o fato de que sendo

Ωp (x) a classificaccedilatildeo do ponto x em relaccedilatildeo agrave amostragem P tem-se que Ωp (x)

= Ωp (xrsquo) para todos os pontos de xrsquo que estatildeo dentro da esfera de centro x e

raio igual a x-p - ηp (onde p eacute o surfel mais proacuteximo e ηp eacute o espaccedilamento

local da amostragem em p acima citado) Ou seja sendo x um ponto qualquer p

o surfel mais proacuteximo a x ηp eacute o espaccedilamento local da amostragem em p se

desenharmos uma esfera com centro x e raio igual a x-p - ηp temos que

todos os pontos xrsquo que estatildeo dentro da esfera teratildeo a mesma classificaccedilatildeo de x

Desta forma o nuacutemero de vezes que a classificaccedilatildeo eacute feita (pesquisando-se o

surfel mais proacuteximo ao ponto e usando a Regra 2) diminui em ateacute 90 Assim

em geral a classificaccedilatildeo de um surfel eacute obtida a partir do seu surfel vizinho

Dados

S1 a superfiacutecie MLS de contorno que define o modelo A

S2 a superfiacutecie MLS de contorno que define o modelo B

P1 o conjunto de surfels que representa a superfiacutecie S1

P2 o conjunto de surfels que representa a superfiacutecie S2

Ωp1 (x) a classificaccedilatildeo do ponto p em relaccedilatildeo a uma amostragem P1

Q1 o subconjunto de P1 que vai compor o resultado

Ωp2 (x) a classificaccedilatildeo do ponto p em relaccedilatildeo a uma amostragem P2

Q2 o subconjunto de P2 que vai compor o resultado

Os conjuntos Q1 e Q2 satildeo obtidos por meio da Tabela 1 mostrada abaixo

Operaccedilotildees Booleanas com Pontos 42

Tabela 1 Classificaccedilatildeo para operaccedilotildees booleanas

Para o tratamento de interseccedilatildeo neste meacutetodo satildeo computados pontos

que caem exatamente na curva de interseccedilatildeo e estes satildeo acrescentados ao

modelo resultado Estes pontos satildeo determinados de forma que a densidade da

amostragem vai crescendo agrave medida que os surfels se aproximam da curva de

interseccedilatildeo e convergem para este ponto de interseccedilatildeo como mostra a Figura

13

(a) (b) (c)

Figura 13 - Os novos surfels satildeo colocados exatamente na curva de interseccedilatildeo

e convergem para o ponto de interseccedilatildeo

A Figura 14 mostra o processo de encontrar os surfels que caem nesta

curva de interseccedilatildeo Inicialmente satildeo encontrados todos os pontos de Q1 e Q2

que estatildeo proacuteximos agrave curva de interseccedilatildeo por meio da funccedilatildeo de distacircncia do

operador de projeccedilatildeo MLS Em seguida procura-se todos os pares mais

proacuteximos (q1 є Q1 q2 є Q2 ) e computa-se o ponto q na curva de interseccedilatildeo da

seguinte forma (veja a Figura 14)Seja r o ponto na linha de interseccedilatildeo dos dois

planos tangentes em q1 e q2 e que estaacute mais proacuteximo a estes dois pontos isto eacute

que minimiza a distacircncia ||r-q1|| + ||r-q2|| r eacute a primeira aproximaccedilatildeo de q e agora

pode ser projetado sobre S1 e S2 para obter dois novos pontos de partida q1rsquo e q2

rsquo

para a iteraccedilatildeo Este procedimento pode ser repetido iterativamente ateacute que os

pontos q1 e q2 convirjam ao ponto q na curva de interseccedilatildeo Normalmente este

processo requer menos de trecircs iteraccedilotildees

Operaccedilotildees Booleanas com Pontos 43

(a) (b)

(c)

Figura 14 (a) Suponhamos a reta que eacute a interseccedilatildeo do plano tangente a S1 em q1 e o

plano tangente a S2 em q2 O ponto r eacute o ponto desta reta que estaacute mais proacuteximo a q1 e

q2 (b) r eacute projetado sobre S1 e S2 obtendo-se q1acute e q2acute dois novos pontos de partida

para nova iteraccedilatildeo (c) A nova iteraccedilatildeo gera r que eacute uma aproximaccedilatildeo melhor de q

Pauly faz o tratamento de arestas vivas em tempo de renderizaccedilatildeo Ele

faz uma alteraccedilatildeo no renderizador Marca os surfels de interseccedilatildeo e ao

renderizaacute-los satildeo cortados para gerar uma aresta viva

44 Validade da Regra 2

Os dois meacutetodos analisados nesta dissertaccedilatildeo utilizam a seguinte regra

para a classificaccedilatildeo de um surfel

Regra 2 dado um volume V determinado por uma superfiacutecie de contorno

S uma amostragem P da superfiacutecie S um ponto x qualquer um ponto p є P que

eacute a amostra mais proacutexima a x um vetor ny normal a S em p e orientado para

fora de S temos que (x ndash p) np gt 0 x notinV

Em [16] eacute colocado que esta regra eacute tirada da seguinte propriedade da

geometria diferencial (aqui chamada Propriedade 1)

Propriedade 1 Dado um volume V determinado por uma superfiacutecie de

contorno S contiacutenua e duplamente diferenciaacutevel um ponto x qualquer um ponto

Operaccedilotildees Booleanas com Pontos 44

y є S que eacute o ponto de S mais proacuteximo a x um vetor ny normal a S em y e

orientado para fora de S temos que (x ndash y) ny gt 0 x notinV

A Figura 15 ilustra esta propriedade

Figura 15 Para verificar se o ponto x estaacute fora de um contorno C encontra-se o ponto y

de C Se o produto interno entre a normal em y e o vetor que liga y a x for maior que

zero entatildeo x estaacute fora de C senatildeo estaacute dentro de C

Pauly assume que tendo uma amostragem P da superfiacutecie S podemos

usar a Propriedade 1 substituindo y por p o surfel mais proacuteximo ao ponto x (x ndash

p) np gt 0 x notinV (Regra 2) Esta amostragem P em seu trabalho eacute

(aproximadamente) uma ldquoamostragem adequadardquo Tambeacutem seu tratamento de

interseccedilatildeo cria uma aproximaccedilatildeo dela (seccedilatildeo 43) Empiricamente a

ldquodiscretizaccedilatildeo da propriedaderdquo eacute vaacutelida a partir desta suposiccedilatildeo Mas isso natildeo foi

demonstrado teoricamente em seu trabalho

Pauly coloca em [16] que natildeo existe ainda uma teoria matemaacutetica rigorosa

de amostragem anaacuteloga a teoria de Fourier para superfiacutecies discretas

A melhor aproximaccedilatildeo teoacuterica para esta aacuterea eacute o uso do Eixo Medial que

foi colocado em [10] Vamos descrever este trabalho brevemente nesta seccedilatildeo

Este trabalho apresenta um algoritmo de reconstruccedilatildeo de superfiacutecie que parte de

uma amostragem adequada (abaixo definida) de pontos e obteacutem uma malha

que eacute topologicamente equivalente agrave superfiacutecie do objeto e agrave medida que a

densidade da amostragem cresce a saiacuteda converge para esta superfiacutecie

Para definir amostragem adequada o trabalho parte do conceito de Eixo

Medial

Operaccedilotildees Booleanas com Pontos 45

ldquoEixo Medialrdquo de uma superfiacutecie 2D posicionada no R3 eacute o conjunto

(fechado) de pontos pi para os quais buscando-se o ponto da superfiacutecie que

estaacute mais proacuteximo a pi mais de um ponto pertencentes a esta superfiacutecie satildeo

encontrados A Figura 16 abaixo ilustra o Eixo Medial em 2D

Figura 16 [10] As curvas de cor mais clara satildeo o Eixo Medial da curva em preto

Em duas dimensotildees os veacutertices de Voronoi de uma amostragem densa

aproximam o ldquoEixo Medialrdquo da amostragem (mas esta propriedade natildeo se

estende a 3D) A Figura 17 mostra o Eixo Medial em 3D

Figura 17 [10] Em 3D geralmente o Eixo Medial eacute uma superfiacutecie 2D (em cor mais

clara) Aqui o quadrado eacute o Eixo Medial da superfiacutecie transparente que o contorna

Podemos definir agora a amostragem adequada da seguinte forma

Supondo uma superfiacutecie suave que quer dizer uma 2-manifold duplamente

diferenciaacutevel posicionada no R3 uma ldquoamostragem adequadardquo desta superfiacutecie eacute

aquela na qual a densidade da amostragem eacute (pelo menos) inversamente

proporcional agrave distacircncia ao ldquoEixo Medialrdquo A Figura 18 mostra uma amostragem

adequada

Operaccedilotildees Booleanas com Pontos 46

Figura 18 [10] A figura mostra o diagrama de Voronoi de uma amostragem de pontos S

Da mesma forma que o a amostragem aproxima a curva os veacutertices de Voronoi

aproximam o Eixo Medial

Na praacutetica na reconstruccedilatildeo da superfiacutecie uma aproximaccedilatildeo deste ldquoEixo

Medialrdquo eacute computada (devido agrave dificuldade de computaacute-lo exatamente e em

alguns casos ateacute impossibilidade)

Melhorias Propostas 47

5 Melhorias Propostas

No capiacutetulo 4 apresentamos dois meacutetodos que realizam operaccedilotildees

booleanas em modelos por pontos o meacutetodo de Adams e Dutreacute [2] e o meacutetodo

de Pauly[3] Para esta dissertaccedilatildeo usamos o meacutetodo de Adams e Dutreacute [2] e

propomos as seguintes melhorias

- Alteramos o momento em que eacute feita a classificaccedilatildeo da octree Fazemos

esta classificaccedilatildeo durante a sua criaccedilatildeo Os noacutes filhos de um noacute pai P qualquer

satildeo classificados logo apoacutes a criaccedilatildeo de todos estes filhos de P

independentemente do restante da octree ter sido criada Isso pode ser feito

porque a octree eacute construiacuteda na ordem raiz-esquerda-direita (preorder

traversal) e portanto apoacutes todos os filhos de um noacute pai serem criados a parte

necessaacuteria da octree para a classificaccedilatildeo destes filhos jaacute estaacute criada

- A classificaccedilatildeo da octree eacute otimizada classificando-se os cantos dos seus

noacutes como dentro ou fora do modelo Na classificaccedilatildeo de um noacute n1 a partir de seu

vizinho n2 se os cantos que satildeo comuns a n1 e n2 tiverem a mesma

classificaccedilatildeo esta seraacute dada ao noacute Assim diminuiacutemos o nuacutemero de pesquisas

pelo surfel mais proacuteximo que eacute a parte criacutetica da classificaccedilatildeo dos noacutes da octree

em termos de tempo de processamento

- Acrescentamos um valor miacutenimo (maior que zero) para o nuacutemero de

surfels contidos em um noacute que eacute uma das condiccedilotildees de parada na criaccedilatildeo da

octree Verificamos que desta forma diminui-se a chance de erro na classificaccedilatildeo

de partes criacuteticas como ldquoarestas vivasrdquo

Uma comparaccedilatildeo entre a nossa implementaccedilatildeo e a de Pauly tambeacutem seraacute

feita no capiacutetulo 6

51 Descriccedilatildeo do algoritmo

O algoritmo implementado para esta dissertaccedilatildeo baseado no meacutetodo de

Adams e Dutreacute [2] pode ser dividido nas seguintes partes Criaccedilatildeo e

classificaccedilatildeo de uma octree para cada modelo Teste DentroFora Criaccedilatildeo do

modelo resultado Natildeo foi implementado tratamento especial algum de

interseccedilatildeo para o nosso plugin As proacuteximas seccedilotildees apresentam estas partes

Melhorias Propostas 48

511 Criaccedilatildeo e classificaccedilatildeo de uma octree para cada modelo

As ideacuteias do algoritmo satildeo aqui ilustradas em 2D mas a extensatildeo delas

para 3D eacute feita facilmente

Para cada modelo a octree eacute criada e classificada da seguinte forma

Figura 19-Quadtree classificada Os noacutes mais escuros estatildeo fora do modelo os mais claros dentro e os em tom intermediaacuterio satildeo noacutes de contorno

Gera-se uma ldquocaixa envolventerdquo do modelo contendo todos os surfels e

cria-se o noacute raiz da octree que corresponde a esta ldquocaixa envolventerdquo Este noacute

raiz eacute subdividido em oito filhos e seus surfels satildeo distribuiacutedos entre eles Ao

inveacutes de testarmos os valores de xy e z para cada surfel a fim de determinar

para qual filho ele iraacute utilizamos listas auxiliares Primeiro os surfels satildeo

subdivididos em dois grupos pelos valores de x e armazenados em uma lista

auxiliar Em seguida cada uma das listas eacute subdividida pelo valor de y e as

quatro listas obtidas seratildeo subdivididas pelo valor de z Ao final teremos 8 listas

de surfels cada uma delas pertencente a um filho

Cada noacute seraacute entatildeo novamente subdividido enquanto contiver um nuacutemero

de surfels gt nmin (valor preacute-definido) ou enquanto a profundidade da aacutervore lt pmax

(valor preacute-definido) Na figura 19 pmax = 3 e nmin = 3

Melhorias Propostas 49

Figura 20-O noacute cheio eacute dividido em trecircs partes agrave esquerda a regiatildeo estaacute dentro do modelo agrave direita estaacute fora e entre as duas linhas que dividem o noacute estaacute a regiatildeo que conteacutem os surfels

Os noacutes cheios recebem um tratamento especial Eles satildeo subdivididos em

trecircs partes da seguinte forma uma que estaacute fora do modelo outra que estaacute

dentro e uma que conteacutem os surfels Esta subdivisatildeo eacute feita por meio da criaccedilatildeo

de dois planos paralelos que dividem o noacute Para determinar estes planos

calcula-se o vetor nm igual agrave meacutedia das normais dos surfels do noacute nm = sum ns

sum ns onde ns eacute a normal de cada surfel do noacute Em seguida encontra-se o

surfel com maior produto interno entre a sua normal e a normal meacutedia

d1=Max(nm ٠ ns) Este surfel juntamente com a normal meacutedia define um dos

planos Encontra-se tambeacutem o surfel com menor produto interno entre a sua

normal e a normal meacutedia d2=Min (nm ٠ ns) Este surfel juntamente com a normal

meacutedia define o outro plano (Figura 20) Se o noacute conteacutem surfels de superfiacutecies de

orientaccedilotildees diferentes ele natildeo seraacute subdividido ou seja os planos coincidiratildeo

com os planos que delimitam o proacuteprio noacute Este teste foi implementado da

seguinte forma escolhe-se um surfel qualquer do noacute Calcula-se o produto

interno entre a normal deste surfel e as outras normais dos outros surfels deste

noacute Se algum produto interno for menor que zero este noacute natildeo seraacute subdividido

Apoacutes a etapa de subdivisatildeo classificam-se os oito cantos deste noacute como

dentro ou fora do modelo por meio da classificaccedilatildeo de um ponto que

descreveremos na sub-seccedilatildeo 5111

Melhorias Propostas 50

a b

c d

Figura 21-O noacute a eacute classificado pelo noacute c o noacute d tambeacutem eacute classificado pelo noacute c a classificaccedilatildeo do noacute a eacute propagada para o noacute b

Jaacute os noacutes vazios da octree seratildeo classificados como ldquodentrordquo ou ldquoforardquo do

modelo da seguinte forma cada noacute folha vazio eacute classificado a partir de um de

seus irmatildeos vizinhos adjacentes Se ele possuir um vizinho adjacente cheio ele

seraacute classificado por este vizinho se natildeo possuir os vizinhos adjacentes seratildeo

classificados primeiro e ele teraacute esta mesma classificaccedilatildeo (Figura 21) Como tem

que existir sempre pelo menos um noacute cheio entre os filhos de um noacute pai entatildeo

sempre esta classificaccedilatildeo poderaacute ser feita Com a classificaccedilatildeo de todos os

filhos tem-se tambeacutem a classificaccedilatildeo dos cantos do noacute pai

Mf03c003fmx a b

Figura 22-Os cantos a e b do noacute cheio possuem a mesma classificaccedilatildeo fora do modelo Esta classificaccedilatildeo foi dada ao noacute vazio adjacente

Melhorias Propostas 51

Para classificar um noacute vazio por meio de um noacute cheio verificam-se os

cantos comuns destes dois noacutes se todos os cantos tiverem a mesma

classificaccedilatildeo esta seraacute dada ao noacute vazio (Figura 22) Se houver classificaccedilotildees

diferentes escolhe-se o surfel do noacute cheio mais proacuteximo ao noacute vazio faz-se o

produto interno entre a normal deste surfel e o vetor que liga o centro do noacute

cheio ao centro do noacute vazio (ou o vetor que liga o surfel ao centro do noacute vazio)

Se o produto interno for maior que zero o noacute eacute classificado como ldquoforardquo senatildeo eacute

classificado como ldquodentrordquo Para encontrar o surfel (pertencente a um noacute cheio)

mais proacuteximo ao noacute vazio existem dois casos

- O noacute cheio eacute folha percorre-se toda a lista de surfels e escolhe o surfel

mais proacuteximo da fronteira entre o noacute cheio e o vazio

- O noacute cheio natildeo eacute um noacute folha percorrem-se os filhos do noacute cheio ou seja

esta pesquisa eacute feita descendo na octree a partir do noacute cheio procurando o

surfel mais proacuteximo agrave fronteira do pai com o noacute vazio a ser classificado

Classificando o centro do noacute vazio todo o noacute deve ter a mesma

classificaccedilatildeo pois este noacute natildeo conteacutem surfels Para encontrar o surfel do noacute

vazio mais proacuteximo da fronteira entre o noacute cheio e o vazio basta testar o valor da

coordenada se a fronteira eacute o lado direito do noacute cheio escolhe-se o surfel com

maior coordenada lsquoxrsquo se eacute o lado esquerdo escolhe-se o surfel com menor lsquoxrsquo

se lado superior surfel com maior lsquoyrsquo etc A seguir apresentamos a classificaccedilatildeo

de um ponto qualquer pertencente a um noacute cheio

Figura 23- Quadtree classificada

Melhorias Propostas 52

5111 Classificaccedilatildeo de um ponto de um noacute cheio

Figura 24 [2] A normal n eacute a normal meacutedia e os surfels s1 e s2 juntamente com a normal

n definem as retas que dividem o noacute O ponto a estaacute fora do modelo e o ponto b estaacute

dentro do modelo

Para um ponto localizado dentro do noacute faz-se o seguinte teste se o noacute foi

dividido testa-se de acordo com a divisatildeo do noacute se o ponto estaacute na parte do noacute

que estaacute dentro do modelo ele eacute classificado como ldquodentrordquo se o ponto estaacute na

parte que estaacute fora do modelo ele eacute classificado como ldquoforardquo (Figura 24) se o

ponto estaacute na parte que conteacutem os surfels encontra-se o surfel s pertencente ao

noacute mais proacuteximo do ponto e o classifica de acordo com s seja ns a normal em s

cs a coordenada de s cp a coordenada do ponto Se (cp - cs )٠ ns gt 0 o ponto

seraacute classificado como ldquoforardquo Senatildeo seraacute classificado como ldquodentrordquo

Se o noacute natildeo foi dividido em planos esta classificaccedilatildeo a partir do surfel

mais proacuteximo seraacute sempre feita

512 Teste DentroFora

Melhorias Propostas 53

Figura 25-Duas circunferecircncias e suas quadtrees correspondentes

O Teste DentroFora classifica os surfels de um modelo como dentro ou

fora de outro modelo ou na sua interseccedilatildeo Este teste foi aqui implementado

exatamente como foi proposto em Adams e Dutreacute [2] exceto que natildeo foi

implementado o meacutetodo TINN - Triangle Inequality Nearest Neighbour [19]

Cada octree eacute percorrida verificando-se se os seus noacutes ou surfels estatildeo dentro

fora ou no contorno do outro modelo (Figura 25) Sejam A e B duas octrees e

queremos classificar a octree A As duas octrees (AB) satildeo percorridas partindo

da raiz

Para cada noacute de A existem quatro casos (Figura 26) Para testar estas

situaccedilotildees os boxes dos noacutes satildeo aumentados de rmax o raio do maior surfel do

modelo Isto eacute feito para compensar o fato de que o surfel natildeo eacute apenas um

ponto mas sim considerado como um disco

Os quatro casos satildeo

Se o noacute de A natildeo intersecta B entatildeo todos os surfels deste noacute satildeo

classificados como fora

Se o noacute de A intersecta apenas noacutes de B que estatildeo fora do modelo

todos os surfels deste noacute satildeo fora

Se o noacute de A intersecta apenas noacutes de B que estatildeo dentro do modelo

todos os surfels deste noacute satildeo dentro

Melhorias Propostas 54

Se o noacute de A intersecta noacutes de B que estatildeo dentro e tambeacutem noacutes de B

que estatildeo fora testa-se se este noacute de A eacute ou natildeo folha Se natildeo for folha

percorre-se os filhos deste noacute de A ateacute encontrar um noacute folha cheio que

intersecta B Para cada surfel sa deste noacute folha de A encontra-se o surfel de B

mais proacuteximo e classifica-se a coordenada de sa da forma apresentada na seccedilatildeo

5111 Seja sb o surfel usado na classificaccedilatildeo de sa Se os discos de sb e sa

se intersectam sa eacute classificado como ldquointerseccedilatildeordquo

(a) (b)

(c) (d)

Figura 26- a modelos natildeo se intersectam b modelo intersecta noacutes fora c modelo intersecta apenas noacutes dentro d modelo intersecta noacutes dentro e noacutes fora

513 Criaccedilatildeo do modelo resultado

Um novo modelo eacute criado com os seguintes surfels (de acordo com a

operaccedilatildeo booleana escolhida pelo usuaacuterio - veja Regra 1 da seccedilatildeo 41)

Uniatildeo - surfels de A que estatildeo fora de B + surfels de B que estatildeo fora de A

Melhorias Propostas 55

Interseccedilatildeo - surfels de A que estatildeo dentro de B + surfels de B que estatildeo

dentro de A

Diferenccedila A-B - surfels de A que estatildeo fora de B + surfels de B que estatildeo

dentro de A (com orientaccedilatildeo invertida)

Como natildeo foi implementado tratamento especial algum de interseccedilatildeo para

o nosso plugin os surfels que se intersectam satildeo mantidos no modelo resultado

final sem modificaccedilotildees

Descrito o algoritmo vejamos a seguir a sua implementaccedilatildeo

52 Implementaccedilatildeo

Este algoritmo foi implementado na forma de um plugin para o software

PointShop 3D [11] Este plugin foi desenvolvido na linguagem C e no sistema

operacional Windows

A escolha deste tipo de implementaccedilatildeo permitiu-nos usar o software

PointShop para os testes do algoritmo Estes testes foram feitos com os modelos

disponibilizados para o PointShop [11] Nesta seccedilatildeo apresentaremos o software

PointShop e as principais estruturas de dados usadas em nosso plugin

O Pointshop eacute um software aberto com seu coacutedigo disponiacutevel e preparado

para trabalhar com plugins Eacute um software de ediccedilatildeo de modelos 3D por pontos

Ele permite aleacutem de visualizar o modelo alterar as suas caracteriacutesticas como

cor brilho e fazer mapeamento de textura iluminaccedilatildeo filtragem (Figura 27)

Melhorias Propostas 56

Figura 27-Software PointShop 3D com dois modelos carregados na sua cena

Aleacutem disso pode-se criar uma cena com vaacuterios modelos e visualizaacute-los de

qualquer ponto de vista Implementa o virtual trackball para rotacionaacute-los e

transladaacute-los Usa uma iluminaccedilatildeo simples direcional A sua arquitetura eacute

extensiacutevel permite que o usuaacuterio adicione seus proacuteprios componentes ao

sistema Possui trecircs tipos de componentes

ldquoToolsrdquo fornece funcionalidades para ediccedilatildeo interativa de superfiacutecie Satildeo

disponibilizados na ldquotoolbarrdquo

Plugins fornece funcionalidades para processar em um soacute passo

modelos ou partes deles selecionadas Satildeo disponibilizados no menu ldquoPluginsrdquo

Renderes fornece funcionalidades de display para os modelos

Para esta dissertaccedilatildeo foi escolhida a construccedilatildeo do componente Plugin

por adequar-se agrave nossa proposta e ser a mais simples de ser construiacuteda O

PointShop [11] jaacute conteacutem uma tool que executa operaccedilotildees booleanas e

deformaccedilatildeo free-form sobre os modelos carregados na cena usando o meacutetodo

de Pauly [3] apresentado no capiacutetulo 4 O nosso plugin Operaccedilotildees Booleanas

implementa o algoritmo descrito na seccedilatildeo anterior baseado na proposta de

Melhorias Propostas 57

Adams e Dutreacute [2] Uma comparaccedilatildeo entre o nosso plugin e a tool de Pauly [3] eacute

feita no capiacutetulo 6

Figura 28-Menu do PointShop com o plugin e as opccedilotildees para operaccedilotildees booleanas

Para se executar o plugin o usuaacuterio precisa carregar dois modelos na

cena do PointShop acionar o plugin informando a operaccedilatildeo que seraacute executada

O plugin executaraacute o algoritmo acima proposto e carregaraacute o resultado na cena

do Pointshop retirando os modelos anteriores

521 Estruturas de Dados

Como vimos o software PointShop [11] trabalha com modelos por pontos

Um modelo deste software descrito na seccedilatildeo 42 conteacutem todas as informaccedilotildees

que o algoritmo proposto em Bart [2] necessita Abaixo relacionamos as

Melhorias Propostas 58

principais estruturas de dados do PointShop usadas no plugin e as principais

estruturas de dados do nosso plugin

As principais classes do PointShop usadas no plugin satildeo

Classe Scene

Classe Objects

Classe SurfelColections

Classe Surfel

Classe StatusBar

Classe Transformer

A hierarquia de dados eacute a seguinte a Scene conteacutem vaacuterios Objects os

quais conteacutem SurfelColections Cada SurfelColections conteacutem Surfels que

suportam uma ou mais propriedades tais como cor difusa cor especular

Classe Scene Classe que representa uma cena que conteacutem modelos

Classe Object Um modelo eacute representado pela classe Object que

conteacutem uma SurfelCollection e as matrizes de transformaccedilatildeo para rotaccedilatildeo

escala e translaccedilatildeo Cada Object eacute identificado pelo seu nome que eacute uacutenico na

Scene O meacutetodo getUniqueName retorna um nome uacutenico Cada Object tem sua

proacutepria matriz de transformaccedilatildeo que pode ser modificada com setRotation

rotate setPosition translate setScale e scale Objects podem ser copiados com

copy Objects consiste em um conjunto de surfels os quais podem ser

recuperados pela getSurfelCollection O Object pode ser ativado com

setActiveObject e recuperado com getActiveObject

Objects podem ser adicionados ou removidos com addObject e

removeObject Os Objects podem ser obtidos pela getFirstObject e

getNextObject

Classe SurfelCollection representa o conjunto de surfels de um modelo

Cada surfelcollection consiste em um conjunto de surfels (SurfelInterface) de

tamanho obtido por getNofSurfels Os surfels podem ser recuperados com

getFirstSurfel getCurrentSurfel e getNextSurfel

A SurfelCollection conteacutem um PropertyDescriptor e uma SurfelList

A SurfelList eacute uma lista duplamente encadeada de surfels Possui os

atributos firstSurfel lastSurfel currentSurfel que satildeo ponteiros para uma

SurfelInterface nSurfels que eacute o nuacutemero de Surfels

A SurfelInterface define a API para os surfels que satildeo os menores

elementos que compotildeem um Object Podem ser considerados como pontos com

uma normal que define a orientaccedilatildeo do ciacuterculo (ou elipse) que seraacute desenhado

Melhorias Propostas 59

tatildeo logo o surfel seja renderizado Tem como atributos dois ponteiros (next e

prev) para SurfelInterface

PropertyDescriptor consiste em ateacute 32 valores descrevendo quais as

propriedades a SurfelInterface suporta

Classe Surfel classe que representa o surfel

Classe StatusBar classe que imprime mensagens na tela Os plugins

podem mandar mensagens para o usuaacuterio pela StatusBar

Mensagens texto podem ser impressas com showMessage O progresso

de uma operaccedilatildeo pode ser indicado com setProgress ou resetProgress

Classe Transformer representa a transformaccedilatildeo entre sistemas de

coordenadas Esta classe fornece meacutetodos para transformar pontos e vetores

entre os diferentes sistemas de coordenadas do Pointshop

A seguir apresentamos as principais estruturas de dados do plugin

Operaccedilotildees Booleanas

As principais estruturas de dados do plugin satildeo boundingbox tree no

lista_surfel surfel

Boundingbox conteacutem dois pontos 3D que definem uma caixa que conteacutem

o modelo um ponto com menores coordenadas xy e z e outro ponto com

maiores xyz

Tree representa a octree do modelo Cada registro conteacutem um ponteiro

para um noacute e oito ponteiros para as 8 octrees filhas

No representa um noacute da octree Conteacutem os seguintes dados

- localizaccedilatildeo do noacute que eacute o canto inferior esquerdo do noacute

- lista_surfel (preenchida apenas para noacutes folha cheios)

- quantidade de surfels do noacute

- classificaccedilatildeo do noacute como dentro fora ou contorno

- classificaccedilatildeo do noacute em relaccedilatildeo a outro modelo

- indica se o noacute eacute folha ou natildeo

- vetor que eacute a meacutedia das normais dos surfels do noacute

- ponto que eacute a meacutedia das localizaccedilotildees dos surfels do noacute

- surfel que tem (entre todos os surfels do noacute) o maior produto interno

entre a sua normal e a normal meacutedia

- surfel que tem (entre todos os surfels do noacute) o menor produto interno

entre a sua normal e a normal meacutedia

- produto interno maacuteximo e miacutenimo entre as normais dos surfels do noacute e a

normal meacutedia deste noacute

Melhorias Propostas 60

- indica se o noacute conteacutem surfels com normais em sentido oposto (produto

interno entre elas eacute menor que zero)

- classificaccedilatildeo dos oito cantos do noacute

lista_surfels lista em que cada registro conteacutem um apontador para um

surfel e um apontador para o proacuteximo registro

surfel representa o surfel da octree Conteacutem a classificaccedilatildeo em relaccedilatildeo a

outro modelo e um ponteiro para o surfel do Poinshop

Resultados 61

6 Resultados

Neste capiacutetulo apresentamos os testes realizados com o plugin para o

PointShop implementado para esta dissertaccedilatildeo a comparaccedilatildeo deste plugin com

o plugin de Pauly [3] e a comparaccedilatildeo entre o meacutetodo de Adams e Dutreacute [2] e o

meacutetodo de Pauly [3]

61 Testes

Os testes foram feitos em um PC x86 Family 6 261600 KB de RAM sem

placa graacutefica sistema operacional Windows 2000 O plugin foi implementado na

linguagem C

Os modelos usados para os testes satildeo modelos disponibilizados no

PointShop [11] Vale lembrar que o meacutetodo implementado em nosso plugin eacute

restrito a modelos soacutelidos e portanto foram usados apenas estes modelos

soacutelidos para os testes

O modelo na Figura 29 que eacute um dos modelos disponibilizados no

PointShop [11] foi usado para mostrar o resultado das operaccedilotildees realizadas

pelo plugin implementado nesta dissertaccedilatildeo O modelo Igea eacute um modelo soacutelido

que conteacutem 134345 surfels

Resultados 62

Figura 29-Modelo do PointShop Igea

Para realizar as operaccedilotildees este modelo foi carregado na cena do

PointShop duas vezes e um deles colorido de vermelho As Figuras 30 31 32

mostram o resultado da operaccedilatildeo de uniatildeo interseccedilatildeo e diferenccedila

respectivamente Os nuacutemeros de surfels dos modelos resultantes satildeo mostrados

na Tabela 2

Resultados 63

Figura 30-Resultado da uniatildeo de duas Igeas

Figura 31-Resultado da interseccedilatildeo de duas Igeas

Resultados 64

Figura 32-Resultado da diferenccedila entre duas Igeas

Tabela 2-Nuacutemero de surfels dos modelos resultantes

Observamos que o nuacutemero de surfels dos modelos resultantes estaacute

coerente com as figuras dos seus modelos

Para avaliar o tempo de processamento das operaccedilotildees foram realizados

vaacuterios testes com o objetivo de obter uma meacutedia dos tempos de realizaccedilatildeo de

cada operaccedilatildeo Tambeacutem foram armazenados os tempos da criaccedilatildeo das duas

octrees e da classificaccedilatildeo de todos os surfels dos dois objetos (como dentro ou

fora do outro modelo) Estes testes foram feitos usando o modelo Igea A meacutedia

dos tempos de processamento foi calculada e os resultados satildeo mostrados na

Tabela 3 Verificamos que o maior tempo gasto eacute para criaccedilatildeo das octrees

Verificamos tambeacutem que este resultado apresentado eacute similar ao resultado

verificado empiricamente com o plugin de Pauly [3] Os tempos gastos para

realizar as operaccedilotildees satildeo similares e o maior tempo gasto no plugin de Pauly

tambeacutem eacute para inicializaccedilatildeo de suas estruturas de dados que incluem a kd-tree

Operaccedilatildeo Nuacutemero de surfels do modelo resultado

Uniatildeo 189715

Interseccedilatildeo 72225

Diferenccedila 134552

Resultados 65

Operaccedilatildeo Criaccedilatildeo das

Octrees (seg)

Classificaccedilatildeo

(seg)

Criaccedilatildeo do

resultado (seg)

Total (seg)

Uniatildeo 39375 1324 18925 7154

Interseccedilatildeo 38585 1585 09547 63982

Diferenccedila 399875 1504 1729 729475

Tabela 3- Meacutedia dos tempos de processamento para as operaccedilotildees com duas Igeas

Com o objetivo de expor melhor os resultados deste trabalho

apresentamos abaixo mais um teste das operaccedilotildees booleanas usando o nosso

plugin Os modelos usados para este segundo teste satildeo o Max Planck e o Male

ambos modelos soacutelidos disponibilizados no PointShop Estes modelos satildeo

mostrados nas figura 33 e 34

O primeiro Max Planck conteacutem 52809 surfels

Figura 33-Modelo do PointShop MaxPlanck

O segundo modelo abaixo Male conteacutem 148138 surfels

Resultados 66

Figura 34-Modelo do PointShop Male

As Figuras 353637 mostram o resultado da operaccedilatildeo de uniatildeo interseccedilatildeo

e diferenccedila respectivamente usando os dois modelos acima Podemos observar

pela figura 35 que o resultado da operaccedilatildeo de diferenccedila neste caso gerou um

modelo resultado com trecircs partes desconexas Os nuacutemeros de surfels de cada

modelo resultado satildeo mostrados na Tabela 5

Figura 35- Resultado da Uniatildeo do modelo Male com MaxPlanck

Resultados 67

Figura 36-Resultado da interseccedilatildeo do modelo Male com o MaxPlanck

Figura 37-Resultado da diferenccedila do modelo Male do modelo MaxPlanck

As meacutedias de tempos de processamento foram calculadas da mesma

forma que o primeiro teste com o modelo Igea acima apresentado Os

resultados satildeo mostrados na Tabela 4 Podemos observar que este teste

Resultados 68

apresenta tempos um pouco menores que o teste com o modelo Igea Isto se

deve ao fato de que o modelo MaxPlanck ser significativamente menor que o

modelo Igea MaxPlanck possui 52809 surfels e Igea conteacutem 134345 surfels

Operaccedilatildeo Criaccedilatildeo das

Octrees (seg)

Classificaccedilatildeo

(seg)

Criaccedilatildeo do

resultado (seg)

Total

(seg)

Uniatildeo 3012 1254 102 5285

Interseccedilatildeo 2985 0901 0861 4747

Diferenccedila 2965 0911 0791 4667

Tabela 4-Tempo de processamento das operaccedilotildees com os modelos MaxPlanck e Male

Operaccedilatildeo Nuacutemero de surfels do resultado

Uniatildeo 126532

Interseccedilatildeo 88414

Diferenccedila 77635

Tabela 5-Nuacutemero de surfels dos modelos resultados das operaccedilotildees com os modelos MaxPlanck e Male

Em seguida apresentaremos uma comparaccedilatildeo entre o nosso plugin e o

plugin de Pauly[3] e tambeacutem uma comparaccedilatildeo entre o meacutetodo de Adams e Dutreacute

[2] e o meacutetodo de Pauly [3]

62 Comparaccedilatildeo entre os dois meacutetodos que realizam operaccedilotildees booleanas

A comparaccedilatildeo entre os meacutetodos de Pauly[3] e de Adams e Dutreacute foi feita

em termos de tempo de processamento e em termos conceituais Em termos de

tempo de processamento comparamos o plugin de Pauly[3] com o nosso plugin

Em termos de tempo de processamento verifica-se empiricamente que os

dois meacutetodos apresentam tempos bastante similares Entretanto o tempo de

processamento do algoritmo aqui implementado ainda pode ser melhorado com

Resultados 69

o uso do meacutetodo TINN [19] que foi proposto em Adams[2] - para otimizar a

pesquisa do surfel mais proacuteximo a um ponto que estaacute localizado na regiatildeo de um

noacute que conteacutem surfels - veja seccedilatildeo 42 O uso deste meacutetodo natildeo foi

implementado para este trabalho e a sua implementaccedilatildeo melhoraria o tempo de

resposta do algoritmo Aleacutem disso o trabalho de Sara F Frisken [12] citado no

capiacutetulo 2 apresenta uma otimizaccedilatildeo no uso de octrees que pode ser

incorporada no algoritmo implementado neste trabalho

Em termos conceituais vamos fazer a comparaccedilatildeo do uso do que

chamamos aqui de Regra 2 do tratamento de interseccedilatildeo e do tratamento de

ldquoarestas vivasrdquo

Como vimos na seccedilatildeo 41 tanto o algoritmo implementado nesta

dissertaccedilatildeo baseado no trabalho de Adams e Dutreacute como o meacutetodo de Pauly

[3] parte do que chamamos aqui de Regra 2 para realizar operaccedilotildees booleanas

com pontos Mas cada um destes meacutetodos daacute um tratamento diferente para o

uso desta regra

O meacutetodo de Pauly usa a Regra 2 para classificaccedilatildeo de cada ponto ou de

cada surfel Para classificar um surfel de B sb como dentro ou fora de A eacute

encontrado o surfel de A sa mais proacuteximo a sb e sb eacute classificado a partir de sa

Para encontrar sa Pauly utiliza uma kd-tree Como esta pesquisa para encontrar

sa eacute cara (mesmo usando uma kd-tree) Pauly utiliza uma esfera que conteacutem

pontos com a mesma classificaccedilatildeo (seccedilatildeo 432) e diminui em 90 este nuacutemero

de pesquisas Pauly utiliza tambeacutem a representaccedilatildeo impliacutecita MLS (Moving Least

Squares) para casos em que a Regra 2 poderia falhar e para tratamento de

interseccedilotildees Entretanto o nuacutemero destes casos em que a Regra 2 poderia falhar

eacute muito pequeno E a representaccedilatildeo MLS natildeo eacute uma estrutura simples de ser

implementada Portanto natildeo encontramos vantagens em usar MLS para estes

casos O meacutetodo de Adams e Dutreacute natildeo trata estes casos e na praacutetica

apresenta resultados bastante satisfatoacuterios como foi mostrado Portanto

consideramos que valeria a pena fazer algum tratamento especial para estes

casos se fosse um procedimento simples Para a execuccedilatildeo do algoritmo de

Pauly o uso de MLS natildeo interfere significativamente porque a construccedilatildeo desta

representaccedilatildeo natildeo eacute feita somente para realizar operaccedilotildees booleanas Os testes

empiacutericos que fizemos com o algoritmo de Pauly natildeo incluem a construccedilatildeo desta

representaccedilatildeo

Aparentemente os dois algoritmos satildeo bastante parecidos um usa octrees

e o outro usa kd-tree As duas estruturas de dados satildeo simples e otimizam a

classificaccedilatildeo dos surfels de um modelo como dentro ou fora do outro modelo

Resultados 70

Mas existe uma diferenccedila conceitual entre dois que merece ser destacada O

algoritmo aqui implementado usa a Regra 2 para classificaccedilatildeo dos noacutes de uma

octree e armazena esta octree classificada (ver capiacutetulo 5) Assim na maioria dos

casos natildeo seraacute necessaacuterio encontrar o surfel mais proacuteximo para classificar um

ponto (ou um surfel) como fora ou dentro de um modelo Caso o ponto esteja em

uma aacuterea da octree classificada ele teraacute a classificaccedilatildeo dada agravequela aacuterea A

pesquisa ao surfel mais proacuteximo seraacute feita apenas nos casos em que o ponto a

ser classificado estaacute localizado entre os planos que subdividem um noacute cheio

O uso desta octree classificada levanta uma questatildeo que natildeo foi citada no

trabalho de Adams e Dutreacute que eacute a proximidade desta estrutura (armazenada)

de octree classificada com uma representaccedilatildeo volumeacutetrica do objeto Sendo

assim esta estrutura pode ser aproveitada para outras funccedilotildees aleacutem da

classificaccedilatildeo dos surfels Por exemplo podemos ter uma aproximaccedilatildeo do

volume de uma cena somando os volumes aproximados dos modelos que a

compotildeem Como o enfoque deste trabalho eacute operaccedilatildeo booleana natildeo vamos nos

aprofundar nesta questatildeo

Outra importante diferenccedila entre os dois trabalhos que jaacute foi explicada na

seccedilatildeo 432 eacute que o meacutetodo de Pauly aplica-se a modelos soacutelidos ou natildeo

soacutelidos enquanto que o meacutetodo de Adams e Dutreacute aplica-se somente a modelos

soacutelidos

Quanto ao tratamento de interseccedilatildeo em termos de visualizaccedilatildeo todos os

dois resolvem bem o problema O tratamento de interseccedilatildeo nos dois trabalhos

tambeacutem resolve o problema da validade da Regra 2 (ver seccedilatildeo 44) Entretanto

o tratamento de Adams e Dutreacute natildeo depende da renderizaccedilatildeo sendo portanto

mais portaacutevel Aleacutem disso uma desvantagem do meacutetodo de Pauly eacute o uso da

representaccedilatildeo impliacutecita MLS (ldquoMoving Least Squaresrdquo) do objeto para obter os

pontos exatamente na curva de interseccedilatildeo Esta representaccedilatildeo torna o

tratamento de interseccedilatildeo mais complexo e a vantagem apresentada natildeo eacute tatildeo

significativa para este tratamento de interseccedilatildeo

Conclusatildeo 71

7 Conclusatildeo

Concluiacutemos entatildeo que as escolhas de Adams e Dutreacute por usar uma

octree classificada e pelo tratamento dado agrave interseccedilatildeo satildeo mais abrangentes

que a escolha de Pauly E consideramos que quanto mais abrangente for uma

escolha conceitual mais resultados poderemos tirar dela No caso de Adams e

Dutreacute eles estendem o problema de classificar um ponto para classificar todo o

modelo Como foi citado ele quase fornece uma representaccedilatildeo volumeacutetrica do

modelo Esta aproximada representaccedilatildeo volumeacutetrica pode nos fornecer outras

informaccedilotildees como por exemplo o volume aproximado do modelo

Aleacutem disso o uso da representaccedilatildeo impliacutecita MLS no meacutetodo de Pauly cria

uma complexidade a mais para o meacutetodo sem apresentar vantagens para a

realizaccedilatildeo de operaccedilotildees booleanas que eacute o nosso enfoque

Logo podemos dizer que o meacutetodo de Adams e Dutreacute apresenta as

seguintes vantagens em relaccedilatildeo ao de Pauly

- a estrutura de octree classificada aleacutem de ser usada para classificaccedilatildeo

fornece informaccedilotildees adicionais como volume aproximado do objeto

- o tempo de processamento no meacutetodo de Adams e Dutreacute tende a ser

melhor que no meacutetodo de Pauly se implementadas as melhorias acima citadas e

se colocaacutessemos em consideraccedilatildeo o uso da representaccedilatildeo impliacutecita MLS

(Moving Least Squares)

- o tratamento de interseccedilatildeo de Adams e Dutreacute apresenta a vantagem da

portabilidade ou seja iraacute funcionar independente do algoritmo de renderizaccedilatildeo

utilizado

E as vantagens do meacutetodo de Pauly em relaccedilatildeo ao de Adams e Dutreacute

- a colocaccedilatildeo de surfels exatamente na curva de interseccedilatildeo

- a possibilidade de trabalhar com modelos soacutelidos ou natildeo soacutelidos

E finalizando concluiacutemos que o estudo relatado nesta dissertaccedilatildeo foi

importante por

- fornecer um breve estudo sobre modelagem por pontos uma nova e

promissora aacuterea dentro da computaccedilatildeo graacutefica

Conclusatildeo 72

- por apresentar uma avaliaccedilatildeo dos dois trabalhos existentes sobre

operaccedilotildees booleanas com pontos encontrando as vantagens de cada um

e levantando questotildees que natildeo tinham sido citadas nos trabalhos originais

- por propor e implementar melhorias ao trabalho de Adams e Dutreacute

71 Trabalhos Futuros

Nossa implementaccedilatildeo pode ser ainda evoluiacuteda com as propostas

apresentadas na seccedilatildeo 62 Como observamos o tempo de processamento do

algoritmo aqui implementado ainda pode ser melhorado com o uso do meacutetodo

TINN [19] - que foi proposto em Adams[2] - para otimizar a pesquisa do surfel

mais proacuteximo a um ponto que estaacute localizado na regiatildeo de um noacute que conteacutem

surfels Aleacutem disso o trabalho Simple and Efficient Trasversal Methods for

Quadtrees and Octrees de Sara F Frisken [12] citado no capiacutetulo 2 apresenta

uma otimizaccedilatildeo no uso de octrees Outra proposta para melhorar o tempo de

processamento do algoritmo aqui implementado eacute usar a forma de trabalhar com

octrees apresentada neste trabalho

O trabalho de Adams e Dutreacute [2] eacute aplicado apenas a objetos soacutelidos O

nosso plugin portanto aplica-se somente a este tipo de objeto Jaacute o trabalho de

Pauly[3] eacute aplicado tambeacutem a modelos natildeo soacutelidos Apresentamos como

proposta a um trabalho futuro a extensatildeo do algoritmo aqui implementado para

modelos natildeo soacutelidos O surfel pode conter uma informaccedilatildeo adicional que indica

se ele estaacute delimitando um volume ou natildeo Assim pode-se ter um modelo com

ldquopartes soacutelidasrdquo e ldquopartes natildeo soacutelidasrdquo Por exemplo a uniatildeo de um plano com

uma esfera poderia resultar numa esfera com ldquoabasrdquo (seriam as partes do plano

que estariam fora da esfera) O modelo resultado teria uma parte correspondente

a um espaccedilo 3D (esfera) e outra parte que seria uma superfiacutecie 2D posicionada

no espaccedilo 3D sem delimitar algum volume (abas)

Muitos trabalhos podem ser desenvolvidos aplicando-se o modelo por

pontos em animaccedilatildeo jogos visualizaccedilatildeo de terrenos criaccedilatildeo de protoacutetipos etc

considerando-se a eficiecircncia e simplicidade do modelo E mais especificamente

as operaccedilotildees booleanas com pontos podem ser aplicadas para criaccedilatildeo de

cenaacuterios testes de colisotildees e nestes casos a representaccedilatildeo usando octrees

pode ser mais explorada considerando-se o seu potencial de representaccedilatildeo

volumeacutetrica de um objeto

Referecircncias Bibliograacuteficas 73

8 Referecircncias Bibliograacuteficas

[1] MAumlNTYLAuml M An Introduction to Solid Modeling Computer Science Press 1988

[2] ADAMS B DUTREacute P Interactive Boolean Operations on Surfel-

Bounded Solids Proceedings of SIGGRAPH 2003 San Diego USA 2003

[3] PAULY M KEISER R KOBBELT L GROSS M Shape Modeling

with Point-Sampled Geometry SIGGRAPH 2003 Computer Graphics

Proceedings Annual Conference Series ACM Press ACM SIGGRAPH 2003

[4] LEVOY M WHITTED T The Use of Points as Display Primitives

Technical Report TR 85-022 The University of North Carolina at Chapel Hill

Department of Computer Science 1985

[5] PFISTER H ZWICKER M VAN BAAR J GROSS M 2000 Surfels

Surface Elements as Rendering Primitives SIGGRAPH 2000 pp 335ndash342 New

Orleans LA July 23-28 2000

[6] ZWICKER M PFISTER H VAN BAAR J GROSS M Surface

Splatting SIGGRAPH 2001

[7] PAULY M KOBBELT L GROSS M Multiresolution Modeling of

Point-Sampled Geometry CS Techinical Report 378 September 16 2002

[8] CURLESS B New Methods for Surface Reconstruction from Range Images PhD thesis Stanford University 1997

[9] RUSINKIEWICZ S Real-time Acquisition and Rendering of Large 3D Models PhD thesis Stanford University 2001

Referecircncias Bibliograacuteficas 74

[10] AMENTA N BERN M KAMVYSSELIS M A new Voronoi-Based

Surface Reconstruction Algorithm SIGGRAPH 98 Conference proceedings pp

415-421 New York 1998

[11] ZWICKER M PAULY M KNOLL O GROSS M Pointshop 3D an

Interactive System for Point-Based Surface Editing Proceedings of SIGGRAPH 2002 San Antonio TX July 2002

[12] FRISKEN S PERRY R Simple and Efficient Traversal Methods for

Quadtrees and Octrees Journal of Graphics Tools Vol 7 Issue 3 May 2003

[13] CORREcircA W T OLIVEIRA M M Silva C T Wang J

Modeling and Rendering of Real Environments

Revista de Informaacutetica Teoacuterica e Aplicada (Brazilian Journal of Theoretic and Applied Computing) 9(2)127-156 2002

[14] DAVIS J MARSCHNER S GARR M LEVOY M Filling Holes in

Complex Surfaces Using Volumetric Diffusion First International Symposium on 3D Data Processing Visualization Transmission June 2002

[15] RAumlSAumlNEN J Surface Splatting Theory Extensions and Implementation Masterrsquos Thesis Dept of Computer Science Helsinki

University of Technology May 28 2002

[16] PAULY M Point Primitives for Interactive Modeling and Processing of 3D Geometry PhD thesis Federal Institute of Technology (ETH)

of Zurich 2003

[17] HOPPE H DEROSE T DUCHAMP T MCDONALD J

STUELZLE W Surface Reconstruction from Unorganized Points Computer Graphics 26(2)71ndash78 July 1992

[18] ALEXA M BEHR J COHEN-OR D FLEISHMAN S LEVIN D

SILVA C T Point Set Surfaces IEEE Visualization 2001 pp 21ndash28 October

2001

Referecircncias Bibliograacuteficas 75

[19] GREENSPAN M GODIN G TALBOT J Acceleration of Binning

Nearest Neighbor Methods Proceedings of Vision Interface 2000 pp 337-

344

[20] MENCL R Reconstruction of Surfaces from Unorganized Three-Dimensional Point Clouds Dissertation Dortmund Univ 2001

[21] KRIVANEK J Representing and Rendering Surfaces With Points

httpciteseernjneccomkrivanek03representinghtml Acesso em 30 jul

2003

[22] KRISTJANSSON ET AL Approximate Boolean Operations on Free-

form Solids Proceedings of SIGGRAPH 01 2001

Trabalhos relacionados 18

2 Trabalhos relacionados

O primeiro pesquisador a propor o uso de pontos como primitiva graacutefica foi

Levoy em [4] Ele propotildee o uso de pontos como primitiva de renderizaccedilatildeo e

discute a conversatildeo dos outros modelos para o modelo por pontos

Nos uacuteltimos anos vaacuterios trabalhos importantes tecircm sido realizados na aacuterea

em diversos segmentos em visualizaccedilatildeo podemos destacar os trabalhos de

Pfister [5] e de Zwicker [6] que usam pontos como primitiva de renderizaccedilatildeo e

com resultados praacuteticos interativos muito bons

Em [7] Pauly et al propotildeem algoritmos para modelagem multi-resoluccedilatildeo

em modelos por pontos

Os trabalhos de Curless [8] e Rusinkiewicz [9] discutem os meacutetodos de

aquisiccedilatildeo que consistem em obter uma amostragem de pontos da superfiacutecie do

objeto real por meio de equipamentos como por exemplo o scanner 3D

Nas operaccedilotildees booleanas a interseccedilatildeo das superfiacutecies dos modelos

iniciais seraacute parte do modelo resultado e para ser representada corretamente

precisa ser reconstruiacuteda A reconstruccedilatildeo da superfiacutecie tambeacutem eacute usada na

visualizaccedilatildeo de um modelo Um trabalho significativo na aacuterea de reconstruccedilatildeo de

superfiacutecies estaacute em [10] de N Amenta etal Este trabalho apresenta uma

soluccedilatildeo praacutetica com garantias teoacutericas para este problema e uma heuriacutestica para

o tratamento de arestas vivas a questatildeo mais difiacutecil desta aacuterea Um exemplo

de uma aresta viva eacute o encontro de dois planos natildeo coincidentes

Frequumlentemente a interseccedilatildeo citada acima (interseccedilatildeo entre os modelos iniciais)

gera uma aresta viva (seccedilatildeo 4223)

O algoritmo aqui implementado eacute um plugin para o software PointShop 3D

[11] de Zwicker et al software de ediccedilatildeo de modelos com pontos O PointShop

tem seu coacutedigo aberto documentaccedilatildeo e trabalha com plugins Ele permite a

visualizaccedilatildeo e ediccedilatildeo interativa do modelo por pontos Eacute o uacutenico software livre

disponiacutevel com estas caracteriacutesticas Esta implementaccedilatildeo na forma de um plugin

facilitou muito o trabalho pois natildeo foi necessaacuterio implementar a visualizaccedilatildeo do

modelo 3D Aleacutem disso o Pointshop conteacutem tambeacutem um plugin com a

implementaccedilatildeo do meacutetodo de Pauly et al [3] discutido nesta dissertaccedilatildeo A

Trabalhos relacionados 19

execuccedilatildeo dos dois plugins que realizam operaccedilotildees booleanas pocircde ser

comparada

Os trabalhos aqui discutidos satildeo o de Bart Adams e Philip Dutreacute [2] e de

Pauly et al[3] que apresentam meacutetodos diferentes para realizaccedilatildeo de

operaccedilotildees booleanas com pontos Adams e Dutreacute utilizam octrees [1] e Pauly

Kd-Tree [16] e MLS (Moving Least Squares) [18] Estes algoritmos satildeo

discutidos no capiacutetulo 4

O trabalho de Sara F Frisken [12] apresenta um algoritmo para realizar

operaccedilotildees em octree de forma mais eficiente Como estas operaccedilotildees estatildeo

presentes em todo o nosso algoritmo este trabalho certamente oferece uma

forma de otimizaccedilatildeo mas que natildeo foi implementada

Modelagem por Pontos 20

3 Modelagem por Pontos

A computaccedilatildeo graacutefica natildeo lida diretamente com o objeto ou com o

fenocircmeno fiacutesico lida com modelos graacuteficos ou geomeacutetricos Modelos graacuteficos

satildeo estruturas computacionais (abstratas) que capturam aspectos de objetos de

interesse para uma aplicaccedilatildeo como forma cor textura etc Se apenas a forma

ou a geometria do objeto eacute relevante temos modelos geomeacutetricos

Estes modelos satildeo usados em vaacuterias aplicaccedilotildees em computaccedilatildeo graacutefica

como roboacutetica visatildeo computacional simulaccedilotildees realistas anaacutelises estruturais

prototipagem projeto e manufatura de produtos eletromecacircnicos arquitetura

Existem vaacuterios tipos de modelos graacuteficos Esta dissertaccedilatildeo trata de um tipo

muito em voga atualmente que eacute o modelo por pontos

Neste capiacutetulo daremos uma visatildeo geral do modelo por pontos

Introduziremos este modelo e seu processo de criaccedilatildeo Seraacute apresentado o que

eacute um modelo por pontos e o conceito de surfel [5] introduziremos os tipos de

distribuiccedilatildeo dos surfels uma estruturaccedilatildeo aplicada a estes surfels e dados que

eles podem conter As quatro proacuteximas subseccedilotildees (Ideacuteia da representaccedilatildeo

Tipos de distribuiccedilatildeo dos surfels Estrutura de multi-resoluccedilatildeo e Dados que um

surfel pode conter) tratam destes toacutepicos Um modelo por pontos pode ser criado

a partir da conversatildeo de outros tipos de modelagem NURBS por exemplo para

o modelo por pontos ou a partir de um processo de aquisiccedilatildeo Esta uacuteltima forma

de criaccedilatildeo pode ser dividida em duas etapas aquisiccedilatildeo do modelo reconstruccedilatildeo

da superfiacutecie As subseccedilotildees 35 e 36 tratam destas duas etapas

respectivamente A ediccedilatildeo do modelo 3D eacute tratada brevemente na subseccedilatildeo 38

e a sua visualizaccedilatildeo na subseccedilatildeo 37 A apresentaccedilatildeo do processo de aquisiccedilatildeo

(seccedilatildeo 35) eacute baseada no tutorial de W T Correcirca [13] A etapa de ediccedilatildeo 3D

consiste em operaccedilotildees para mudanccedila da cor textura ou forma do modelo Para

esta etapa enfocaremos as operaccedilotildees booleanas que modificam a forma do

modelo ou criam novos modelos

31 Ideacuteia da Representaccedilatildeo

Modelagem por Pontos 21

Figura 1 [20] -Um modelo por pontos e sua visualizaccedilatildeo

Um modelo por pontos representa um objeto atraveacutes de seu contorno Eacute

um tipo de representaccedilatildeo B-Rep (Boundary Representation) [1] Este contorno

consiste em uma superfiacutecie 2D posicionada no espaccedilo 3D Na modelagem por

pontos ela eacute representada por um conjunto de pontos 3D que satildeo uma

amostragem dos (infinitos) pontos que formam a superfiacutecie contiacutenua (Figura 1) A

amostragem pode ser obtida de diversas maneiras Uma delas o processo de

aquisiccedilatildeo progrediu muito nos uacuteltimos anos e este foi um dos fatores que tornou

muito importante o desenvolvimento deste modelo por pontos Outra forma de

gerar amostragem eacute fazer uma conversatildeo de um outro modelo NURBS por

exemplo para o modelo por pontos

Estes pontos satildeo denominados surfels e podem conter aleacutem da posiccedilatildeo

3D outras informaccedilotildees como normal agrave superfiacutecie cor textura raio de alcance A

Figura 2 mostra um conjunto de surfels representando uma superfiacutecie No surfel

em destaque podemos ver o raio de alcance rt e a normal n agrave superfiacutecie

Modelagem por Pontos 22

Figura 2 [5] A superfiacutecie modelada por surfels O surfel em destaque tem raio de alcance

rt e normal n

Como o modelo natildeo armazena qualquer informaccedilatildeo sobre a conexatildeo entre

os surfels a reconstruccedilatildeo da superfiacutecie contiacutenua a partir dele pode exigir

algumas restriccedilotildees na amostragem (seccedilatildeo 36)

32 Tipos de distribuiccedilatildeo dos surfels

Existem dois tipos de distribuiccedilatildeo dos surfels na modelagem por pontos

uniforme e natildeo uniforme Na distribuiccedilatildeo uniforme cada um deles descreve

partes de mesmo tamanho da superfiacutecie Na natildeo uniforme cada surfel armazena

a informaccedilatildeo de seu raio de alcance que eacute o raio do disco que este surfel

representa

A distribuiccedilatildeo uniforme tem a vantagem de ser mais simples e natildeo ser

necessaacuterio armazenar o raio de alcance do disco mas ela apresenta a seguinte

desvantagem se o modelo possui regiotildees com muito detalhe e regiotildees com

pouco detalhe ele teraacute que manter uma alta densidade mesmo nas regiotildees de

poucos detalhes

33 Estrutura de multi-resoluccedilatildeo

Um objeto pode ser representado em vaacuterios niacuteveis de detalhes Por

exemplo podemos representar um mesmo objeto com vaacuterias resoluccedilotildees

diferentes Este conceito pode ser aplicado ao modelo por pontos Desta forma

um modelo eacute representado por uma estrutura hieraacuterquica (uma aacutervore por

exemplo) onde em cada niacutevel temos uma representaccedilatildeo do objeto em uma

Modelagem por Pontos 23

determinada resoluccedilatildeo Em [7] Pauly et al propotildeem algoritmos para modelagem

multi-resoluccedilatildeo em modelos por pontos

34 Dados que um surfel pode conter

Cada surfel armazena sua localizaccedilatildeo e pode tambeacutem conter informaccedilotildees

como a cor ou coordenadas de textura Se a amostragem natildeo for uniforme o

surfel conteacutem a informaccedilatildeo do raio de alcance que eacute o raio de um disco cujo

centro eacute a posiccedilatildeo do surfel O surfel pode tambeacutem conter o vetor normal agrave

superfiacutecie e assim o surfel pode ser visto como um disco orientado A superfiacutecie

tambeacutem pode ser vista como uma superfiacutecie orientada

35 Aquisiccedilatildeo do modelo

Esta introduccedilatildeo sobre aquisiccedilatildeo do modelo aqui apresentada baseia-se no

tutorial de W T Correcirca [13]

O processo de aquisiccedilatildeo consiste em obter uma amostragem de pontos da

superfiacutecie do objeto real por meio de equipamentos como por exemplo o

scanner 3D Eacute uma aacuterea que tem progredido muito nos uacuteltimos anos A

resoluccedilatildeo e a precisatildeo dos equipamentos de aquisiccedilatildeo tecircm melhorado bastante

e o custo deles reduzido de forma significativa Isso possibilita que a aquisiccedilatildeo

de modelos 3D seja usada em aplicaccedilotildees de desenho industrial arte ou em

produtos para a aacuterea de entretenimento O consequumlente maior uso destes

equipamentos criou a necessidade de avanccedilos no tratamento dos seus dados de

saiacuteda que satildeo um conjunto de pontos

Este processo pode ser dividido em trecircs partes [13] aquisiccedilatildeo da

geometria aquisiccedilatildeo da textura e correccedilatildeo de falhas da aquisiccedilatildeo

351 Aquisiccedilatildeo da geometria

Existem vaacuterios meacutetodos de aquisiccedilatildeo da geometria Curless [8] e

Rusinkiewicz [9] classificaram estes meacutetodos em trecircs categorias meacutetodos por

contato transmissatildeo e reflexatildeo

O meacutetodo por contato toca a superfiacutecie do objeto com uma sonda e grava

a posiccedilatildeo Este meacutetodo do qual o Coordinate Measuring Machines (CMMs) eacute

Modelagem por Pontos 24

um exemplo eacute bastante preciso mas eacute muito lento e natildeo adequado a objetos

fraacutegeis

Meacutetodos por transmissatildeo projetam ondas de energia sobre o objeto e

gravam a energia transmitida Por exemplo tomografia computadorizada que

projeta ondas de raio-x sobre o objeto e mede a quantidade de radiaccedilatildeo que

passa atraveacutes dele O resultado eacute um modelo geomeacutetrico de alta resoluccedilatildeo Este

meacutetodo pode captar detalhes do objeto que natildeo satildeo visiacuteveis de fora do objeto

Por outro lado ele eacute caro e arriscado

Meacutetodos por reflexatildeo podem ser oacuteticos ou natildeo-oacuteticos Natildeo-oacuteticos incluem

radares que medem a distacircncia a um objeto enviando microondas ou ondas

sonoras para o objeto e gravando o tempo que a onda gasta para retornar Estes

meacutetodos natildeo satildeo muito precisos nem raacutepidos

Meacutetodos por reflexatildeo oacuteticos podem ser passivos ou ativos Meacutetodos oacuteticos

passivos natildeo interagem com o objeto e incluem teacutecnicas de visatildeo computacional

como shape-from-shading stereo triangulation optical flow e meacutetodos de

decomposiccedilatildeo para video streams Estes meacutetodos raramente constroem

modelos precisos e sua maior aplicaccedilatildeo eacute em reconhecimento de objetos

Meacutetodos oacuteticos ativos projetam luz sobre um objeto de maneira estruturada

e atraveacutes da reflexatildeo da luz determinam a forma do objeto Exemplos satildeo depth

from defocus photometric stereo projected-light triangulation time of flight

Meacutetodos por reflexatildeo oacuteticos ativos tecircm muitas vantagens sobre os passivos tecircm

um melhor desempenho quando natildeo existe textura satildeo mais baratos e mais

robustos e produzem uma amostragem precisa

352 Aquisiccedilatildeo da textura

Idealmente noacutes gostariacuteamos de ter uma completa descriccedilatildeo de como um

ponto da superfiacutecie reflete a luz dependendo do vetor normal a esta superfiacutecie

da direccedilatildeo do raio de luz incidente e do comprimento de onda Tal descriccedilatildeo eacute

conhecida como Bidirectional Reflectance Distribution Function (BRDF) Medir

BRDFs com precisatildeo eacute um problema difiacutecil

Pode-se ter uma aproximaccedilatildeo da aquisiccedilatildeo de cores do objeto tirando

fotos dele O objeto eacute fotografado e a cor de cada ponto da superfiacutecie eacute obtida a

partir de um mapeamento das fotos 2D para o modelo 3D Para mapear a

fotografia agrave geometria precisamos conhecer os paracircmetros de projeccedilatildeo da

cacircmera e a sua posiccedilatildeo no momento em que a foto foi batida Para cada ponto

Modelagem por Pontos 25

3D do modelo encontramos sua projeccedilatildeo 2D no plano da cacircmera e associamos

a cor do pixel nesta projeccedilatildeo agrave cor do ponto 3D

353 Correccedilatildeo das falhas da aquisiccedilatildeo

O processo de aquisiccedilatildeo deixa frequumlentemente buracos no modelo devido

a ruiacutedos no processo ou agrave impossibilidade de aquisiccedilatildeo de determinadas partes

de uma superfiacutecie Estes buracos devem ser corrigidos Pode-se usar por

exemplo um filtro de passa-baixa para remoccedilatildeo de ruiacutedos [14] Meacutetodos de

difusatildeo geomeacutetrica tecircm sido aplicados para preenchimento dos buracos [15] A

correccedilatildeo das falhas eacute tida como um preacute-processamento para o processo de

reconstruccedilatildeo da superfiacutecie contiacutenua (seccedilatildeo 36)

36 Reconstruccedilatildeo da superfiacutecie (contiacutenua) a partir do modelo (discreto)

A reconstruccedilatildeo da superfiacutecie contiacutenua consiste em a partir de um conjunto

natildeo estruturado de pontos obter um modelo contiacutenuo desta superfiacutecie Esta

reconstruccedilatildeo eacute frequumlentemente exigida para um modelo por pontos Na sua

visualizaccedilatildeo podemos desejar focar qualquer parte do modelo Para fazermos

operaccedilotildees booleanas com os modelos podemos querer determinar exatamente

onde eles se intersectam

No entanto natildeo precisamos ter necessariamente a representaccedilatildeo contiacutenua

de todo o objeto ao mesmo tempo A reconstruccedilatildeo desta superfiacutecie a partir dos

pontos amostrados pode ser feita no momento que for mais adequado agrave

aplicaccedilatildeo Na visualizaccedilatildeo a reconstruccedilatildeo pode ser feita na projeccedilatildeo 2D da

parte do modelo em foco (seccedilatildeo 37) Para operaccedilotildees booleanas pode-se

reconstruir apenas a aacuterea da interseccedilatildeo dos modelos

Este processo de reconstruccedilatildeo de superfiacutecie tem sido muito estudado em

modelagem geomeacutetrica e geometria computacional nos uacuteltimos anos O trabalho

mais importante desta aacuterea eacute o trabalho de Amenta et al [10] que foi a primeira

soluccedilatildeo com garantias demonstraacuteveis para este problema de reconstruccedilatildeo de

superfiacutecie A seccedilatildeo 44 explica estes conceitos e o trabalho [10] Este trabalho

demonstra que teoricamente para que a reconstruccedilatildeo da superfiacutecie (contiacutenua) a

partir das amostras seja correta a amostragem deve ser adequada Ele usa o

conceito de ldquoEixo Medialrdquo para definir o que eacute uma amostragem adequada

Modelagem por Pontos 26

(seccedilatildeo 44) Em duas dimensotildees os veacutertices de Voronoi de uma amostragem

densa aproximam o ldquoEixo Medialrdquo da amostragem

Por meio deste conceito de Eixo Medial [1016] obtecircm-se paracircmetros

teoacutericos para a definiccedilatildeo de amostragem adequada e baseado neste conceito

o algoritmo apresentado em [10] traz uma soluccedilatildeo praacutetica para o problema

obtendo uma malha poligonal a partir do modelo por pontos

O PointShop 3D [11] software de ediccedilatildeo de modelos por pontos utilizado

nesta pesquisa faz quando necessaacuterio a reconstruccedilatildeo da superfiacutecie Para isso

o PointShop 3D explora a vizinhanccedila local (surfels vizinhos de acordo com suas

posiccedilotildees) Ele usa o conceito de Eixo Medial para justificar seu meacutetodo de

reconstruccedilatildeo da superfiacutecie que na praacutetica apresenta resultados bastante

satisfatoacuterios apesar de teoricamente natildeo ter garantias [16]

37 Visualizaccedilatildeo do modelo

A primeira abordagem para visualizaccedilatildeo de um modelo por pontos foi

construir uma malha de poliacutegonos a partir dos surfels e renderizaacute-la Mas a

construccedilatildeo de malhas a partir dos surfels eacute um processo muito caro e lento

principalmente para modelos complexos Na tentativa de obter uma visualizaccedilatildeo

interativa do modelo por pontos estatildeo sendo estudadas teacutecnicas que utilizam

surfels como primitiva de visualizaccedilatildeo A ideacuteia foi apresentada inicialmente por

Levoy [4]

Figura 3 [21] -Modelo por pontos e sua renderizaccedilatildeo usando Surface Splatting

Modelagem por Pontos 27

O objetivo da renderizaccedilatildeo a partir dos surfels eacute projetaacute-los na tela e

reconstruir as superfiacutecies de forma contiacutenua sem buracos Para que esta

renderizaccedilatildeo seja amplamente utilizada deve-se ter cuidado com o uso de

memoacuteria e com a qualidade da imagem gerada Teacutecnicas recentes como Surface

Splatting [6] faz a renderizaccedilatildeo interativamente com qualidade (Figura 3)

comparada a outros meacutetodos de renderizaccedilatildeo como Image Based Rendering

Em geral a visualizaccedilatildeo do modelo por pontos pode ser dividida nas seguintes

etapas

- warping - projeccedilatildeo em perspectiva de cada ponto do modelo na tela

processo anaacutelogo agrave projeccedilatildeo de veacutertices dos triacircngulos na malha triangular Se

um pixel da tela estiver contido em mais de uma projeccedilatildeo de surfels (vizinhos)

ou seja mais de um ponto cobre este pixel os atributos destes pontos seratildeo

combinados

- shading por ponto - o processo de shading eacute realizado para cada ponto

visiacutevel (os pontos que natildeo satildeo vistos do ponto de vista em questatildeo devem ser

retirados) Qualquer modelo local de shading pode ser aplicado Uma nova

teacutecnica foi proposta em Surface Splatting [6]

- reconstruccedilatildeo da imagem ndash pixels que natildeo ldquoreceberamrdquo projeccedilatildeo de

nenhum ponto formam buracos na imagem Esta imagem deve ser reconstruiacuteda

sem buracos sem aliasing e as superfiacutecies devem ser reconstruiacutedas de forma

contiacutenua e devem ser ldquosuavizadasrdquo (smooth surface)

Os algoritmos de renderizaccedilatildeo por pontos podem tratar a questatildeo de

buracos na visualizaccedilatildeo de trecircs formas [17]

Detecccedilatildeo e preenchimento de buracos no espaccedilo da tela pontos satildeo

projetados na tela e pixels que natildeo receberam pontos satildeo detectados (buracos)

Para preencher estes buracos que natildeo receberam pontos eacute feita uma

interpolaccedilatildeo entre os vizinhos

Geraccedilatildeo de mais pontos a superfiacutecie eacute interpolada no espaccedilo do modelo

para garantir que todos os pixels recebam pelo menos a projeccedilatildeo de um ponto

Splatting um surfel eacute projetado na tela e sua contribuiccedilatildeo eacute espalhada de

forma diferenciada para os pixels vizinhos Agrave medida em que o vizinho se torna

mais distante a contribuiccedilatildeo do surfel diminui

Raumlsaumlnen faz uma analogia do processo de renderizaccedilatildeo proposto em [6]

com o mapeamento de textura [15] No mapeamento de textura para um

determinado pixel da tela satildeo encontrados os pontos da textura que afetam este

Modelagem por Pontos 28

pixel Num sentido inverso em splatting para um determinado surfel (que

representa a textura) satildeo encontrados os pixels da tela que este surfel afeta

38 Ediccedilatildeo do modelo

Ediccedilatildeo de um modelo 3D consiste em operaccedilotildees que modificam

caracteriacutesticas deste modelo como cor textura forma ou criam novos modelos

O software PointShop 3D [11] software de ediccedilatildeo de modelos por pontos 3D

implementa vaacuterias destas operaccedilotildees (ver seccedilatildeo 52)

Para modificar a forma de um modelo ou criar um novo satildeo muito usadas

as operaccedilotildees booleanas que eacute o nosso enfoque nesta dissertaccedilatildeo Na

modelagem CSG (Constructive Solid Geometry) as operaccedilotildees booleanas satildeo

usadas juntamente com primitivas soacutelidas para definir um modelo No entanto

em alguns tipos de modelos estas operaccedilotildees satildeo difiacuteceis como por exemplo

em malhas poligonais Com pontos elas podem ser feitas interativamente [32]

Operaccedilotildees Booleanas com Pontos 29

4 Operaccedilotildees Booleanas com Pontos

Operaccedilotildees booleanas satildeo as operaccedilotildees de uniatildeo interseccedilatildeo e diferenccedila

definidas na teoria matemaacutetica de conjuntos Estas operaccedilotildees satildeo aplicadas em

modelos soacutelidos para alteraacute-los ou para criar novos modelos A Figura 4 abaixo

mostra a criaccedilatildeo de trecircs novos modelos a partir de quatro modelos iniciais

Figura 4 [22] Trecircs modelos novos foram criados a partir dos quatro iniciais (esfera

cilindro dois cubos) O primeiro eacute a esfera menos um cubo em seguida retirou-se outro

cubo e por uacuteltimo retirou-se o cilindro

Estas operaccedilotildees satildeo aplicadas em objetos modelados por pontos em dois

trabalhos no trabalho de Bart Adams e Philip Dutreacute [2] e no trabalho de Pauly

et Al [3] Neste capiacutetulo a seccedilatildeo 41 apresenta a parte comum aos dois

trabalhos e as seccedilotildees 42 e 43 apresentam as particularidades de cada um A

seccedilatildeo 44 discute uma questatildeo natildeo explicitada em nenhum dos dois trabalhos

41 Meacutetodos para realizar operaccedilotildees booleanas em objetos modelados por pontos

A Figura 5 mostra o resultado do meacutetodo de Adams[2] operaccedilotildees de

uniatildeo diferenccedila e interseccedilatildeo de objetos soacutelidos 3D modelados por pontos

Operaccedilotildees Booleanas com Pontos 30

Figura 5 [2]-A partir de dois modelos por pontos uma heacutelice e uma cabeccedila as trecircs operaccedilotildees booleanas satildeo mostradas da esquerda para a direita uniatildeo diferenccedila e interseccedilatildeo

Sejam A e B objetos 3D soacutelidos modelados por pontos Definem-se os

seguintes elementos

Af ndash superfiacutecie (contorno) de A que estaacute fora de B

Ad ndash superfiacutecie (contorno) de A que estaacute dentro de B

Bf ndash superfiacutecie (contorno) de B que estaacute fora de A

Bd ndash superfiacutecie (contorno) de B que estaacute dentro de A

O resultado da operaccedilatildeo booleana entre A e B seraacute um modelo C cuja

superfiacutecie de contorno pode ser determinada pela seguinte regra [2] que aqui

chamamos de Regra 1

Regra 1 A U B Af + Bf

A cap B Ad + Bd

A ndash B Af + Bd (com a orientaccedilatildeo invertida)

B ndash A Ad (com a orientaccedilatildeo invertida) + Bf

A Figura 6 mostra as operaccedilotildees com dois modelos A e B

(a) (b)

Operaccedilotildees Booleanas com Pontos 31

(c) (d)

Figura 6 [22] (a) Dois modelos A e B (b) Posicionados de forma que A tem

uma parte dentro de B eacute mostrado o resultado A U B Af + Bf (c) Resultado de A ndash B Af

+ Bd (d) Resultado de A cap B Ad + Bd

Bart [2] e Pauly [3] apresentam dois meacutetodos para determinar os

elementos acima Estes dois meacutetodos satildeo construiacutedos a partir dos seguintes

conceitos os elementos Af Ad Bf Bd satildeo uma parte da superfiacutecie modelada por

pontos e portanto satildeo conjuntos de surfels Para determinaacute-los eacute necessaacuteria

entatildeo a classificaccedilatildeo de um surfel (que pode se resumir agrave classificaccedilatildeo de um

ponto que eacute o seu centro) de uma superfiacutecie como dentro ou fora de um outro

modelo Os dois meacutetodos utilizam a seguinte regra para esta classificaccedilatildeo aqui

denominada Regra 2

Regra 2 Dado um ponto x qualquer um volume V determinado por uma superfiacutecie

de contorno S uma amostragem P da superfiacutecie S um ponto p є P que eacute a

amostra mais proacutexima a x um vetor np normal agrave S em p e orientado para fora de

S temos que

(x ndash p) np gt 0 x notinV

Ou seja para classificar um ponto em relaccedilatildeo a um modelo verificamos o

produto interno entre a normal em p (surfel mais proacuteximo a x) e o vetor (x - p)

se este produto interno for maior que zero x natildeo pertence ao volume V e seraacute

classificado como fora senatildeo seraacute classificado como dentro De maneira

ainda mais informal se a normal em p apontar para a direccedilatildeo oposta a x x seraacute

classificado como dentro se apontar para x x seraacute classificado como fora

A Figura 7 mostra a Regra 2

Operaccedilotildees Booleanas com Pontos 32

Figura 7 Para classificar o ponto x encontra-se o surfel p (com normal np) mais proacuteximo

a x Se o produto interno entre np e (x ndash p) for maior que zero entatildeo x eacute classificado como

fora senatildeo seraacute classificado como dentro

A validade da Regra 2 eacute discutida na Seccedilatildeo 44 Uma das restriccedilotildees

teoacutericas para garantir-lhe a validade eacute que a superfiacutecie seja suave

Cada um dos dois meacutetodos daacute um tratamento diferente para o uso desta

regra Pauly usa a regra diretamente encontrando o surfel mais proacuteximo a um

ponto e classificando este ponto a partir deste surfel Ele utiliza tambeacutem a

representaccedilatildeo impliacutecita MLS (Moving Least Squares [18]) para casos em que a

Regra 2 poderia falhar e para tratamento de interseccedilotildees [3] Seu meacutetodo vale

para modelos soacutelidos ou natildeo soacutelidos O meacutetodo de Adams e Dutreacute [2] utiliza

octrees [1] criando uma classificaccedilatildeo dos noacutes da octree a partir desta Regra 2

Os pontos satildeo entatildeo classificados de acordo com o noacute da octree que o conteacutem

Este segundo meacutetodo aplica-se somente a modelos soacutelidos Os dois meacutetodos

seratildeo descritos em detalhes nas seccedilotildees abaixo

Como um surfel eacute considerado um disco podemos dizer que surfels de

dois modelos diferentes podem se intersectar A interseccedilatildeo destes dois surfels

corresponde agrave interseccedilatildeo destes dois discos Estes surfels geram problemas

para visualizaccedilatildeo se forem acrescentados ao resultado sem um tratamento

especiacutefico apresentaratildeo artefatos natildeo desejaacuteveis na renderizaccedilatildeo do modelo

resultado (Figura 8) se natildeo forem acrescentados ao resultado deixaratildeo buracos

no modelo

Operaccedilotildees Booleanas com Pontos 33

Figura 8 [2] -Interseccedilatildeo de duas esferas agrave esquerda sem nenhum tratamento de interseccedilatildeo agrave direita apoacutes o tratamento de interseccedilatildeo

Aleacutem disso nem sempre esta interseccedilatildeo forma uma superfiacutecie suave

Esta interseccedilatildeo pode formar uma aresta viva (seccedilatildeo 4223) gerando

problemas tambeacutem para o uso da Regra 2 que eacute vaacutelida apenas para superfiacutecies

suaves Eacute necessaacuterio entatildeo fazer um tratamento desta superfiacutecie de interseccedilatildeo

(formada por surfels originados de diferentes modelos) O tratamento de cada

um dos meacutetodos para este caso seraacute tambeacutem abaixo apresentado

42 Meacutetodo de Adams e Dutreacute

O meacutetodo aplica-se somente a modelos soacutelidos Para determinaccedilatildeo dos

elementos da aqui chamada Regra 1 (seccedilatildeo 41) este meacutetodo utiliza uma octree

[1] que subdivide o espaccedilo do modelo em trecircs fora dentro ou no contorno do

modelo Estes espaccedilos satildeo determinados pela classificaccedilatildeo dos noacutes da octree a

partir da Regra 2 Tambeacutem eacute usado o meacutetodo TINN - Triangle Inequality Nearest

Neighbour [19] - para otimizar a pesquisa dentro do noacute A seguir descrevemos o

modelo usado neste meacutetodo apresentando os dados associados aos pontos o

tipo de distribuiccedilatildeo e o algoritmo que realiza as operaccedilotildees

421 Modelo por Pontos em Adams e Dutreacute

Os surfels neste meacutetodo contecircm as seguintes informaccedilotildees posiccedilatildeo do

surfel xs orientaccedilatildeo do surfel ns e raio de alcance do surfel rs O surfel pode ser

pensado como um disco ortogonal a ns com centro xs e raio rs O raio eacute

escolhido de tal forma que a projeccedilatildeo dos discos no plano da imagem se

sobreponham

Operaccedilotildees Booleanas com Pontos 34

Os objetos representados satildeo soacutelidos A distribuiccedilatildeo dos surfels eacute

uniforme embora o algoritmo natildeo exija esta condiccedilatildeo Para cada soacutelido eacute

definido um rmax = Max rs o raio de alcance do maior surfel pertencente agrave

superfiacutecie do soacutelido Como o raio eacute escolhido de tal forma que a projeccedilatildeo dos

discos no plano da imagem se sobreponham o controle da amostragem eacute

entatildeo ligado agrave renderizaccedilatildeo

422 Algoritmo de Operaccedilotildees Booleanas

Utilizando objetos modelados da forma descrita acima o meacutetodo realiza

operaccedilotildees de uniatildeo interseccedilatildeo e diferenccedila com modelos soacutelidos Supondo dois

modelos soacutelidos S1 e S2 O algoritmo pode ser dividido nas seguintes etapas

Criaccedilatildeo de uma octree para cada modelo Teste Dentro-Fora Tratamento da

interseccedilatildeo Estas etapas satildeo apresentadas nas proacuteximas seccedilotildees

4221 Criaccedilatildeo de uma octree para cada modelo

Eacute criada uma octree [1] para cada modelo A criaccedilatildeo de uma octree eacute feita

da seguinte forma

Gera-se a ldquoCaixa envolventerdquo caixa alinhada com os eixos que conteacutem

todo o modelo A ldquoCaixa envolventerdquo corresponde ao noacute raiz da octree Este noacute

conteacutem inicialmente todos os surfels do modelo Em seguida o noacute raiz eacute

dividido em oito noacutes filhos Os surfels satildeo distribuiacutedos entre estes oito noacutes Cada

um deles caso contenha surfels eacute dividido novamente em 8 filhos e seus surfels

satildeo redistribuiacutedos entre eles Este processo eacute repetido recursivamente enquanto

o nuacutemero de surfels do noacute for maior que zero ou ateacute uma profundidade maacutexima

preacute-definida da octree ser alcanccedilada

Cada noacute da octree deve ser classificado O objetivo desta classificaccedilatildeo eacute

determinar que parte da octree estaacute dentro do modelo e que parte estaacute fora Os

noacutes da octree satildeo entatildeo classificados como ldquodentrordquo ldquoforardquo e ldquocontornordquo

Podemos ilustrar esta classificaccedilatildeo em 2D a Figura 9 mostra uma quadtree

classificada

Operaccedilotildees Booleanas com Pontos 35

Figura 9-Um objeto representado por pontos com suas normais e sua quadtree correspondente classificada os noacutes cinza claro estatildeo dentro do modelo noacutes cinza mais escuro estatildeo fora do modelo e noacutes com cinza intermediaacuterio satildeo noacutes cheios noacutes que conteacutem pontos

O noacutes que conteacutem surfels satildeo classificados como ldquocontornordquo Para

classificar um noacute vazio existem trecircs casos

o noacute vazio tem apenas um vizinho-irmatildeo natildeo vazio

o noacute vazio tem mais de um vizinho-irmatildeo natildeo vazio

o noacute vazio natildeo tem vizinhos-irmatildeos natildeo vazios

No primeiro caso o noacute vazio eacute classificado pelo seu vizinho natildeo vazio No

segundo caso considera-se qualquer um dos vizinhos natildeo vazios No terceiro

caso classifica-se primeiro os noacutes vizinhos e eacute dada a mesma classificaccedilatildeo para

o noacute vazio Como cada noacute natildeo folha de uma octree tem pelo menos um noacute filho

natildeo vazio sempre pode ser feita a classificaccedilatildeo dos noacutes vazios A classificaccedilatildeo

eacute feita da seguinte forma dentre os surfels do vizinho-irmatildeo escolhido encontra-

se o surfel mais proacuteximo ao noacute a ser classificado Se a normal deste surfel

aponta para o noacute vazio a ser classificado entatildeo ele eacute classificado como ldquoforardquo

Se a normal aponta no sentido contraacuterio entatildeo ele eacute classificado como ldquodentrordquo

De maneira mais formal sejam cv e cc coordenadas dos centros do noacute vazio e

do noacute contorno respectivamente Seja s o surfel mais proacuteximo ao noacute vazio e ns

a normal em s Se ( cv - cc )٠ ns gt 0 ( produto interno entre a normal em s e o

vetor cv - cc for maior que zero ) o noacute vazio seraacute classificado como ldquoforardquo

Senatildeo seraacute classificado como ldquodentrordquo

Em geral os noacutes ldquocontornordquo satildeo subdivididos em trecircs partes uma que estaacute

fora do modelo uma que estaacute dentro do modelo e uma terceira que conteacutem os

surfels Esta subdivisatildeo eacute feita por meio da criaccedilatildeo de dois planos paralelos que

Operaccedilotildees Booleanas com Pontos 36

dividem o noacute Para determinar estes planos calcula-se o vetor nm igual agrave

meacutedia das normais dos surfels do noacute nm = sum ns sum ns onde ns eacute a normal de

cada surfel do noacute

Em seguida encontra-se o surfel com maior produto interno entre a sua

normal e a normal meacutedia d1=Max(nm ٠ ns) Este surfel juntamente com a normal

meacutedia define um dos planos Encontra-se tambeacutem o surfel com menor produto

interno entre a sua normal e a normal meacutedia d2=Min(nm ٠ ns) Este surfel

juntamente com a normal meacutedia define o outro plano A Figura 10 mostra a

divisatildeo de um noacute de uma quadtree nas trecircs partes dentro do modelo fora do

modelo e no ldquocontornordquo

Esta subdivisatildeo aplica-se apenas a noacutes que conteacutem surfels cujas direccedilotildees

natildeo variem em mais de 90 graus Caso isso ocorra ele natildeo seraacute subdividido Ou

seja se um noacute possuir dois vetores normais (de dois surfels diferentes) que

formem um acircngulo maior que 90 graus ele natildeo seraacute subdividido

Figura 10 [2] -Divisatildeo de noacute de contorno a parte agrave esquerda estaacute fora do modelo a parte agrave direita estaacute dentro do modelo e a faixa intermediaacuteria conteacutem os surfels

4222 Teste Dentro-Fora

O Teste Dentro-Fora faz a classificaccedilatildeo dos surfels de um modelo como

ldquodentrordquo ou ldquoforardquo de outro modelo Portanto aplicaremos este mesmo teste duas

vezes uma para o modelo S1 em relaccedilatildeo ao modelo S2 e outra para S2 em

relaccedilatildeo a S1 Vamos mostrar o teste Dentro-Fora para o caso da classificaccedilatildeo

dos surfels do modelo S1 em relaccedilatildeo a S2

Operaccedilotildees Booleanas com Pontos 37

No item anterior foram criadas duas octrees uma para o modelo S1 e

outra para o modelo S2 Chamemos de A e B as octrees de S1 e S2

respectivamente Para classificar S1 em relaccedilatildeo a S2 inicialmente eacute feita uma

avaliaccedilatildeo da posiccedilatildeo de A em relaccedilatildeo a B A e B podem estar nas seguintes

situaccedilotildees

- A natildeo intersecta B

- A intersecta apenas noacutes ldquoforardquo de B

- A intersecta apenas noacutes ldquodentrordquo de B

- A intersecta noacutes ldquoforardquo e noacutes ldquodentrordquo de B

Para testar estas situaccedilotildees os noacutes satildeo aumentados de rmax o raio do

maior surfel do modelo soacutelido Isto eacute feito para compensar o fato de que o surfel

natildeo eacute apenas um ponto mas sim considerado como um disco

No primeiro e no segundo caso todos os surfels de A satildeo classificados

como ldquoforardquo No terceiro caso todos os surfels de A satildeo classificados como

ldquodentrordquo

No quarto caso temos que percorrer a octree A Comeccedilando pelo noacute raiz

percorre-se os filhos deste noacute Para cada filho os quatro testes acima satildeo feitos

Se o noacute filho encontra-se em um dos trecircs primeiros casos a classificaccedilatildeo eacute dada

como foi citada acima Se um filho estaacute no quarto caso e natildeo eacute um noacute folha

repete-se recursivamente o mesmo procedimento para seus filhos ateacute encontrar-

se um noacute folha Para um noacute que estaacute no quarto caso e eacute folha percorre-se a lista

de surfels que este noacute conteacutem classificando cada um destes surfels Seja sa um

surfel desta lista Para este caso percorre-se a octree B para classificar sa

Primeiramente encontramos o noacute de B que conteacutem sa Se este noacute de B foi

dividido testa-se de acordo com esta divisatildeo do noacute se o surfel sa estaacute na parte

do noacute que estaacute dentro do modelo ele eacute classificado como ldquodentrordquo se sa estaacute na

parte que estaacute fora do modelo ele eacute classificado como ldquoforardquo se sa estaacute na parte

intermediaacuteria ou se o noacute de B natildeo foi subdividido em planos encontra-se sb que

eacute o surfel pertencente a este noacute de B que estaacute mais proacuteximo de sa sa seraacute

entatildeo classificado de acordo com sb Se ( sa - sb )٠ nb gt 0 sa eacute classificado

como ldquoforardquo senatildeo eacute classificado como ldquodentrordquo Se os discos de sb e sa se

intersectam sa eacute marcado como interseccedilatildeo Para encontrar sb o algoritmo

implementa o meacutetodo TINN ndash Triangle Inequality Nearest Neighbour [19]

Operaccedilotildees Booleanas com Pontos 38

4223 Tratamento da interseccedilatildeo

Os surfels de A que intersectam surfels de B satildeo classificados como

ldquointerseccedilatildeordquo Se eles natildeo forem incluiacutedos no modelo resultado o soacutelido resultado

teraacute buracos Se eles forem incluiacutedos sem algum tratamento eles natildeo

representaratildeo adequadamente a regiatildeo Em geral o surfel sa (um surfel

ldquointerseccedilatildeordquo de A) eacute dividido em dois pelo plano que conteacutem o surfel sb (surfel de

B que sa intersecta) uma parte que estaacute fora de B e outra que estaacute dentro de B

Dependendo da operaccedilatildeo que estaacute sendo realizada vamos querer manter uma

destas partes do surfel sa no modelo resultado Seja xa a posiccedilatildeo do surfel sa e o

surfel sa uma circunferecircncia de centro xa e raio ra igual ao raio de alcance de sa

O plano que conteacutem o surfel sb define uma corda desta circunferecircncia como

mostra a Figura 11 O surfel sa seraacute substituiacutedo por um surfel menor que

ultrapassa esta corda de uma distacircncia e definida pelo usuaacuterio Para cobrir

completamente a interseccedilatildeo seratildeo adicionados surfels menores que cruzam a

corda de interseccedilatildeo

Figura 11 -Interseccedilatildeo do surfel s e do plano que passa pelo surfel t o surfel mais proacuteximo a s O surfel s eacute substituiacutedo por trecircs surfels menores

Operaccedilotildees Booleanas com Pontos 39

O tratamento de interseccedilatildeo proposto por Adams e Dutreacute [2] natildeo soacute evita

os buracos mas tambeacutem cria uma forma de renderizaccedilatildeo de arestas vivas A

colocaccedilatildeo de vaacuterios pequenos surfels na regiatildeo da interseccedilatildeo permite esta

correta renderizaccedilatildeo das ldquoarestas vivasrdquo Desta forma o problema das arestas

vivas eacute resolvido na modelagem (Figura 12) A vantagem de se resolver o caso

na modelagem eacute que natildeo eacute necessaacuterio fazer um tratamento especial na

renderizaccedilatildeo para que mostre esta aresta viva Diferente do tratamento feito

em Pauly (seccedilatildeo 431) que resolve esta questatildeo em tempo de renderizaccedilatildeo

Aleacutem disso o tratamento resolve alguns casos onde a Regra 2 poderia falhar

(veja em Validade da Regra 2-seccedilatildeo 44)

Figura 12 [2] -Agrave direita eacute mostrado o resultado do tratamento de interseccedilatildeo para o caso de Arestas Vivas do objeto agrave esquerda

43 Meacutetodo de Pauly

O meacutetodo aplica-se a objetos soacutelidos e natildeo soacutelidos Os modelos podem ser

obtidos a partir de diferentes entradas como nuvem de pontos irregulares ou por

meio de scanners 3D Cria um modelo hiacutebrido destes objetos usa o modelo por

pontos juntamente com a representaccedilatildeo impliacutecita Moving Least Squares - MLS

[18] Realiza operaccedilotildees booleanas com pontos e utiliza adicionalmente MLS

para alguns casos de classificaccedilatildeo de surfels e no tratamento de interseccedilatildeo A

seguir apresentamos as caracteriacutesticas do modelo por pontos deste meacutetodo e o

algoritmo que realiza as operaccedilotildees

Operaccedilotildees Booleanas com Pontos 40

431 Modelo em Pauly

O modelo eacute uma estrutura hiacutebrida de pontos com a representaccedilatildeo impliacutecita

Moving Least Squares - MLS [18] Esta estrutura eacute usada para fazer operaccedilotildees

booleanas e tambeacutem operaccedilotildees de free-form (natildeo abordadas nesta

dissertaccedilatildeo) Para operaccedilotildees booleanas a representaccedilatildeo MLS permite que a

curva de interseccedilatildeo entre os modelos seja reconstruiacuteda e surfels sejam

colocados nesta curva e em alguns casos de classificaccedilatildeo de surfels mostrados

na seccedilatildeo 432 Para este modelo natildeo existem restriccedilotildees quanto agrave forma do

objeto

Os surfels contecircm informaccedilotildees sobre sua posiccedilatildeo e sua normal Aleacutem

disso surfels podem conter informaccedilotildees adicionais como textura cor

propriedades de materiais

A distribuiccedilatildeo dos surfels eacute natildeo-uniforme e a amostragem eacute

aproximadamente adequada (Veja seccedilatildeo 44)

432 Algoritmo de Operaccedilotildees Booleanas

O algoritmo classifica surfels de um modelo como ldquodentrordquo ou ldquoforardquo de

outro modelo Antes de colocarmos como eacute feita esta classificaccedilatildeo devemos

acrescentar que Pauly estende esta classificaccedilatildeo para modelos que natildeo satildeo

soacutelidos Ou seja mesmo um modelo natildeo soacutelido divide o espaccedilo da cena (espaccedilo

em que se encontra o modelo) em dois sub-espaccedilos dentro ou fora do modelo

Pauly faz esta subdivisatildeo da seguinte forma

Como a superfiacutecie que determina o modelo eacute orientada (conteacutem vetores

normais agrave superfiacutecie que apontam para ldquoforardquo do modelo) Pauly considera que

um modelo natildeo soacutelido divide o espaccedilo em dois sub-espaccedilos um ldquoforardquo do

modelo (os vetores normais apontam para este sub-espaccedilo) e um que estaacute

ldquodentrordquo do modelo (os vetores normais apontam para direccedilatildeo oposta a este sub-

espaccedilo) Por exemplo um plano eacute representado como um conjunto de surfels

contidos num determinado espaccedilo geomeacutetrico plano π Cada surfel conteacutem um

vetor normal direcionado Este modelo divide entatildeo o espaccedilo em dois sub-

espaccedilos o sub-espaccedilo que eacute apontado por estes surfels (considerado ldquoforardquo do

modelo) e o sub-espaccedilo que estaacute na direccedilatildeo oposta (considerado ldquodentrordquo do

modelo) Desta forma ele aplica as classificaccedilotildees de ldquodentrordquo e ldquoforardquo de um

modelo tambeacutem a modelos natildeo soacutelidos A partir desta consideraccedilatildeo as

Operaccedilotildees Booleanas com Pontos 41

operaccedilotildees booleanas satildeo realizadas com os modelos natildeo soacutelidos da mesma

forma que com os modelos soacutelidos

Para determinar esta classificaccedilatildeo (dentro ou fora do modelo) Pauly utiliza

a Regra 2 Para pesquisa do surfel mais proacuteximo o meacutetodo usa a estrutura Kd-

tree [16] e tambeacutem o algoritmo ANN [16] No entanto o meacutetodo apresenta uma

restriccedilatildeo da Regra 2 ela soacute deve ser usada para classificaccedilotildees de pontos x se

a distacircncia x-p for maior que o espaccedilamento da amostragem local ηp em p

Este espaccedilamento da amostragem local ηp em p eacute um caacutelculo aproximado da

distacircncia meacutedia entre os surfels vizinhos a p Se x estaacute muito proacuteximo agrave

superfiacutecie a classificaccedilatildeo pode falhar Neste caso ele calcula o ponto exato de

S mais proacuteximo a x usando a projeccedilatildeo MLS (ldquoMoving Least Squaresrdquo)

Por questotildees de melhoria de desempenho utiliza-se o fato de que sendo

Ωp (x) a classificaccedilatildeo do ponto x em relaccedilatildeo agrave amostragem P tem-se que Ωp (x)

= Ωp (xrsquo) para todos os pontos de xrsquo que estatildeo dentro da esfera de centro x e

raio igual a x-p - ηp (onde p eacute o surfel mais proacuteximo e ηp eacute o espaccedilamento

local da amostragem em p acima citado) Ou seja sendo x um ponto qualquer p

o surfel mais proacuteximo a x ηp eacute o espaccedilamento local da amostragem em p se

desenharmos uma esfera com centro x e raio igual a x-p - ηp temos que

todos os pontos xrsquo que estatildeo dentro da esfera teratildeo a mesma classificaccedilatildeo de x

Desta forma o nuacutemero de vezes que a classificaccedilatildeo eacute feita (pesquisando-se o

surfel mais proacuteximo ao ponto e usando a Regra 2) diminui em ateacute 90 Assim

em geral a classificaccedilatildeo de um surfel eacute obtida a partir do seu surfel vizinho

Dados

S1 a superfiacutecie MLS de contorno que define o modelo A

S2 a superfiacutecie MLS de contorno que define o modelo B

P1 o conjunto de surfels que representa a superfiacutecie S1

P2 o conjunto de surfels que representa a superfiacutecie S2

Ωp1 (x) a classificaccedilatildeo do ponto p em relaccedilatildeo a uma amostragem P1

Q1 o subconjunto de P1 que vai compor o resultado

Ωp2 (x) a classificaccedilatildeo do ponto p em relaccedilatildeo a uma amostragem P2

Q2 o subconjunto de P2 que vai compor o resultado

Os conjuntos Q1 e Q2 satildeo obtidos por meio da Tabela 1 mostrada abaixo

Operaccedilotildees Booleanas com Pontos 42

Tabela 1 Classificaccedilatildeo para operaccedilotildees booleanas

Para o tratamento de interseccedilatildeo neste meacutetodo satildeo computados pontos

que caem exatamente na curva de interseccedilatildeo e estes satildeo acrescentados ao

modelo resultado Estes pontos satildeo determinados de forma que a densidade da

amostragem vai crescendo agrave medida que os surfels se aproximam da curva de

interseccedilatildeo e convergem para este ponto de interseccedilatildeo como mostra a Figura

13

(a) (b) (c)

Figura 13 - Os novos surfels satildeo colocados exatamente na curva de interseccedilatildeo

e convergem para o ponto de interseccedilatildeo

A Figura 14 mostra o processo de encontrar os surfels que caem nesta

curva de interseccedilatildeo Inicialmente satildeo encontrados todos os pontos de Q1 e Q2

que estatildeo proacuteximos agrave curva de interseccedilatildeo por meio da funccedilatildeo de distacircncia do

operador de projeccedilatildeo MLS Em seguida procura-se todos os pares mais

proacuteximos (q1 є Q1 q2 є Q2 ) e computa-se o ponto q na curva de interseccedilatildeo da

seguinte forma (veja a Figura 14)Seja r o ponto na linha de interseccedilatildeo dos dois

planos tangentes em q1 e q2 e que estaacute mais proacuteximo a estes dois pontos isto eacute

que minimiza a distacircncia ||r-q1|| + ||r-q2|| r eacute a primeira aproximaccedilatildeo de q e agora

pode ser projetado sobre S1 e S2 para obter dois novos pontos de partida q1rsquo e q2

rsquo

para a iteraccedilatildeo Este procedimento pode ser repetido iterativamente ateacute que os

pontos q1 e q2 convirjam ao ponto q na curva de interseccedilatildeo Normalmente este

processo requer menos de trecircs iteraccedilotildees

Operaccedilotildees Booleanas com Pontos 43

(a) (b)

(c)

Figura 14 (a) Suponhamos a reta que eacute a interseccedilatildeo do plano tangente a S1 em q1 e o

plano tangente a S2 em q2 O ponto r eacute o ponto desta reta que estaacute mais proacuteximo a q1 e

q2 (b) r eacute projetado sobre S1 e S2 obtendo-se q1acute e q2acute dois novos pontos de partida

para nova iteraccedilatildeo (c) A nova iteraccedilatildeo gera r que eacute uma aproximaccedilatildeo melhor de q

Pauly faz o tratamento de arestas vivas em tempo de renderizaccedilatildeo Ele

faz uma alteraccedilatildeo no renderizador Marca os surfels de interseccedilatildeo e ao

renderizaacute-los satildeo cortados para gerar uma aresta viva

44 Validade da Regra 2

Os dois meacutetodos analisados nesta dissertaccedilatildeo utilizam a seguinte regra

para a classificaccedilatildeo de um surfel

Regra 2 dado um volume V determinado por uma superfiacutecie de contorno

S uma amostragem P da superfiacutecie S um ponto x qualquer um ponto p є P que

eacute a amostra mais proacutexima a x um vetor ny normal a S em p e orientado para

fora de S temos que (x ndash p) np gt 0 x notinV

Em [16] eacute colocado que esta regra eacute tirada da seguinte propriedade da

geometria diferencial (aqui chamada Propriedade 1)

Propriedade 1 Dado um volume V determinado por uma superfiacutecie de

contorno S contiacutenua e duplamente diferenciaacutevel um ponto x qualquer um ponto

Operaccedilotildees Booleanas com Pontos 44

y є S que eacute o ponto de S mais proacuteximo a x um vetor ny normal a S em y e

orientado para fora de S temos que (x ndash y) ny gt 0 x notinV

A Figura 15 ilustra esta propriedade

Figura 15 Para verificar se o ponto x estaacute fora de um contorno C encontra-se o ponto y

de C Se o produto interno entre a normal em y e o vetor que liga y a x for maior que

zero entatildeo x estaacute fora de C senatildeo estaacute dentro de C

Pauly assume que tendo uma amostragem P da superfiacutecie S podemos

usar a Propriedade 1 substituindo y por p o surfel mais proacuteximo ao ponto x (x ndash

p) np gt 0 x notinV (Regra 2) Esta amostragem P em seu trabalho eacute

(aproximadamente) uma ldquoamostragem adequadardquo Tambeacutem seu tratamento de

interseccedilatildeo cria uma aproximaccedilatildeo dela (seccedilatildeo 43) Empiricamente a

ldquodiscretizaccedilatildeo da propriedaderdquo eacute vaacutelida a partir desta suposiccedilatildeo Mas isso natildeo foi

demonstrado teoricamente em seu trabalho

Pauly coloca em [16] que natildeo existe ainda uma teoria matemaacutetica rigorosa

de amostragem anaacuteloga a teoria de Fourier para superfiacutecies discretas

A melhor aproximaccedilatildeo teoacuterica para esta aacuterea eacute o uso do Eixo Medial que

foi colocado em [10] Vamos descrever este trabalho brevemente nesta seccedilatildeo

Este trabalho apresenta um algoritmo de reconstruccedilatildeo de superfiacutecie que parte de

uma amostragem adequada (abaixo definida) de pontos e obteacutem uma malha

que eacute topologicamente equivalente agrave superfiacutecie do objeto e agrave medida que a

densidade da amostragem cresce a saiacuteda converge para esta superfiacutecie

Para definir amostragem adequada o trabalho parte do conceito de Eixo

Medial

Operaccedilotildees Booleanas com Pontos 45

ldquoEixo Medialrdquo de uma superfiacutecie 2D posicionada no R3 eacute o conjunto

(fechado) de pontos pi para os quais buscando-se o ponto da superfiacutecie que

estaacute mais proacuteximo a pi mais de um ponto pertencentes a esta superfiacutecie satildeo

encontrados A Figura 16 abaixo ilustra o Eixo Medial em 2D

Figura 16 [10] As curvas de cor mais clara satildeo o Eixo Medial da curva em preto

Em duas dimensotildees os veacutertices de Voronoi de uma amostragem densa

aproximam o ldquoEixo Medialrdquo da amostragem (mas esta propriedade natildeo se

estende a 3D) A Figura 17 mostra o Eixo Medial em 3D

Figura 17 [10] Em 3D geralmente o Eixo Medial eacute uma superfiacutecie 2D (em cor mais

clara) Aqui o quadrado eacute o Eixo Medial da superfiacutecie transparente que o contorna

Podemos definir agora a amostragem adequada da seguinte forma

Supondo uma superfiacutecie suave que quer dizer uma 2-manifold duplamente

diferenciaacutevel posicionada no R3 uma ldquoamostragem adequadardquo desta superfiacutecie eacute

aquela na qual a densidade da amostragem eacute (pelo menos) inversamente

proporcional agrave distacircncia ao ldquoEixo Medialrdquo A Figura 18 mostra uma amostragem

adequada

Operaccedilotildees Booleanas com Pontos 46

Figura 18 [10] A figura mostra o diagrama de Voronoi de uma amostragem de pontos S

Da mesma forma que o a amostragem aproxima a curva os veacutertices de Voronoi

aproximam o Eixo Medial

Na praacutetica na reconstruccedilatildeo da superfiacutecie uma aproximaccedilatildeo deste ldquoEixo

Medialrdquo eacute computada (devido agrave dificuldade de computaacute-lo exatamente e em

alguns casos ateacute impossibilidade)

Melhorias Propostas 47

5 Melhorias Propostas

No capiacutetulo 4 apresentamos dois meacutetodos que realizam operaccedilotildees

booleanas em modelos por pontos o meacutetodo de Adams e Dutreacute [2] e o meacutetodo

de Pauly[3] Para esta dissertaccedilatildeo usamos o meacutetodo de Adams e Dutreacute [2] e

propomos as seguintes melhorias

- Alteramos o momento em que eacute feita a classificaccedilatildeo da octree Fazemos

esta classificaccedilatildeo durante a sua criaccedilatildeo Os noacutes filhos de um noacute pai P qualquer

satildeo classificados logo apoacutes a criaccedilatildeo de todos estes filhos de P

independentemente do restante da octree ter sido criada Isso pode ser feito

porque a octree eacute construiacuteda na ordem raiz-esquerda-direita (preorder

traversal) e portanto apoacutes todos os filhos de um noacute pai serem criados a parte

necessaacuteria da octree para a classificaccedilatildeo destes filhos jaacute estaacute criada

- A classificaccedilatildeo da octree eacute otimizada classificando-se os cantos dos seus

noacutes como dentro ou fora do modelo Na classificaccedilatildeo de um noacute n1 a partir de seu

vizinho n2 se os cantos que satildeo comuns a n1 e n2 tiverem a mesma

classificaccedilatildeo esta seraacute dada ao noacute Assim diminuiacutemos o nuacutemero de pesquisas

pelo surfel mais proacuteximo que eacute a parte criacutetica da classificaccedilatildeo dos noacutes da octree

em termos de tempo de processamento

- Acrescentamos um valor miacutenimo (maior que zero) para o nuacutemero de

surfels contidos em um noacute que eacute uma das condiccedilotildees de parada na criaccedilatildeo da

octree Verificamos que desta forma diminui-se a chance de erro na classificaccedilatildeo

de partes criacuteticas como ldquoarestas vivasrdquo

Uma comparaccedilatildeo entre a nossa implementaccedilatildeo e a de Pauly tambeacutem seraacute

feita no capiacutetulo 6

51 Descriccedilatildeo do algoritmo

O algoritmo implementado para esta dissertaccedilatildeo baseado no meacutetodo de

Adams e Dutreacute [2] pode ser dividido nas seguintes partes Criaccedilatildeo e

classificaccedilatildeo de uma octree para cada modelo Teste DentroFora Criaccedilatildeo do

modelo resultado Natildeo foi implementado tratamento especial algum de

interseccedilatildeo para o nosso plugin As proacuteximas seccedilotildees apresentam estas partes

Melhorias Propostas 48

511 Criaccedilatildeo e classificaccedilatildeo de uma octree para cada modelo

As ideacuteias do algoritmo satildeo aqui ilustradas em 2D mas a extensatildeo delas

para 3D eacute feita facilmente

Para cada modelo a octree eacute criada e classificada da seguinte forma

Figura 19-Quadtree classificada Os noacutes mais escuros estatildeo fora do modelo os mais claros dentro e os em tom intermediaacuterio satildeo noacutes de contorno

Gera-se uma ldquocaixa envolventerdquo do modelo contendo todos os surfels e

cria-se o noacute raiz da octree que corresponde a esta ldquocaixa envolventerdquo Este noacute

raiz eacute subdividido em oito filhos e seus surfels satildeo distribuiacutedos entre eles Ao

inveacutes de testarmos os valores de xy e z para cada surfel a fim de determinar

para qual filho ele iraacute utilizamos listas auxiliares Primeiro os surfels satildeo

subdivididos em dois grupos pelos valores de x e armazenados em uma lista

auxiliar Em seguida cada uma das listas eacute subdividida pelo valor de y e as

quatro listas obtidas seratildeo subdivididas pelo valor de z Ao final teremos 8 listas

de surfels cada uma delas pertencente a um filho

Cada noacute seraacute entatildeo novamente subdividido enquanto contiver um nuacutemero

de surfels gt nmin (valor preacute-definido) ou enquanto a profundidade da aacutervore lt pmax

(valor preacute-definido) Na figura 19 pmax = 3 e nmin = 3

Melhorias Propostas 49

Figura 20-O noacute cheio eacute dividido em trecircs partes agrave esquerda a regiatildeo estaacute dentro do modelo agrave direita estaacute fora e entre as duas linhas que dividem o noacute estaacute a regiatildeo que conteacutem os surfels

Os noacutes cheios recebem um tratamento especial Eles satildeo subdivididos em

trecircs partes da seguinte forma uma que estaacute fora do modelo outra que estaacute

dentro e uma que conteacutem os surfels Esta subdivisatildeo eacute feita por meio da criaccedilatildeo

de dois planos paralelos que dividem o noacute Para determinar estes planos

calcula-se o vetor nm igual agrave meacutedia das normais dos surfels do noacute nm = sum ns

sum ns onde ns eacute a normal de cada surfel do noacute Em seguida encontra-se o

surfel com maior produto interno entre a sua normal e a normal meacutedia

d1=Max(nm ٠ ns) Este surfel juntamente com a normal meacutedia define um dos

planos Encontra-se tambeacutem o surfel com menor produto interno entre a sua

normal e a normal meacutedia d2=Min (nm ٠ ns) Este surfel juntamente com a normal

meacutedia define o outro plano (Figura 20) Se o noacute conteacutem surfels de superfiacutecies de

orientaccedilotildees diferentes ele natildeo seraacute subdividido ou seja os planos coincidiratildeo

com os planos que delimitam o proacuteprio noacute Este teste foi implementado da

seguinte forma escolhe-se um surfel qualquer do noacute Calcula-se o produto

interno entre a normal deste surfel e as outras normais dos outros surfels deste

noacute Se algum produto interno for menor que zero este noacute natildeo seraacute subdividido

Apoacutes a etapa de subdivisatildeo classificam-se os oito cantos deste noacute como

dentro ou fora do modelo por meio da classificaccedilatildeo de um ponto que

descreveremos na sub-seccedilatildeo 5111

Melhorias Propostas 50

a b

c d

Figura 21-O noacute a eacute classificado pelo noacute c o noacute d tambeacutem eacute classificado pelo noacute c a classificaccedilatildeo do noacute a eacute propagada para o noacute b

Jaacute os noacutes vazios da octree seratildeo classificados como ldquodentrordquo ou ldquoforardquo do

modelo da seguinte forma cada noacute folha vazio eacute classificado a partir de um de

seus irmatildeos vizinhos adjacentes Se ele possuir um vizinho adjacente cheio ele

seraacute classificado por este vizinho se natildeo possuir os vizinhos adjacentes seratildeo

classificados primeiro e ele teraacute esta mesma classificaccedilatildeo (Figura 21) Como tem

que existir sempre pelo menos um noacute cheio entre os filhos de um noacute pai entatildeo

sempre esta classificaccedilatildeo poderaacute ser feita Com a classificaccedilatildeo de todos os

filhos tem-se tambeacutem a classificaccedilatildeo dos cantos do noacute pai

Mf03c003fmx a b

Figura 22-Os cantos a e b do noacute cheio possuem a mesma classificaccedilatildeo fora do modelo Esta classificaccedilatildeo foi dada ao noacute vazio adjacente

Melhorias Propostas 51

Para classificar um noacute vazio por meio de um noacute cheio verificam-se os

cantos comuns destes dois noacutes se todos os cantos tiverem a mesma

classificaccedilatildeo esta seraacute dada ao noacute vazio (Figura 22) Se houver classificaccedilotildees

diferentes escolhe-se o surfel do noacute cheio mais proacuteximo ao noacute vazio faz-se o

produto interno entre a normal deste surfel e o vetor que liga o centro do noacute

cheio ao centro do noacute vazio (ou o vetor que liga o surfel ao centro do noacute vazio)

Se o produto interno for maior que zero o noacute eacute classificado como ldquoforardquo senatildeo eacute

classificado como ldquodentrordquo Para encontrar o surfel (pertencente a um noacute cheio)

mais proacuteximo ao noacute vazio existem dois casos

- O noacute cheio eacute folha percorre-se toda a lista de surfels e escolhe o surfel

mais proacuteximo da fronteira entre o noacute cheio e o vazio

- O noacute cheio natildeo eacute um noacute folha percorrem-se os filhos do noacute cheio ou seja

esta pesquisa eacute feita descendo na octree a partir do noacute cheio procurando o

surfel mais proacuteximo agrave fronteira do pai com o noacute vazio a ser classificado

Classificando o centro do noacute vazio todo o noacute deve ter a mesma

classificaccedilatildeo pois este noacute natildeo conteacutem surfels Para encontrar o surfel do noacute

vazio mais proacuteximo da fronteira entre o noacute cheio e o vazio basta testar o valor da

coordenada se a fronteira eacute o lado direito do noacute cheio escolhe-se o surfel com

maior coordenada lsquoxrsquo se eacute o lado esquerdo escolhe-se o surfel com menor lsquoxrsquo

se lado superior surfel com maior lsquoyrsquo etc A seguir apresentamos a classificaccedilatildeo

de um ponto qualquer pertencente a um noacute cheio

Figura 23- Quadtree classificada

Melhorias Propostas 52

5111 Classificaccedilatildeo de um ponto de um noacute cheio

Figura 24 [2] A normal n eacute a normal meacutedia e os surfels s1 e s2 juntamente com a normal

n definem as retas que dividem o noacute O ponto a estaacute fora do modelo e o ponto b estaacute

dentro do modelo

Para um ponto localizado dentro do noacute faz-se o seguinte teste se o noacute foi

dividido testa-se de acordo com a divisatildeo do noacute se o ponto estaacute na parte do noacute

que estaacute dentro do modelo ele eacute classificado como ldquodentrordquo se o ponto estaacute na

parte que estaacute fora do modelo ele eacute classificado como ldquoforardquo (Figura 24) se o

ponto estaacute na parte que conteacutem os surfels encontra-se o surfel s pertencente ao

noacute mais proacuteximo do ponto e o classifica de acordo com s seja ns a normal em s

cs a coordenada de s cp a coordenada do ponto Se (cp - cs )٠ ns gt 0 o ponto

seraacute classificado como ldquoforardquo Senatildeo seraacute classificado como ldquodentrordquo

Se o noacute natildeo foi dividido em planos esta classificaccedilatildeo a partir do surfel

mais proacuteximo seraacute sempre feita

512 Teste DentroFora

Melhorias Propostas 53

Figura 25-Duas circunferecircncias e suas quadtrees correspondentes

O Teste DentroFora classifica os surfels de um modelo como dentro ou

fora de outro modelo ou na sua interseccedilatildeo Este teste foi aqui implementado

exatamente como foi proposto em Adams e Dutreacute [2] exceto que natildeo foi

implementado o meacutetodo TINN - Triangle Inequality Nearest Neighbour [19]

Cada octree eacute percorrida verificando-se se os seus noacutes ou surfels estatildeo dentro

fora ou no contorno do outro modelo (Figura 25) Sejam A e B duas octrees e

queremos classificar a octree A As duas octrees (AB) satildeo percorridas partindo

da raiz

Para cada noacute de A existem quatro casos (Figura 26) Para testar estas

situaccedilotildees os boxes dos noacutes satildeo aumentados de rmax o raio do maior surfel do

modelo Isto eacute feito para compensar o fato de que o surfel natildeo eacute apenas um

ponto mas sim considerado como um disco

Os quatro casos satildeo

Se o noacute de A natildeo intersecta B entatildeo todos os surfels deste noacute satildeo

classificados como fora

Se o noacute de A intersecta apenas noacutes de B que estatildeo fora do modelo

todos os surfels deste noacute satildeo fora

Se o noacute de A intersecta apenas noacutes de B que estatildeo dentro do modelo

todos os surfels deste noacute satildeo dentro

Melhorias Propostas 54

Se o noacute de A intersecta noacutes de B que estatildeo dentro e tambeacutem noacutes de B

que estatildeo fora testa-se se este noacute de A eacute ou natildeo folha Se natildeo for folha

percorre-se os filhos deste noacute de A ateacute encontrar um noacute folha cheio que

intersecta B Para cada surfel sa deste noacute folha de A encontra-se o surfel de B

mais proacuteximo e classifica-se a coordenada de sa da forma apresentada na seccedilatildeo

5111 Seja sb o surfel usado na classificaccedilatildeo de sa Se os discos de sb e sa

se intersectam sa eacute classificado como ldquointerseccedilatildeordquo

(a) (b)

(c) (d)

Figura 26- a modelos natildeo se intersectam b modelo intersecta noacutes fora c modelo intersecta apenas noacutes dentro d modelo intersecta noacutes dentro e noacutes fora

513 Criaccedilatildeo do modelo resultado

Um novo modelo eacute criado com os seguintes surfels (de acordo com a

operaccedilatildeo booleana escolhida pelo usuaacuterio - veja Regra 1 da seccedilatildeo 41)

Uniatildeo - surfels de A que estatildeo fora de B + surfels de B que estatildeo fora de A

Melhorias Propostas 55

Interseccedilatildeo - surfels de A que estatildeo dentro de B + surfels de B que estatildeo

dentro de A

Diferenccedila A-B - surfels de A que estatildeo fora de B + surfels de B que estatildeo

dentro de A (com orientaccedilatildeo invertida)

Como natildeo foi implementado tratamento especial algum de interseccedilatildeo para

o nosso plugin os surfels que se intersectam satildeo mantidos no modelo resultado

final sem modificaccedilotildees

Descrito o algoritmo vejamos a seguir a sua implementaccedilatildeo

52 Implementaccedilatildeo

Este algoritmo foi implementado na forma de um plugin para o software

PointShop 3D [11] Este plugin foi desenvolvido na linguagem C e no sistema

operacional Windows

A escolha deste tipo de implementaccedilatildeo permitiu-nos usar o software

PointShop para os testes do algoritmo Estes testes foram feitos com os modelos

disponibilizados para o PointShop [11] Nesta seccedilatildeo apresentaremos o software

PointShop e as principais estruturas de dados usadas em nosso plugin

O Pointshop eacute um software aberto com seu coacutedigo disponiacutevel e preparado

para trabalhar com plugins Eacute um software de ediccedilatildeo de modelos 3D por pontos

Ele permite aleacutem de visualizar o modelo alterar as suas caracteriacutesticas como

cor brilho e fazer mapeamento de textura iluminaccedilatildeo filtragem (Figura 27)

Melhorias Propostas 56

Figura 27-Software PointShop 3D com dois modelos carregados na sua cena

Aleacutem disso pode-se criar uma cena com vaacuterios modelos e visualizaacute-los de

qualquer ponto de vista Implementa o virtual trackball para rotacionaacute-los e

transladaacute-los Usa uma iluminaccedilatildeo simples direcional A sua arquitetura eacute

extensiacutevel permite que o usuaacuterio adicione seus proacuteprios componentes ao

sistema Possui trecircs tipos de componentes

ldquoToolsrdquo fornece funcionalidades para ediccedilatildeo interativa de superfiacutecie Satildeo

disponibilizados na ldquotoolbarrdquo

Plugins fornece funcionalidades para processar em um soacute passo

modelos ou partes deles selecionadas Satildeo disponibilizados no menu ldquoPluginsrdquo

Renderes fornece funcionalidades de display para os modelos

Para esta dissertaccedilatildeo foi escolhida a construccedilatildeo do componente Plugin

por adequar-se agrave nossa proposta e ser a mais simples de ser construiacuteda O

PointShop [11] jaacute conteacutem uma tool que executa operaccedilotildees booleanas e

deformaccedilatildeo free-form sobre os modelos carregados na cena usando o meacutetodo

de Pauly [3] apresentado no capiacutetulo 4 O nosso plugin Operaccedilotildees Booleanas

implementa o algoritmo descrito na seccedilatildeo anterior baseado na proposta de

Melhorias Propostas 57

Adams e Dutreacute [2] Uma comparaccedilatildeo entre o nosso plugin e a tool de Pauly [3] eacute

feita no capiacutetulo 6

Figura 28-Menu do PointShop com o plugin e as opccedilotildees para operaccedilotildees booleanas

Para se executar o plugin o usuaacuterio precisa carregar dois modelos na

cena do PointShop acionar o plugin informando a operaccedilatildeo que seraacute executada

O plugin executaraacute o algoritmo acima proposto e carregaraacute o resultado na cena

do Pointshop retirando os modelos anteriores

521 Estruturas de Dados

Como vimos o software PointShop [11] trabalha com modelos por pontos

Um modelo deste software descrito na seccedilatildeo 42 conteacutem todas as informaccedilotildees

que o algoritmo proposto em Bart [2] necessita Abaixo relacionamos as

Melhorias Propostas 58

principais estruturas de dados do PointShop usadas no plugin e as principais

estruturas de dados do nosso plugin

As principais classes do PointShop usadas no plugin satildeo

Classe Scene

Classe Objects

Classe SurfelColections

Classe Surfel

Classe StatusBar

Classe Transformer

A hierarquia de dados eacute a seguinte a Scene conteacutem vaacuterios Objects os

quais conteacutem SurfelColections Cada SurfelColections conteacutem Surfels que

suportam uma ou mais propriedades tais como cor difusa cor especular

Classe Scene Classe que representa uma cena que conteacutem modelos

Classe Object Um modelo eacute representado pela classe Object que

conteacutem uma SurfelCollection e as matrizes de transformaccedilatildeo para rotaccedilatildeo

escala e translaccedilatildeo Cada Object eacute identificado pelo seu nome que eacute uacutenico na

Scene O meacutetodo getUniqueName retorna um nome uacutenico Cada Object tem sua

proacutepria matriz de transformaccedilatildeo que pode ser modificada com setRotation

rotate setPosition translate setScale e scale Objects podem ser copiados com

copy Objects consiste em um conjunto de surfels os quais podem ser

recuperados pela getSurfelCollection O Object pode ser ativado com

setActiveObject e recuperado com getActiveObject

Objects podem ser adicionados ou removidos com addObject e

removeObject Os Objects podem ser obtidos pela getFirstObject e

getNextObject

Classe SurfelCollection representa o conjunto de surfels de um modelo

Cada surfelcollection consiste em um conjunto de surfels (SurfelInterface) de

tamanho obtido por getNofSurfels Os surfels podem ser recuperados com

getFirstSurfel getCurrentSurfel e getNextSurfel

A SurfelCollection conteacutem um PropertyDescriptor e uma SurfelList

A SurfelList eacute uma lista duplamente encadeada de surfels Possui os

atributos firstSurfel lastSurfel currentSurfel que satildeo ponteiros para uma

SurfelInterface nSurfels que eacute o nuacutemero de Surfels

A SurfelInterface define a API para os surfels que satildeo os menores

elementos que compotildeem um Object Podem ser considerados como pontos com

uma normal que define a orientaccedilatildeo do ciacuterculo (ou elipse) que seraacute desenhado

Melhorias Propostas 59

tatildeo logo o surfel seja renderizado Tem como atributos dois ponteiros (next e

prev) para SurfelInterface

PropertyDescriptor consiste em ateacute 32 valores descrevendo quais as

propriedades a SurfelInterface suporta

Classe Surfel classe que representa o surfel

Classe StatusBar classe que imprime mensagens na tela Os plugins

podem mandar mensagens para o usuaacuterio pela StatusBar

Mensagens texto podem ser impressas com showMessage O progresso

de uma operaccedilatildeo pode ser indicado com setProgress ou resetProgress

Classe Transformer representa a transformaccedilatildeo entre sistemas de

coordenadas Esta classe fornece meacutetodos para transformar pontos e vetores

entre os diferentes sistemas de coordenadas do Pointshop

A seguir apresentamos as principais estruturas de dados do plugin

Operaccedilotildees Booleanas

As principais estruturas de dados do plugin satildeo boundingbox tree no

lista_surfel surfel

Boundingbox conteacutem dois pontos 3D que definem uma caixa que conteacutem

o modelo um ponto com menores coordenadas xy e z e outro ponto com

maiores xyz

Tree representa a octree do modelo Cada registro conteacutem um ponteiro

para um noacute e oito ponteiros para as 8 octrees filhas

No representa um noacute da octree Conteacutem os seguintes dados

- localizaccedilatildeo do noacute que eacute o canto inferior esquerdo do noacute

- lista_surfel (preenchida apenas para noacutes folha cheios)

- quantidade de surfels do noacute

- classificaccedilatildeo do noacute como dentro fora ou contorno

- classificaccedilatildeo do noacute em relaccedilatildeo a outro modelo

- indica se o noacute eacute folha ou natildeo

- vetor que eacute a meacutedia das normais dos surfels do noacute

- ponto que eacute a meacutedia das localizaccedilotildees dos surfels do noacute

- surfel que tem (entre todos os surfels do noacute) o maior produto interno

entre a sua normal e a normal meacutedia

- surfel que tem (entre todos os surfels do noacute) o menor produto interno

entre a sua normal e a normal meacutedia

- produto interno maacuteximo e miacutenimo entre as normais dos surfels do noacute e a

normal meacutedia deste noacute

Melhorias Propostas 60

- indica se o noacute conteacutem surfels com normais em sentido oposto (produto

interno entre elas eacute menor que zero)

- classificaccedilatildeo dos oito cantos do noacute

lista_surfels lista em que cada registro conteacutem um apontador para um

surfel e um apontador para o proacuteximo registro

surfel representa o surfel da octree Conteacutem a classificaccedilatildeo em relaccedilatildeo a

outro modelo e um ponteiro para o surfel do Poinshop

Resultados 61

6 Resultados

Neste capiacutetulo apresentamos os testes realizados com o plugin para o

PointShop implementado para esta dissertaccedilatildeo a comparaccedilatildeo deste plugin com

o plugin de Pauly [3] e a comparaccedilatildeo entre o meacutetodo de Adams e Dutreacute [2] e o

meacutetodo de Pauly [3]

61 Testes

Os testes foram feitos em um PC x86 Family 6 261600 KB de RAM sem

placa graacutefica sistema operacional Windows 2000 O plugin foi implementado na

linguagem C

Os modelos usados para os testes satildeo modelos disponibilizados no

PointShop [11] Vale lembrar que o meacutetodo implementado em nosso plugin eacute

restrito a modelos soacutelidos e portanto foram usados apenas estes modelos

soacutelidos para os testes

O modelo na Figura 29 que eacute um dos modelos disponibilizados no

PointShop [11] foi usado para mostrar o resultado das operaccedilotildees realizadas

pelo plugin implementado nesta dissertaccedilatildeo O modelo Igea eacute um modelo soacutelido

que conteacutem 134345 surfels

Resultados 62

Figura 29-Modelo do PointShop Igea

Para realizar as operaccedilotildees este modelo foi carregado na cena do

PointShop duas vezes e um deles colorido de vermelho As Figuras 30 31 32

mostram o resultado da operaccedilatildeo de uniatildeo interseccedilatildeo e diferenccedila

respectivamente Os nuacutemeros de surfels dos modelos resultantes satildeo mostrados

na Tabela 2

Resultados 63

Figura 30-Resultado da uniatildeo de duas Igeas

Figura 31-Resultado da interseccedilatildeo de duas Igeas

Resultados 64

Figura 32-Resultado da diferenccedila entre duas Igeas

Tabela 2-Nuacutemero de surfels dos modelos resultantes

Observamos que o nuacutemero de surfels dos modelos resultantes estaacute

coerente com as figuras dos seus modelos

Para avaliar o tempo de processamento das operaccedilotildees foram realizados

vaacuterios testes com o objetivo de obter uma meacutedia dos tempos de realizaccedilatildeo de

cada operaccedilatildeo Tambeacutem foram armazenados os tempos da criaccedilatildeo das duas

octrees e da classificaccedilatildeo de todos os surfels dos dois objetos (como dentro ou

fora do outro modelo) Estes testes foram feitos usando o modelo Igea A meacutedia

dos tempos de processamento foi calculada e os resultados satildeo mostrados na

Tabela 3 Verificamos que o maior tempo gasto eacute para criaccedilatildeo das octrees

Verificamos tambeacutem que este resultado apresentado eacute similar ao resultado

verificado empiricamente com o plugin de Pauly [3] Os tempos gastos para

realizar as operaccedilotildees satildeo similares e o maior tempo gasto no plugin de Pauly

tambeacutem eacute para inicializaccedilatildeo de suas estruturas de dados que incluem a kd-tree

Operaccedilatildeo Nuacutemero de surfels do modelo resultado

Uniatildeo 189715

Interseccedilatildeo 72225

Diferenccedila 134552

Resultados 65

Operaccedilatildeo Criaccedilatildeo das

Octrees (seg)

Classificaccedilatildeo

(seg)

Criaccedilatildeo do

resultado (seg)

Total (seg)

Uniatildeo 39375 1324 18925 7154

Interseccedilatildeo 38585 1585 09547 63982

Diferenccedila 399875 1504 1729 729475

Tabela 3- Meacutedia dos tempos de processamento para as operaccedilotildees com duas Igeas

Com o objetivo de expor melhor os resultados deste trabalho

apresentamos abaixo mais um teste das operaccedilotildees booleanas usando o nosso

plugin Os modelos usados para este segundo teste satildeo o Max Planck e o Male

ambos modelos soacutelidos disponibilizados no PointShop Estes modelos satildeo

mostrados nas figura 33 e 34

O primeiro Max Planck conteacutem 52809 surfels

Figura 33-Modelo do PointShop MaxPlanck

O segundo modelo abaixo Male conteacutem 148138 surfels

Resultados 66

Figura 34-Modelo do PointShop Male

As Figuras 353637 mostram o resultado da operaccedilatildeo de uniatildeo interseccedilatildeo

e diferenccedila respectivamente usando os dois modelos acima Podemos observar

pela figura 35 que o resultado da operaccedilatildeo de diferenccedila neste caso gerou um

modelo resultado com trecircs partes desconexas Os nuacutemeros de surfels de cada

modelo resultado satildeo mostrados na Tabela 5

Figura 35- Resultado da Uniatildeo do modelo Male com MaxPlanck

Resultados 67

Figura 36-Resultado da interseccedilatildeo do modelo Male com o MaxPlanck

Figura 37-Resultado da diferenccedila do modelo Male do modelo MaxPlanck

As meacutedias de tempos de processamento foram calculadas da mesma

forma que o primeiro teste com o modelo Igea acima apresentado Os

resultados satildeo mostrados na Tabela 4 Podemos observar que este teste

Resultados 68

apresenta tempos um pouco menores que o teste com o modelo Igea Isto se

deve ao fato de que o modelo MaxPlanck ser significativamente menor que o

modelo Igea MaxPlanck possui 52809 surfels e Igea conteacutem 134345 surfels

Operaccedilatildeo Criaccedilatildeo das

Octrees (seg)

Classificaccedilatildeo

(seg)

Criaccedilatildeo do

resultado (seg)

Total

(seg)

Uniatildeo 3012 1254 102 5285

Interseccedilatildeo 2985 0901 0861 4747

Diferenccedila 2965 0911 0791 4667

Tabela 4-Tempo de processamento das operaccedilotildees com os modelos MaxPlanck e Male

Operaccedilatildeo Nuacutemero de surfels do resultado

Uniatildeo 126532

Interseccedilatildeo 88414

Diferenccedila 77635

Tabela 5-Nuacutemero de surfels dos modelos resultados das operaccedilotildees com os modelos MaxPlanck e Male

Em seguida apresentaremos uma comparaccedilatildeo entre o nosso plugin e o

plugin de Pauly[3] e tambeacutem uma comparaccedilatildeo entre o meacutetodo de Adams e Dutreacute

[2] e o meacutetodo de Pauly [3]

62 Comparaccedilatildeo entre os dois meacutetodos que realizam operaccedilotildees booleanas

A comparaccedilatildeo entre os meacutetodos de Pauly[3] e de Adams e Dutreacute foi feita

em termos de tempo de processamento e em termos conceituais Em termos de

tempo de processamento comparamos o plugin de Pauly[3] com o nosso plugin

Em termos de tempo de processamento verifica-se empiricamente que os

dois meacutetodos apresentam tempos bastante similares Entretanto o tempo de

processamento do algoritmo aqui implementado ainda pode ser melhorado com

Resultados 69

o uso do meacutetodo TINN [19] que foi proposto em Adams[2] - para otimizar a

pesquisa do surfel mais proacuteximo a um ponto que estaacute localizado na regiatildeo de um

noacute que conteacutem surfels - veja seccedilatildeo 42 O uso deste meacutetodo natildeo foi

implementado para este trabalho e a sua implementaccedilatildeo melhoraria o tempo de

resposta do algoritmo Aleacutem disso o trabalho de Sara F Frisken [12] citado no

capiacutetulo 2 apresenta uma otimizaccedilatildeo no uso de octrees que pode ser

incorporada no algoritmo implementado neste trabalho

Em termos conceituais vamos fazer a comparaccedilatildeo do uso do que

chamamos aqui de Regra 2 do tratamento de interseccedilatildeo e do tratamento de

ldquoarestas vivasrdquo

Como vimos na seccedilatildeo 41 tanto o algoritmo implementado nesta

dissertaccedilatildeo baseado no trabalho de Adams e Dutreacute como o meacutetodo de Pauly

[3] parte do que chamamos aqui de Regra 2 para realizar operaccedilotildees booleanas

com pontos Mas cada um destes meacutetodos daacute um tratamento diferente para o

uso desta regra

O meacutetodo de Pauly usa a Regra 2 para classificaccedilatildeo de cada ponto ou de

cada surfel Para classificar um surfel de B sb como dentro ou fora de A eacute

encontrado o surfel de A sa mais proacuteximo a sb e sb eacute classificado a partir de sa

Para encontrar sa Pauly utiliza uma kd-tree Como esta pesquisa para encontrar

sa eacute cara (mesmo usando uma kd-tree) Pauly utiliza uma esfera que conteacutem

pontos com a mesma classificaccedilatildeo (seccedilatildeo 432) e diminui em 90 este nuacutemero

de pesquisas Pauly utiliza tambeacutem a representaccedilatildeo impliacutecita MLS (Moving Least

Squares) para casos em que a Regra 2 poderia falhar e para tratamento de

interseccedilotildees Entretanto o nuacutemero destes casos em que a Regra 2 poderia falhar

eacute muito pequeno E a representaccedilatildeo MLS natildeo eacute uma estrutura simples de ser

implementada Portanto natildeo encontramos vantagens em usar MLS para estes

casos O meacutetodo de Adams e Dutreacute natildeo trata estes casos e na praacutetica

apresenta resultados bastante satisfatoacuterios como foi mostrado Portanto

consideramos que valeria a pena fazer algum tratamento especial para estes

casos se fosse um procedimento simples Para a execuccedilatildeo do algoritmo de

Pauly o uso de MLS natildeo interfere significativamente porque a construccedilatildeo desta

representaccedilatildeo natildeo eacute feita somente para realizar operaccedilotildees booleanas Os testes

empiacutericos que fizemos com o algoritmo de Pauly natildeo incluem a construccedilatildeo desta

representaccedilatildeo

Aparentemente os dois algoritmos satildeo bastante parecidos um usa octrees

e o outro usa kd-tree As duas estruturas de dados satildeo simples e otimizam a

classificaccedilatildeo dos surfels de um modelo como dentro ou fora do outro modelo

Resultados 70

Mas existe uma diferenccedila conceitual entre dois que merece ser destacada O

algoritmo aqui implementado usa a Regra 2 para classificaccedilatildeo dos noacutes de uma

octree e armazena esta octree classificada (ver capiacutetulo 5) Assim na maioria dos

casos natildeo seraacute necessaacuterio encontrar o surfel mais proacuteximo para classificar um

ponto (ou um surfel) como fora ou dentro de um modelo Caso o ponto esteja em

uma aacuterea da octree classificada ele teraacute a classificaccedilatildeo dada agravequela aacuterea A

pesquisa ao surfel mais proacuteximo seraacute feita apenas nos casos em que o ponto a

ser classificado estaacute localizado entre os planos que subdividem um noacute cheio

O uso desta octree classificada levanta uma questatildeo que natildeo foi citada no

trabalho de Adams e Dutreacute que eacute a proximidade desta estrutura (armazenada)

de octree classificada com uma representaccedilatildeo volumeacutetrica do objeto Sendo

assim esta estrutura pode ser aproveitada para outras funccedilotildees aleacutem da

classificaccedilatildeo dos surfels Por exemplo podemos ter uma aproximaccedilatildeo do

volume de uma cena somando os volumes aproximados dos modelos que a

compotildeem Como o enfoque deste trabalho eacute operaccedilatildeo booleana natildeo vamos nos

aprofundar nesta questatildeo

Outra importante diferenccedila entre os dois trabalhos que jaacute foi explicada na

seccedilatildeo 432 eacute que o meacutetodo de Pauly aplica-se a modelos soacutelidos ou natildeo

soacutelidos enquanto que o meacutetodo de Adams e Dutreacute aplica-se somente a modelos

soacutelidos

Quanto ao tratamento de interseccedilatildeo em termos de visualizaccedilatildeo todos os

dois resolvem bem o problema O tratamento de interseccedilatildeo nos dois trabalhos

tambeacutem resolve o problema da validade da Regra 2 (ver seccedilatildeo 44) Entretanto

o tratamento de Adams e Dutreacute natildeo depende da renderizaccedilatildeo sendo portanto

mais portaacutevel Aleacutem disso uma desvantagem do meacutetodo de Pauly eacute o uso da

representaccedilatildeo impliacutecita MLS (ldquoMoving Least Squaresrdquo) do objeto para obter os

pontos exatamente na curva de interseccedilatildeo Esta representaccedilatildeo torna o

tratamento de interseccedilatildeo mais complexo e a vantagem apresentada natildeo eacute tatildeo

significativa para este tratamento de interseccedilatildeo

Conclusatildeo 71

7 Conclusatildeo

Concluiacutemos entatildeo que as escolhas de Adams e Dutreacute por usar uma

octree classificada e pelo tratamento dado agrave interseccedilatildeo satildeo mais abrangentes

que a escolha de Pauly E consideramos que quanto mais abrangente for uma

escolha conceitual mais resultados poderemos tirar dela No caso de Adams e

Dutreacute eles estendem o problema de classificar um ponto para classificar todo o

modelo Como foi citado ele quase fornece uma representaccedilatildeo volumeacutetrica do

modelo Esta aproximada representaccedilatildeo volumeacutetrica pode nos fornecer outras

informaccedilotildees como por exemplo o volume aproximado do modelo

Aleacutem disso o uso da representaccedilatildeo impliacutecita MLS no meacutetodo de Pauly cria

uma complexidade a mais para o meacutetodo sem apresentar vantagens para a

realizaccedilatildeo de operaccedilotildees booleanas que eacute o nosso enfoque

Logo podemos dizer que o meacutetodo de Adams e Dutreacute apresenta as

seguintes vantagens em relaccedilatildeo ao de Pauly

- a estrutura de octree classificada aleacutem de ser usada para classificaccedilatildeo

fornece informaccedilotildees adicionais como volume aproximado do objeto

- o tempo de processamento no meacutetodo de Adams e Dutreacute tende a ser

melhor que no meacutetodo de Pauly se implementadas as melhorias acima citadas e

se colocaacutessemos em consideraccedilatildeo o uso da representaccedilatildeo impliacutecita MLS

(Moving Least Squares)

- o tratamento de interseccedilatildeo de Adams e Dutreacute apresenta a vantagem da

portabilidade ou seja iraacute funcionar independente do algoritmo de renderizaccedilatildeo

utilizado

E as vantagens do meacutetodo de Pauly em relaccedilatildeo ao de Adams e Dutreacute

- a colocaccedilatildeo de surfels exatamente na curva de interseccedilatildeo

- a possibilidade de trabalhar com modelos soacutelidos ou natildeo soacutelidos

E finalizando concluiacutemos que o estudo relatado nesta dissertaccedilatildeo foi

importante por

- fornecer um breve estudo sobre modelagem por pontos uma nova e

promissora aacuterea dentro da computaccedilatildeo graacutefica

Conclusatildeo 72

- por apresentar uma avaliaccedilatildeo dos dois trabalhos existentes sobre

operaccedilotildees booleanas com pontos encontrando as vantagens de cada um

e levantando questotildees que natildeo tinham sido citadas nos trabalhos originais

- por propor e implementar melhorias ao trabalho de Adams e Dutreacute

71 Trabalhos Futuros

Nossa implementaccedilatildeo pode ser ainda evoluiacuteda com as propostas

apresentadas na seccedilatildeo 62 Como observamos o tempo de processamento do

algoritmo aqui implementado ainda pode ser melhorado com o uso do meacutetodo

TINN [19] - que foi proposto em Adams[2] - para otimizar a pesquisa do surfel

mais proacuteximo a um ponto que estaacute localizado na regiatildeo de um noacute que conteacutem

surfels Aleacutem disso o trabalho Simple and Efficient Trasversal Methods for

Quadtrees and Octrees de Sara F Frisken [12] citado no capiacutetulo 2 apresenta

uma otimizaccedilatildeo no uso de octrees Outra proposta para melhorar o tempo de

processamento do algoritmo aqui implementado eacute usar a forma de trabalhar com

octrees apresentada neste trabalho

O trabalho de Adams e Dutreacute [2] eacute aplicado apenas a objetos soacutelidos O

nosso plugin portanto aplica-se somente a este tipo de objeto Jaacute o trabalho de

Pauly[3] eacute aplicado tambeacutem a modelos natildeo soacutelidos Apresentamos como

proposta a um trabalho futuro a extensatildeo do algoritmo aqui implementado para

modelos natildeo soacutelidos O surfel pode conter uma informaccedilatildeo adicional que indica

se ele estaacute delimitando um volume ou natildeo Assim pode-se ter um modelo com

ldquopartes soacutelidasrdquo e ldquopartes natildeo soacutelidasrdquo Por exemplo a uniatildeo de um plano com

uma esfera poderia resultar numa esfera com ldquoabasrdquo (seriam as partes do plano

que estariam fora da esfera) O modelo resultado teria uma parte correspondente

a um espaccedilo 3D (esfera) e outra parte que seria uma superfiacutecie 2D posicionada

no espaccedilo 3D sem delimitar algum volume (abas)

Muitos trabalhos podem ser desenvolvidos aplicando-se o modelo por

pontos em animaccedilatildeo jogos visualizaccedilatildeo de terrenos criaccedilatildeo de protoacutetipos etc

considerando-se a eficiecircncia e simplicidade do modelo E mais especificamente

as operaccedilotildees booleanas com pontos podem ser aplicadas para criaccedilatildeo de

cenaacuterios testes de colisotildees e nestes casos a representaccedilatildeo usando octrees

pode ser mais explorada considerando-se o seu potencial de representaccedilatildeo

volumeacutetrica de um objeto

Referecircncias Bibliograacuteficas 73

8 Referecircncias Bibliograacuteficas

[1] MAumlNTYLAuml M An Introduction to Solid Modeling Computer Science Press 1988

[2] ADAMS B DUTREacute P Interactive Boolean Operations on Surfel-

Bounded Solids Proceedings of SIGGRAPH 2003 San Diego USA 2003

[3] PAULY M KEISER R KOBBELT L GROSS M Shape Modeling

with Point-Sampled Geometry SIGGRAPH 2003 Computer Graphics

Proceedings Annual Conference Series ACM Press ACM SIGGRAPH 2003

[4] LEVOY M WHITTED T The Use of Points as Display Primitives

Technical Report TR 85-022 The University of North Carolina at Chapel Hill

Department of Computer Science 1985

[5] PFISTER H ZWICKER M VAN BAAR J GROSS M 2000 Surfels

Surface Elements as Rendering Primitives SIGGRAPH 2000 pp 335ndash342 New

Orleans LA July 23-28 2000

[6] ZWICKER M PFISTER H VAN BAAR J GROSS M Surface

Splatting SIGGRAPH 2001

[7] PAULY M KOBBELT L GROSS M Multiresolution Modeling of

Point-Sampled Geometry CS Techinical Report 378 September 16 2002

[8] CURLESS B New Methods for Surface Reconstruction from Range Images PhD thesis Stanford University 1997

[9] RUSINKIEWICZ S Real-time Acquisition and Rendering of Large 3D Models PhD thesis Stanford University 2001

Referecircncias Bibliograacuteficas 74

[10] AMENTA N BERN M KAMVYSSELIS M A new Voronoi-Based

Surface Reconstruction Algorithm SIGGRAPH 98 Conference proceedings pp

415-421 New York 1998

[11] ZWICKER M PAULY M KNOLL O GROSS M Pointshop 3D an

Interactive System for Point-Based Surface Editing Proceedings of SIGGRAPH 2002 San Antonio TX July 2002

[12] FRISKEN S PERRY R Simple and Efficient Traversal Methods for

Quadtrees and Octrees Journal of Graphics Tools Vol 7 Issue 3 May 2003

[13] CORREcircA W T OLIVEIRA M M Silva C T Wang J

Modeling and Rendering of Real Environments

Revista de Informaacutetica Teoacuterica e Aplicada (Brazilian Journal of Theoretic and Applied Computing) 9(2)127-156 2002

[14] DAVIS J MARSCHNER S GARR M LEVOY M Filling Holes in

Complex Surfaces Using Volumetric Diffusion First International Symposium on 3D Data Processing Visualization Transmission June 2002

[15] RAumlSAumlNEN J Surface Splatting Theory Extensions and Implementation Masterrsquos Thesis Dept of Computer Science Helsinki

University of Technology May 28 2002

[16] PAULY M Point Primitives for Interactive Modeling and Processing of 3D Geometry PhD thesis Federal Institute of Technology (ETH)

of Zurich 2003

[17] HOPPE H DEROSE T DUCHAMP T MCDONALD J

STUELZLE W Surface Reconstruction from Unorganized Points Computer Graphics 26(2)71ndash78 July 1992

[18] ALEXA M BEHR J COHEN-OR D FLEISHMAN S LEVIN D

SILVA C T Point Set Surfaces IEEE Visualization 2001 pp 21ndash28 October

2001

Referecircncias Bibliograacuteficas 75

[19] GREENSPAN M GODIN G TALBOT J Acceleration of Binning

Nearest Neighbor Methods Proceedings of Vision Interface 2000 pp 337-

344

[20] MENCL R Reconstruction of Surfaces from Unorganized Three-Dimensional Point Clouds Dissertation Dortmund Univ 2001

[21] KRIVANEK J Representing and Rendering Surfaces With Points

httpciteseernjneccomkrivanek03representinghtml Acesso em 30 jul

2003

[22] KRISTJANSSON ET AL Approximate Boolean Operations on Free-

form Solids Proceedings of SIGGRAPH 01 2001

Trabalhos relacionados 19

execuccedilatildeo dos dois plugins que realizam operaccedilotildees booleanas pocircde ser

comparada

Os trabalhos aqui discutidos satildeo o de Bart Adams e Philip Dutreacute [2] e de

Pauly et al[3] que apresentam meacutetodos diferentes para realizaccedilatildeo de

operaccedilotildees booleanas com pontos Adams e Dutreacute utilizam octrees [1] e Pauly

Kd-Tree [16] e MLS (Moving Least Squares) [18] Estes algoritmos satildeo

discutidos no capiacutetulo 4

O trabalho de Sara F Frisken [12] apresenta um algoritmo para realizar

operaccedilotildees em octree de forma mais eficiente Como estas operaccedilotildees estatildeo

presentes em todo o nosso algoritmo este trabalho certamente oferece uma

forma de otimizaccedilatildeo mas que natildeo foi implementada

Modelagem por Pontos 20

3 Modelagem por Pontos

A computaccedilatildeo graacutefica natildeo lida diretamente com o objeto ou com o

fenocircmeno fiacutesico lida com modelos graacuteficos ou geomeacutetricos Modelos graacuteficos

satildeo estruturas computacionais (abstratas) que capturam aspectos de objetos de

interesse para uma aplicaccedilatildeo como forma cor textura etc Se apenas a forma

ou a geometria do objeto eacute relevante temos modelos geomeacutetricos

Estes modelos satildeo usados em vaacuterias aplicaccedilotildees em computaccedilatildeo graacutefica

como roboacutetica visatildeo computacional simulaccedilotildees realistas anaacutelises estruturais

prototipagem projeto e manufatura de produtos eletromecacircnicos arquitetura

Existem vaacuterios tipos de modelos graacuteficos Esta dissertaccedilatildeo trata de um tipo

muito em voga atualmente que eacute o modelo por pontos

Neste capiacutetulo daremos uma visatildeo geral do modelo por pontos

Introduziremos este modelo e seu processo de criaccedilatildeo Seraacute apresentado o que

eacute um modelo por pontos e o conceito de surfel [5] introduziremos os tipos de

distribuiccedilatildeo dos surfels uma estruturaccedilatildeo aplicada a estes surfels e dados que

eles podem conter As quatro proacuteximas subseccedilotildees (Ideacuteia da representaccedilatildeo

Tipos de distribuiccedilatildeo dos surfels Estrutura de multi-resoluccedilatildeo e Dados que um

surfel pode conter) tratam destes toacutepicos Um modelo por pontos pode ser criado

a partir da conversatildeo de outros tipos de modelagem NURBS por exemplo para

o modelo por pontos ou a partir de um processo de aquisiccedilatildeo Esta uacuteltima forma

de criaccedilatildeo pode ser dividida em duas etapas aquisiccedilatildeo do modelo reconstruccedilatildeo

da superfiacutecie As subseccedilotildees 35 e 36 tratam destas duas etapas

respectivamente A ediccedilatildeo do modelo 3D eacute tratada brevemente na subseccedilatildeo 38

e a sua visualizaccedilatildeo na subseccedilatildeo 37 A apresentaccedilatildeo do processo de aquisiccedilatildeo

(seccedilatildeo 35) eacute baseada no tutorial de W T Correcirca [13] A etapa de ediccedilatildeo 3D

consiste em operaccedilotildees para mudanccedila da cor textura ou forma do modelo Para

esta etapa enfocaremos as operaccedilotildees booleanas que modificam a forma do

modelo ou criam novos modelos

31 Ideacuteia da Representaccedilatildeo

Modelagem por Pontos 21

Figura 1 [20] -Um modelo por pontos e sua visualizaccedilatildeo

Um modelo por pontos representa um objeto atraveacutes de seu contorno Eacute

um tipo de representaccedilatildeo B-Rep (Boundary Representation) [1] Este contorno

consiste em uma superfiacutecie 2D posicionada no espaccedilo 3D Na modelagem por

pontos ela eacute representada por um conjunto de pontos 3D que satildeo uma

amostragem dos (infinitos) pontos que formam a superfiacutecie contiacutenua (Figura 1) A

amostragem pode ser obtida de diversas maneiras Uma delas o processo de

aquisiccedilatildeo progrediu muito nos uacuteltimos anos e este foi um dos fatores que tornou

muito importante o desenvolvimento deste modelo por pontos Outra forma de

gerar amostragem eacute fazer uma conversatildeo de um outro modelo NURBS por

exemplo para o modelo por pontos

Estes pontos satildeo denominados surfels e podem conter aleacutem da posiccedilatildeo

3D outras informaccedilotildees como normal agrave superfiacutecie cor textura raio de alcance A

Figura 2 mostra um conjunto de surfels representando uma superfiacutecie No surfel

em destaque podemos ver o raio de alcance rt e a normal n agrave superfiacutecie

Modelagem por Pontos 22

Figura 2 [5] A superfiacutecie modelada por surfels O surfel em destaque tem raio de alcance

rt e normal n

Como o modelo natildeo armazena qualquer informaccedilatildeo sobre a conexatildeo entre

os surfels a reconstruccedilatildeo da superfiacutecie contiacutenua a partir dele pode exigir

algumas restriccedilotildees na amostragem (seccedilatildeo 36)

32 Tipos de distribuiccedilatildeo dos surfels

Existem dois tipos de distribuiccedilatildeo dos surfels na modelagem por pontos

uniforme e natildeo uniforme Na distribuiccedilatildeo uniforme cada um deles descreve

partes de mesmo tamanho da superfiacutecie Na natildeo uniforme cada surfel armazena

a informaccedilatildeo de seu raio de alcance que eacute o raio do disco que este surfel

representa

A distribuiccedilatildeo uniforme tem a vantagem de ser mais simples e natildeo ser

necessaacuterio armazenar o raio de alcance do disco mas ela apresenta a seguinte

desvantagem se o modelo possui regiotildees com muito detalhe e regiotildees com

pouco detalhe ele teraacute que manter uma alta densidade mesmo nas regiotildees de

poucos detalhes

33 Estrutura de multi-resoluccedilatildeo

Um objeto pode ser representado em vaacuterios niacuteveis de detalhes Por

exemplo podemos representar um mesmo objeto com vaacuterias resoluccedilotildees

diferentes Este conceito pode ser aplicado ao modelo por pontos Desta forma

um modelo eacute representado por uma estrutura hieraacuterquica (uma aacutervore por

exemplo) onde em cada niacutevel temos uma representaccedilatildeo do objeto em uma

Modelagem por Pontos 23

determinada resoluccedilatildeo Em [7] Pauly et al propotildeem algoritmos para modelagem

multi-resoluccedilatildeo em modelos por pontos

34 Dados que um surfel pode conter

Cada surfel armazena sua localizaccedilatildeo e pode tambeacutem conter informaccedilotildees

como a cor ou coordenadas de textura Se a amostragem natildeo for uniforme o

surfel conteacutem a informaccedilatildeo do raio de alcance que eacute o raio de um disco cujo

centro eacute a posiccedilatildeo do surfel O surfel pode tambeacutem conter o vetor normal agrave

superfiacutecie e assim o surfel pode ser visto como um disco orientado A superfiacutecie

tambeacutem pode ser vista como uma superfiacutecie orientada

35 Aquisiccedilatildeo do modelo

Esta introduccedilatildeo sobre aquisiccedilatildeo do modelo aqui apresentada baseia-se no

tutorial de W T Correcirca [13]

O processo de aquisiccedilatildeo consiste em obter uma amostragem de pontos da

superfiacutecie do objeto real por meio de equipamentos como por exemplo o

scanner 3D Eacute uma aacuterea que tem progredido muito nos uacuteltimos anos A

resoluccedilatildeo e a precisatildeo dos equipamentos de aquisiccedilatildeo tecircm melhorado bastante

e o custo deles reduzido de forma significativa Isso possibilita que a aquisiccedilatildeo

de modelos 3D seja usada em aplicaccedilotildees de desenho industrial arte ou em

produtos para a aacuterea de entretenimento O consequumlente maior uso destes

equipamentos criou a necessidade de avanccedilos no tratamento dos seus dados de

saiacuteda que satildeo um conjunto de pontos

Este processo pode ser dividido em trecircs partes [13] aquisiccedilatildeo da

geometria aquisiccedilatildeo da textura e correccedilatildeo de falhas da aquisiccedilatildeo

351 Aquisiccedilatildeo da geometria

Existem vaacuterios meacutetodos de aquisiccedilatildeo da geometria Curless [8] e

Rusinkiewicz [9] classificaram estes meacutetodos em trecircs categorias meacutetodos por

contato transmissatildeo e reflexatildeo

O meacutetodo por contato toca a superfiacutecie do objeto com uma sonda e grava

a posiccedilatildeo Este meacutetodo do qual o Coordinate Measuring Machines (CMMs) eacute

Modelagem por Pontos 24

um exemplo eacute bastante preciso mas eacute muito lento e natildeo adequado a objetos

fraacutegeis

Meacutetodos por transmissatildeo projetam ondas de energia sobre o objeto e

gravam a energia transmitida Por exemplo tomografia computadorizada que

projeta ondas de raio-x sobre o objeto e mede a quantidade de radiaccedilatildeo que

passa atraveacutes dele O resultado eacute um modelo geomeacutetrico de alta resoluccedilatildeo Este

meacutetodo pode captar detalhes do objeto que natildeo satildeo visiacuteveis de fora do objeto

Por outro lado ele eacute caro e arriscado

Meacutetodos por reflexatildeo podem ser oacuteticos ou natildeo-oacuteticos Natildeo-oacuteticos incluem

radares que medem a distacircncia a um objeto enviando microondas ou ondas

sonoras para o objeto e gravando o tempo que a onda gasta para retornar Estes

meacutetodos natildeo satildeo muito precisos nem raacutepidos

Meacutetodos por reflexatildeo oacuteticos podem ser passivos ou ativos Meacutetodos oacuteticos

passivos natildeo interagem com o objeto e incluem teacutecnicas de visatildeo computacional

como shape-from-shading stereo triangulation optical flow e meacutetodos de

decomposiccedilatildeo para video streams Estes meacutetodos raramente constroem

modelos precisos e sua maior aplicaccedilatildeo eacute em reconhecimento de objetos

Meacutetodos oacuteticos ativos projetam luz sobre um objeto de maneira estruturada

e atraveacutes da reflexatildeo da luz determinam a forma do objeto Exemplos satildeo depth

from defocus photometric stereo projected-light triangulation time of flight

Meacutetodos por reflexatildeo oacuteticos ativos tecircm muitas vantagens sobre os passivos tecircm

um melhor desempenho quando natildeo existe textura satildeo mais baratos e mais

robustos e produzem uma amostragem precisa

352 Aquisiccedilatildeo da textura

Idealmente noacutes gostariacuteamos de ter uma completa descriccedilatildeo de como um

ponto da superfiacutecie reflete a luz dependendo do vetor normal a esta superfiacutecie

da direccedilatildeo do raio de luz incidente e do comprimento de onda Tal descriccedilatildeo eacute

conhecida como Bidirectional Reflectance Distribution Function (BRDF) Medir

BRDFs com precisatildeo eacute um problema difiacutecil

Pode-se ter uma aproximaccedilatildeo da aquisiccedilatildeo de cores do objeto tirando

fotos dele O objeto eacute fotografado e a cor de cada ponto da superfiacutecie eacute obtida a

partir de um mapeamento das fotos 2D para o modelo 3D Para mapear a

fotografia agrave geometria precisamos conhecer os paracircmetros de projeccedilatildeo da

cacircmera e a sua posiccedilatildeo no momento em que a foto foi batida Para cada ponto

Modelagem por Pontos 25

3D do modelo encontramos sua projeccedilatildeo 2D no plano da cacircmera e associamos

a cor do pixel nesta projeccedilatildeo agrave cor do ponto 3D

353 Correccedilatildeo das falhas da aquisiccedilatildeo

O processo de aquisiccedilatildeo deixa frequumlentemente buracos no modelo devido

a ruiacutedos no processo ou agrave impossibilidade de aquisiccedilatildeo de determinadas partes

de uma superfiacutecie Estes buracos devem ser corrigidos Pode-se usar por

exemplo um filtro de passa-baixa para remoccedilatildeo de ruiacutedos [14] Meacutetodos de

difusatildeo geomeacutetrica tecircm sido aplicados para preenchimento dos buracos [15] A

correccedilatildeo das falhas eacute tida como um preacute-processamento para o processo de

reconstruccedilatildeo da superfiacutecie contiacutenua (seccedilatildeo 36)

36 Reconstruccedilatildeo da superfiacutecie (contiacutenua) a partir do modelo (discreto)

A reconstruccedilatildeo da superfiacutecie contiacutenua consiste em a partir de um conjunto

natildeo estruturado de pontos obter um modelo contiacutenuo desta superfiacutecie Esta

reconstruccedilatildeo eacute frequumlentemente exigida para um modelo por pontos Na sua

visualizaccedilatildeo podemos desejar focar qualquer parte do modelo Para fazermos

operaccedilotildees booleanas com os modelos podemos querer determinar exatamente

onde eles se intersectam

No entanto natildeo precisamos ter necessariamente a representaccedilatildeo contiacutenua

de todo o objeto ao mesmo tempo A reconstruccedilatildeo desta superfiacutecie a partir dos

pontos amostrados pode ser feita no momento que for mais adequado agrave

aplicaccedilatildeo Na visualizaccedilatildeo a reconstruccedilatildeo pode ser feita na projeccedilatildeo 2D da

parte do modelo em foco (seccedilatildeo 37) Para operaccedilotildees booleanas pode-se

reconstruir apenas a aacuterea da interseccedilatildeo dos modelos

Este processo de reconstruccedilatildeo de superfiacutecie tem sido muito estudado em

modelagem geomeacutetrica e geometria computacional nos uacuteltimos anos O trabalho

mais importante desta aacuterea eacute o trabalho de Amenta et al [10] que foi a primeira

soluccedilatildeo com garantias demonstraacuteveis para este problema de reconstruccedilatildeo de

superfiacutecie A seccedilatildeo 44 explica estes conceitos e o trabalho [10] Este trabalho

demonstra que teoricamente para que a reconstruccedilatildeo da superfiacutecie (contiacutenua) a

partir das amostras seja correta a amostragem deve ser adequada Ele usa o

conceito de ldquoEixo Medialrdquo para definir o que eacute uma amostragem adequada

Modelagem por Pontos 26

(seccedilatildeo 44) Em duas dimensotildees os veacutertices de Voronoi de uma amostragem

densa aproximam o ldquoEixo Medialrdquo da amostragem

Por meio deste conceito de Eixo Medial [1016] obtecircm-se paracircmetros

teoacutericos para a definiccedilatildeo de amostragem adequada e baseado neste conceito

o algoritmo apresentado em [10] traz uma soluccedilatildeo praacutetica para o problema

obtendo uma malha poligonal a partir do modelo por pontos

O PointShop 3D [11] software de ediccedilatildeo de modelos por pontos utilizado

nesta pesquisa faz quando necessaacuterio a reconstruccedilatildeo da superfiacutecie Para isso

o PointShop 3D explora a vizinhanccedila local (surfels vizinhos de acordo com suas

posiccedilotildees) Ele usa o conceito de Eixo Medial para justificar seu meacutetodo de

reconstruccedilatildeo da superfiacutecie que na praacutetica apresenta resultados bastante

satisfatoacuterios apesar de teoricamente natildeo ter garantias [16]

37 Visualizaccedilatildeo do modelo

A primeira abordagem para visualizaccedilatildeo de um modelo por pontos foi

construir uma malha de poliacutegonos a partir dos surfels e renderizaacute-la Mas a

construccedilatildeo de malhas a partir dos surfels eacute um processo muito caro e lento

principalmente para modelos complexos Na tentativa de obter uma visualizaccedilatildeo

interativa do modelo por pontos estatildeo sendo estudadas teacutecnicas que utilizam

surfels como primitiva de visualizaccedilatildeo A ideacuteia foi apresentada inicialmente por

Levoy [4]

Figura 3 [21] -Modelo por pontos e sua renderizaccedilatildeo usando Surface Splatting

Modelagem por Pontos 27

O objetivo da renderizaccedilatildeo a partir dos surfels eacute projetaacute-los na tela e

reconstruir as superfiacutecies de forma contiacutenua sem buracos Para que esta

renderizaccedilatildeo seja amplamente utilizada deve-se ter cuidado com o uso de

memoacuteria e com a qualidade da imagem gerada Teacutecnicas recentes como Surface

Splatting [6] faz a renderizaccedilatildeo interativamente com qualidade (Figura 3)

comparada a outros meacutetodos de renderizaccedilatildeo como Image Based Rendering

Em geral a visualizaccedilatildeo do modelo por pontos pode ser dividida nas seguintes

etapas

- warping - projeccedilatildeo em perspectiva de cada ponto do modelo na tela

processo anaacutelogo agrave projeccedilatildeo de veacutertices dos triacircngulos na malha triangular Se

um pixel da tela estiver contido em mais de uma projeccedilatildeo de surfels (vizinhos)

ou seja mais de um ponto cobre este pixel os atributos destes pontos seratildeo

combinados

- shading por ponto - o processo de shading eacute realizado para cada ponto

visiacutevel (os pontos que natildeo satildeo vistos do ponto de vista em questatildeo devem ser

retirados) Qualquer modelo local de shading pode ser aplicado Uma nova

teacutecnica foi proposta em Surface Splatting [6]

- reconstruccedilatildeo da imagem ndash pixels que natildeo ldquoreceberamrdquo projeccedilatildeo de

nenhum ponto formam buracos na imagem Esta imagem deve ser reconstruiacuteda

sem buracos sem aliasing e as superfiacutecies devem ser reconstruiacutedas de forma

contiacutenua e devem ser ldquosuavizadasrdquo (smooth surface)

Os algoritmos de renderizaccedilatildeo por pontos podem tratar a questatildeo de

buracos na visualizaccedilatildeo de trecircs formas [17]

Detecccedilatildeo e preenchimento de buracos no espaccedilo da tela pontos satildeo

projetados na tela e pixels que natildeo receberam pontos satildeo detectados (buracos)

Para preencher estes buracos que natildeo receberam pontos eacute feita uma

interpolaccedilatildeo entre os vizinhos

Geraccedilatildeo de mais pontos a superfiacutecie eacute interpolada no espaccedilo do modelo

para garantir que todos os pixels recebam pelo menos a projeccedilatildeo de um ponto

Splatting um surfel eacute projetado na tela e sua contribuiccedilatildeo eacute espalhada de

forma diferenciada para os pixels vizinhos Agrave medida em que o vizinho se torna

mais distante a contribuiccedilatildeo do surfel diminui

Raumlsaumlnen faz uma analogia do processo de renderizaccedilatildeo proposto em [6]

com o mapeamento de textura [15] No mapeamento de textura para um

determinado pixel da tela satildeo encontrados os pontos da textura que afetam este

Modelagem por Pontos 28

pixel Num sentido inverso em splatting para um determinado surfel (que

representa a textura) satildeo encontrados os pixels da tela que este surfel afeta

38 Ediccedilatildeo do modelo

Ediccedilatildeo de um modelo 3D consiste em operaccedilotildees que modificam

caracteriacutesticas deste modelo como cor textura forma ou criam novos modelos

O software PointShop 3D [11] software de ediccedilatildeo de modelos por pontos 3D

implementa vaacuterias destas operaccedilotildees (ver seccedilatildeo 52)

Para modificar a forma de um modelo ou criar um novo satildeo muito usadas

as operaccedilotildees booleanas que eacute o nosso enfoque nesta dissertaccedilatildeo Na

modelagem CSG (Constructive Solid Geometry) as operaccedilotildees booleanas satildeo

usadas juntamente com primitivas soacutelidas para definir um modelo No entanto

em alguns tipos de modelos estas operaccedilotildees satildeo difiacuteceis como por exemplo

em malhas poligonais Com pontos elas podem ser feitas interativamente [32]

Operaccedilotildees Booleanas com Pontos 29

4 Operaccedilotildees Booleanas com Pontos

Operaccedilotildees booleanas satildeo as operaccedilotildees de uniatildeo interseccedilatildeo e diferenccedila

definidas na teoria matemaacutetica de conjuntos Estas operaccedilotildees satildeo aplicadas em

modelos soacutelidos para alteraacute-los ou para criar novos modelos A Figura 4 abaixo

mostra a criaccedilatildeo de trecircs novos modelos a partir de quatro modelos iniciais

Figura 4 [22] Trecircs modelos novos foram criados a partir dos quatro iniciais (esfera

cilindro dois cubos) O primeiro eacute a esfera menos um cubo em seguida retirou-se outro

cubo e por uacuteltimo retirou-se o cilindro

Estas operaccedilotildees satildeo aplicadas em objetos modelados por pontos em dois

trabalhos no trabalho de Bart Adams e Philip Dutreacute [2] e no trabalho de Pauly

et Al [3] Neste capiacutetulo a seccedilatildeo 41 apresenta a parte comum aos dois

trabalhos e as seccedilotildees 42 e 43 apresentam as particularidades de cada um A

seccedilatildeo 44 discute uma questatildeo natildeo explicitada em nenhum dos dois trabalhos

41 Meacutetodos para realizar operaccedilotildees booleanas em objetos modelados por pontos

A Figura 5 mostra o resultado do meacutetodo de Adams[2] operaccedilotildees de

uniatildeo diferenccedila e interseccedilatildeo de objetos soacutelidos 3D modelados por pontos

Operaccedilotildees Booleanas com Pontos 30

Figura 5 [2]-A partir de dois modelos por pontos uma heacutelice e uma cabeccedila as trecircs operaccedilotildees booleanas satildeo mostradas da esquerda para a direita uniatildeo diferenccedila e interseccedilatildeo

Sejam A e B objetos 3D soacutelidos modelados por pontos Definem-se os

seguintes elementos

Af ndash superfiacutecie (contorno) de A que estaacute fora de B

Ad ndash superfiacutecie (contorno) de A que estaacute dentro de B

Bf ndash superfiacutecie (contorno) de B que estaacute fora de A

Bd ndash superfiacutecie (contorno) de B que estaacute dentro de A

O resultado da operaccedilatildeo booleana entre A e B seraacute um modelo C cuja

superfiacutecie de contorno pode ser determinada pela seguinte regra [2] que aqui

chamamos de Regra 1

Regra 1 A U B Af + Bf

A cap B Ad + Bd

A ndash B Af + Bd (com a orientaccedilatildeo invertida)

B ndash A Ad (com a orientaccedilatildeo invertida) + Bf

A Figura 6 mostra as operaccedilotildees com dois modelos A e B

(a) (b)

Operaccedilotildees Booleanas com Pontos 31

(c) (d)

Figura 6 [22] (a) Dois modelos A e B (b) Posicionados de forma que A tem

uma parte dentro de B eacute mostrado o resultado A U B Af + Bf (c) Resultado de A ndash B Af

+ Bd (d) Resultado de A cap B Ad + Bd

Bart [2] e Pauly [3] apresentam dois meacutetodos para determinar os

elementos acima Estes dois meacutetodos satildeo construiacutedos a partir dos seguintes

conceitos os elementos Af Ad Bf Bd satildeo uma parte da superfiacutecie modelada por

pontos e portanto satildeo conjuntos de surfels Para determinaacute-los eacute necessaacuteria

entatildeo a classificaccedilatildeo de um surfel (que pode se resumir agrave classificaccedilatildeo de um

ponto que eacute o seu centro) de uma superfiacutecie como dentro ou fora de um outro

modelo Os dois meacutetodos utilizam a seguinte regra para esta classificaccedilatildeo aqui

denominada Regra 2

Regra 2 Dado um ponto x qualquer um volume V determinado por uma superfiacutecie

de contorno S uma amostragem P da superfiacutecie S um ponto p є P que eacute a

amostra mais proacutexima a x um vetor np normal agrave S em p e orientado para fora de

S temos que

(x ndash p) np gt 0 x notinV

Ou seja para classificar um ponto em relaccedilatildeo a um modelo verificamos o

produto interno entre a normal em p (surfel mais proacuteximo a x) e o vetor (x - p)

se este produto interno for maior que zero x natildeo pertence ao volume V e seraacute

classificado como fora senatildeo seraacute classificado como dentro De maneira

ainda mais informal se a normal em p apontar para a direccedilatildeo oposta a x x seraacute

classificado como dentro se apontar para x x seraacute classificado como fora

A Figura 7 mostra a Regra 2

Operaccedilotildees Booleanas com Pontos 32

Figura 7 Para classificar o ponto x encontra-se o surfel p (com normal np) mais proacuteximo

a x Se o produto interno entre np e (x ndash p) for maior que zero entatildeo x eacute classificado como

fora senatildeo seraacute classificado como dentro

A validade da Regra 2 eacute discutida na Seccedilatildeo 44 Uma das restriccedilotildees

teoacutericas para garantir-lhe a validade eacute que a superfiacutecie seja suave

Cada um dos dois meacutetodos daacute um tratamento diferente para o uso desta

regra Pauly usa a regra diretamente encontrando o surfel mais proacuteximo a um

ponto e classificando este ponto a partir deste surfel Ele utiliza tambeacutem a

representaccedilatildeo impliacutecita MLS (Moving Least Squares [18]) para casos em que a

Regra 2 poderia falhar e para tratamento de interseccedilotildees [3] Seu meacutetodo vale

para modelos soacutelidos ou natildeo soacutelidos O meacutetodo de Adams e Dutreacute [2] utiliza

octrees [1] criando uma classificaccedilatildeo dos noacutes da octree a partir desta Regra 2

Os pontos satildeo entatildeo classificados de acordo com o noacute da octree que o conteacutem

Este segundo meacutetodo aplica-se somente a modelos soacutelidos Os dois meacutetodos

seratildeo descritos em detalhes nas seccedilotildees abaixo

Como um surfel eacute considerado um disco podemos dizer que surfels de

dois modelos diferentes podem se intersectar A interseccedilatildeo destes dois surfels

corresponde agrave interseccedilatildeo destes dois discos Estes surfels geram problemas

para visualizaccedilatildeo se forem acrescentados ao resultado sem um tratamento

especiacutefico apresentaratildeo artefatos natildeo desejaacuteveis na renderizaccedilatildeo do modelo

resultado (Figura 8) se natildeo forem acrescentados ao resultado deixaratildeo buracos

no modelo

Operaccedilotildees Booleanas com Pontos 33

Figura 8 [2] -Interseccedilatildeo de duas esferas agrave esquerda sem nenhum tratamento de interseccedilatildeo agrave direita apoacutes o tratamento de interseccedilatildeo

Aleacutem disso nem sempre esta interseccedilatildeo forma uma superfiacutecie suave

Esta interseccedilatildeo pode formar uma aresta viva (seccedilatildeo 4223) gerando

problemas tambeacutem para o uso da Regra 2 que eacute vaacutelida apenas para superfiacutecies

suaves Eacute necessaacuterio entatildeo fazer um tratamento desta superfiacutecie de interseccedilatildeo

(formada por surfels originados de diferentes modelos) O tratamento de cada

um dos meacutetodos para este caso seraacute tambeacutem abaixo apresentado

42 Meacutetodo de Adams e Dutreacute

O meacutetodo aplica-se somente a modelos soacutelidos Para determinaccedilatildeo dos

elementos da aqui chamada Regra 1 (seccedilatildeo 41) este meacutetodo utiliza uma octree

[1] que subdivide o espaccedilo do modelo em trecircs fora dentro ou no contorno do

modelo Estes espaccedilos satildeo determinados pela classificaccedilatildeo dos noacutes da octree a

partir da Regra 2 Tambeacutem eacute usado o meacutetodo TINN - Triangle Inequality Nearest

Neighbour [19] - para otimizar a pesquisa dentro do noacute A seguir descrevemos o

modelo usado neste meacutetodo apresentando os dados associados aos pontos o

tipo de distribuiccedilatildeo e o algoritmo que realiza as operaccedilotildees

421 Modelo por Pontos em Adams e Dutreacute

Os surfels neste meacutetodo contecircm as seguintes informaccedilotildees posiccedilatildeo do

surfel xs orientaccedilatildeo do surfel ns e raio de alcance do surfel rs O surfel pode ser

pensado como um disco ortogonal a ns com centro xs e raio rs O raio eacute

escolhido de tal forma que a projeccedilatildeo dos discos no plano da imagem se

sobreponham

Operaccedilotildees Booleanas com Pontos 34

Os objetos representados satildeo soacutelidos A distribuiccedilatildeo dos surfels eacute

uniforme embora o algoritmo natildeo exija esta condiccedilatildeo Para cada soacutelido eacute

definido um rmax = Max rs o raio de alcance do maior surfel pertencente agrave

superfiacutecie do soacutelido Como o raio eacute escolhido de tal forma que a projeccedilatildeo dos

discos no plano da imagem se sobreponham o controle da amostragem eacute

entatildeo ligado agrave renderizaccedilatildeo

422 Algoritmo de Operaccedilotildees Booleanas

Utilizando objetos modelados da forma descrita acima o meacutetodo realiza

operaccedilotildees de uniatildeo interseccedilatildeo e diferenccedila com modelos soacutelidos Supondo dois

modelos soacutelidos S1 e S2 O algoritmo pode ser dividido nas seguintes etapas

Criaccedilatildeo de uma octree para cada modelo Teste Dentro-Fora Tratamento da

interseccedilatildeo Estas etapas satildeo apresentadas nas proacuteximas seccedilotildees

4221 Criaccedilatildeo de uma octree para cada modelo

Eacute criada uma octree [1] para cada modelo A criaccedilatildeo de uma octree eacute feita

da seguinte forma

Gera-se a ldquoCaixa envolventerdquo caixa alinhada com os eixos que conteacutem

todo o modelo A ldquoCaixa envolventerdquo corresponde ao noacute raiz da octree Este noacute

conteacutem inicialmente todos os surfels do modelo Em seguida o noacute raiz eacute

dividido em oito noacutes filhos Os surfels satildeo distribuiacutedos entre estes oito noacutes Cada

um deles caso contenha surfels eacute dividido novamente em 8 filhos e seus surfels

satildeo redistribuiacutedos entre eles Este processo eacute repetido recursivamente enquanto

o nuacutemero de surfels do noacute for maior que zero ou ateacute uma profundidade maacutexima

preacute-definida da octree ser alcanccedilada

Cada noacute da octree deve ser classificado O objetivo desta classificaccedilatildeo eacute

determinar que parte da octree estaacute dentro do modelo e que parte estaacute fora Os

noacutes da octree satildeo entatildeo classificados como ldquodentrordquo ldquoforardquo e ldquocontornordquo

Podemos ilustrar esta classificaccedilatildeo em 2D a Figura 9 mostra uma quadtree

classificada

Operaccedilotildees Booleanas com Pontos 35

Figura 9-Um objeto representado por pontos com suas normais e sua quadtree correspondente classificada os noacutes cinza claro estatildeo dentro do modelo noacutes cinza mais escuro estatildeo fora do modelo e noacutes com cinza intermediaacuterio satildeo noacutes cheios noacutes que conteacutem pontos

O noacutes que conteacutem surfels satildeo classificados como ldquocontornordquo Para

classificar um noacute vazio existem trecircs casos

o noacute vazio tem apenas um vizinho-irmatildeo natildeo vazio

o noacute vazio tem mais de um vizinho-irmatildeo natildeo vazio

o noacute vazio natildeo tem vizinhos-irmatildeos natildeo vazios

No primeiro caso o noacute vazio eacute classificado pelo seu vizinho natildeo vazio No

segundo caso considera-se qualquer um dos vizinhos natildeo vazios No terceiro

caso classifica-se primeiro os noacutes vizinhos e eacute dada a mesma classificaccedilatildeo para

o noacute vazio Como cada noacute natildeo folha de uma octree tem pelo menos um noacute filho

natildeo vazio sempre pode ser feita a classificaccedilatildeo dos noacutes vazios A classificaccedilatildeo

eacute feita da seguinte forma dentre os surfels do vizinho-irmatildeo escolhido encontra-

se o surfel mais proacuteximo ao noacute a ser classificado Se a normal deste surfel

aponta para o noacute vazio a ser classificado entatildeo ele eacute classificado como ldquoforardquo

Se a normal aponta no sentido contraacuterio entatildeo ele eacute classificado como ldquodentrordquo

De maneira mais formal sejam cv e cc coordenadas dos centros do noacute vazio e

do noacute contorno respectivamente Seja s o surfel mais proacuteximo ao noacute vazio e ns

a normal em s Se ( cv - cc )٠ ns gt 0 ( produto interno entre a normal em s e o

vetor cv - cc for maior que zero ) o noacute vazio seraacute classificado como ldquoforardquo

Senatildeo seraacute classificado como ldquodentrordquo

Em geral os noacutes ldquocontornordquo satildeo subdivididos em trecircs partes uma que estaacute

fora do modelo uma que estaacute dentro do modelo e uma terceira que conteacutem os

surfels Esta subdivisatildeo eacute feita por meio da criaccedilatildeo de dois planos paralelos que

Operaccedilotildees Booleanas com Pontos 36

dividem o noacute Para determinar estes planos calcula-se o vetor nm igual agrave

meacutedia das normais dos surfels do noacute nm = sum ns sum ns onde ns eacute a normal de

cada surfel do noacute

Em seguida encontra-se o surfel com maior produto interno entre a sua

normal e a normal meacutedia d1=Max(nm ٠ ns) Este surfel juntamente com a normal

meacutedia define um dos planos Encontra-se tambeacutem o surfel com menor produto

interno entre a sua normal e a normal meacutedia d2=Min(nm ٠ ns) Este surfel

juntamente com a normal meacutedia define o outro plano A Figura 10 mostra a

divisatildeo de um noacute de uma quadtree nas trecircs partes dentro do modelo fora do

modelo e no ldquocontornordquo

Esta subdivisatildeo aplica-se apenas a noacutes que conteacutem surfels cujas direccedilotildees

natildeo variem em mais de 90 graus Caso isso ocorra ele natildeo seraacute subdividido Ou

seja se um noacute possuir dois vetores normais (de dois surfels diferentes) que

formem um acircngulo maior que 90 graus ele natildeo seraacute subdividido

Figura 10 [2] -Divisatildeo de noacute de contorno a parte agrave esquerda estaacute fora do modelo a parte agrave direita estaacute dentro do modelo e a faixa intermediaacuteria conteacutem os surfels

4222 Teste Dentro-Fora

O Teste Dentro-Fora faz a classificaccedilatildeo dos surfels de um modelo como

ldquodentrordquo ou ldquoforardquo de outro modelo Portanto aplicaremos este mesmo teste duas

vezes uma para o modelo S1 em relaccedilatildeo ao modelo S2 e outra para S2 em

relaccedilatildeo a S1 Vamos mostrar o teste Dentro-Fora para o caso da classificaccedilatildeo

dos surfels do modelo S1 em relaccedilatildeo a S2

Operaccedilotildees Booleanas com Pontos 37

No item anterior foram criadas duas octrees uma para o modelo S1 e

outra para o modelo S2 Chamemos de A e B as octrees de S1 e S2

respectivamente Para classificar S1 em relaccedilatildeo a S2 inicialmente eacute feita uma

avaliaccedilatildeo da posiccedilatildeo de A em relaccedilatildeo a B A e B podem estar nas seguintes

situaccedilotildees

- A natildeo intersecta B

- A intersecta apenas noacutes ldquoforardquo de B

- A intersecta apenas noacutes ldquodentrordquo de B

- A intersecta noacutes ldquoforardquo e noacutes ldquodentrordquo de B

Para testar estas situaccedilotildees os noacutes satildeo aumentados de rmax o raio do

maior surfel do modelo soacutelido Isto eacute feito para compensar o fato de que o surfel

natildeo eacute apenas um ponto mas sim considerado como um disco

No primeiro e no segundo caso todos os surfels de A satildeo classificados

como ldquoforardquo No terceiro caso todos os surfels de A satildeo classificados como

ldquodentrordquo

No quarto caso temos que percorrer a octree A Comeccedilando pelo noacute raiz

percorre-se os filhos deste noacute Para cada filho os quatro testes acima satildeo feitos

Se o noacute filho encontra-se em um dos trecircs primeiros casos a classificaccedilatildeo eacute dada

como foi citada acima Se um filho estaacute no quarto caso e natildeo eacute um noacute folha

repete-se recursivamente o mesmo procedimento para seus filhos ateacute encontrar-

se um noacute folha Para um noacute que estaacute no quarto caso e eacute folha percorre-se a lista

de surfels que este noacute conteacutem classificando cada um destes surfels Seja sa um

surfel desta lista Para este caso percorre-se a octree B para classificar sa

Primeiramente encontramos o noacute de B que conteacutem sa Se este noacute de B foi

dividido testa-se de acordo com esta divisatildeo do noacute se o surfel sa estaacute na parte

do noacute que estaacute dentro do modelo ele eacute classificado como ldquodentrordquo se sa estaacute na

parte que estaacute fora do modelo ele eacute classificado como ldquoforardquo se sa estaacute na parte

intermediaacuteria ou se o noacute de B natildeo foi subdividido em planos encontra-se sb que

eacute o surfel pertencente a este noacute de B que estaacute mais proacuteximo de sa sa seraacute

entatildeo classificado de acordo com sb Se ( sa - sb )٠ nb gt 0 sa eacute classificado

como ldquoforardquo senatildeo eacute classificado como ldquodentrordquo Se os discos de sb e sa se

intersectam sa eacute marcado como interseccedilatildeo Para encontrar sb o algoritmo

implementa o meacutetodo TINN ndash Triangle Inequality Nearest Neighbour [19]

Operaccedilotildees Booleanas com Pontos 38

4223 Tratamento da interseccedilatildeo

Os surfels de A que intersectam surfels de B satildeo classificados como

ldquointerseccedilatildeordquo Se eles natildeo forem incluiacutedos no modelo resultado o soacutelido resultado

teraacute buracos Se eles forem incluiacutedos sem algum tratamento eles natildeo

representaratildeo adequadamente a regiatildeo Em geral o surfel sa (um surfel

ldquointerseccedilatildeordquo de A) eacute dividido em dois pelo plano que conteacutem o surfel sb (surfel de

B que sa intersecta) uma parte que estaacute fora de B e outra que estaacute dentro de B

Dependendo da operaccedilatildeo que estaacute sendo realizada vamos querer manter uma

destas partes do surfel sa no modelo resultado Seja xa a posiccedilatildeo do surfel sa e o

surfel sa uma circunferecircncia de centro xa e raio ra igual ao raio de alcance de sa

O plano que conteacutem o surfel sb define uma corda desta circunferecircncia como

mostra a Figura 11 O surfel sa seraacute substituiacutedo por um surfel menor que

ultrapassa esta corda de uma distacircncia e definida pelo usuaacuterio Para cobrir

completamente a interseccedilatildeo seratildeo adicionados surfels menores que cruzam a

corda de interseccedilatildeo

Figura 11 -Interseccedilatildeo do surfel s e do plano que passa pelo surfel t o surfel mais proacuteximo a s O surfel s eacute substituiacutedo por trecircs surfels menores

Operaccedilotildees Booleanas com Pontos 39

O tratamento de interseccedilatildeo proposto por Adams e Dutreacute [2] natildeo soacute evita

os buracos mas tambeacutem cria uma forma de renderizaccedilatildeo de arestas vivas A

colocaccedilatildeo de vaacuterios pequenos surfels na regiatildeo da interseccedilatildeo permite esta

correta renderizaccedilatildeo das ldquoarestas vivasrdquo Desta forma o problema das arestas

vivas eacute resolvido na modelagem (Figura 12) A vantagem de se resolver o caso

na modelagem eacute que natildeo eacute necessaacuterio fazer um tratamento especial na

renderizaccedilatildeo para que mostre esta aresta viva Diferente do tratamento feito

em Pauly (seccedilatildeo 431) que resolve esta questatildeo em tempo de renderizaccedilatildeo

Aleacutem disso o tratamento resolve alguns casos onde a Regra 2 poderia falhar

(veja em Validade da Regra 2-seccedilatildeo 44)

Figura 12 [2] -Agrave direita eacute mostrado o resultado do tratamento de interseccedilatildeo para o caso de Arestas Vivas do objeto agrave esquerda

43 Meacutetodo de Pauly

O meacutetodo aplica-se a objetos soacutelidos e natildeo soacutelidos Os modelos podem ser

obtidos a partir de diferentes entradas como nuvem de pontos irregulares ou por

meio de scanners 3D Cria um modelo hiacutebrido destes objetos usa o modelo por

pontos juntamente com a representaccedilatildeo impliacutecita Moving Least Squares - MLS

[18] Realiza operaccedilotildees booleanas com pontos e utiliza adicionalmente MLS

para alguns casos de classificaccedilatildeo de surfels e no tratamento de interseccedilatildeo A

seguir apresentamos as caracteriacutesticas do modelo por pontos deste meacutetodo e o

algoritmo que realiza as operaccedilotildees

Operaccedilotildees Booleanas com Pontos 40

431 Modelo em Pauly

O modelo eacute uma estrutura hiacutebrida de pontos com a representaccedilatildeo impliacutecita

Moving Least Squares - MLS [18] Esta estrutura eacute usada para fazer operaccedilotildees

booleanas e tambeacutem operaccedilotildees de free-form (natildeo abordadas nesta

dissertaccedilatildeo) Para operaccedilotildees booleanas a representaccedilatildeo MLS permite que a

curva de interseccedilatildeo entre os modelos seja reconstruiacuteda e surfels sejam

colocados nesta curva e em alguns casos de classificaccedilatildeo de surfels mostrados

na seccedilatildeo 432 Para este modelo natildeo existem restriccedilotildees quanto agrave forma do

objeto

Os surfels contecircm informaccedilotildees sobre sua posiccedilatildeo e sua normal Aleacutem

disso surfels podem conter informaccedilotildees adicionais como textura cor

propriedades de materiais

A distribuiccedilatildeo dos surfels eacute natildeo-uniforme e a amostragem eacute

aproximadamente adequada (Veja seccedilatildeo 44)

432 Algoritmo de Operaccedilotildees Booleanas

O algoritmo classifica surfels de um modelo como ldquodentrordquo ou ldquoforardquo de

outro modelo Antes de colocarmos como eacute feita esta classificaccedilatildeo devemos

acrescentar que Pauly estende esta classificaccedilatildeo para modelos que natildeo satildeo

soacutelidos Ou seja mesmo um modelo natildeo soacutelido divide o espaccedilo da cena (espaccedilo

em que se encontra o modelo) em dois sub-espaccedilos dentro ou fora do modelo

Pauly faz esta subdivisatildeo da seguinte forma

Como a superfiacutecie que determina o modelo eacute orientada (conteacutem vetores

normais agrave superfiacutecie que apontam para ldquoforardquo do modelo) Pauly considera que

um modelo natildeo soacutelido divide o espaccedilo em dois sub-espaccedilos um ldquoforardquo do

modelo (os vetores normais apontam para este sub-espaccedilo) e um que estaacute

ldquodentrordquo do modelo (os vetores normais apontam para direccedilatildeo oposta a este sub-

espaccedilo) Por exemplo um plano eacute representado como um conjunto de surfels

contidos num determinado espaccedilo geomeacutetrico plano π Cada surfel conteacutem um

vetor normal direcionado Este modelo divide entatildeo o espaccedilo em dois sub-

espaccedilos o sub-espaccedilo que eacute apontado por estes surfels (considerado ldquoforardquo do

modelo) e o sub-espaccedilo que estaacute na direccedilatildeo oposta (considerado ldquodentrordquo do

modelo) Desta forma ele aplica as classificaccedilotildees de ldquodentrordquo e ldquoforardquo de um

modelo tambeacutem a modelos natildeo soacutelidos A partir desta consideraccedilatildeo as

Operaccedilotildees Booleanas com Pontos 41

operaccedilotildees booleanas satildeo realizadas com os modelos natildeo soacutelidos da mesma

forma que com os modelos soacutelidos

Para determinar esta classificaccedilatildeo (dentro ou fora do modelo) Pauly utiliza

a Regra 2 Para pesquisa do surfel mais proacuteximo o meacutetodo usa a estrutura Kd-

tree [16] e tambeacutem o algoritmo ANN [16] No entanto o meacutetodo apresenta uma

restriccedilatildeo da Regra 2 ela soacute deve ser usada para classificaccedilotildees de pontos x se

a distacircncia x-p for maior que o espaccedilamento da amostragem local ηp em p

Este espaccedilamento da amostragem local ηp em p eacute um caacutelculo aproximado da

distacircncia meacutedia entre os surfels vizinhos a p Se x estaacute muito proacuteximo agrave

superfiacutecie a classificaccedilatildeo pode falhar Neste caso ele calcula o ponto exato de

S mais proacuteximo a x usando a projeccedilatildeo MLS (ldquoMoving Least Squaresrdquo)

Por questotildees de melhoria de desempenho utiliza-se o fato de que sendo

Ωp (x) a classificaccedilatildeo do ponto x em relaccedilatildeo agrave amostragem P tem-se que Ωp (x)

= Ωp (xrsquo) para todos os pontos de xrsquo que estatildeo dentro da esfera de centro x e

raio igual a x-p - ηp (onde p eacute o surfel mais proacuteximo e ηp eacute o espaccedilamento

local da amostragem em p acima citado) Ou seja sendo x um ponto qualquer p

o surfel mais proacuteximo a x ηp eacute o espaccedilamento local da amostragem em p se

desenharmos uma esfera com centro x e raio igual a x-p - ηp temos que

todos os pontos xrsquo que estatildeo dentro da esfera teratildeo a mesma classificaccedilatildeo de x

Desta forma o nuacutemero de vezes que a classificaccedilatildeo eacute feita (pesquisando-se o

surfel mais proacuteximo ao ponto e usando a Regra 2) diminui em ateacute 90 Assim

em geral a classificaccedilatildeo de um surfel eacute obtida a partir do seu surfel vizinho

Dados

S1 a superfiacutecie MLS de contorno que define o modelo A

S2 a superfiacutecie MLS de contorno que define o modelo B

P1 o conjunto de surfels que representa a superfiacutecie S1

P2 o conjunto de surfels que representa a superfiacutecie S2

Ωp1 (x) a classificaccedilatildeo do ponto p em relaccedilatildeo a uma amostragem P1

Q1 o subconjunto de P1 que vai compor o resultado

Ωp2 (x) a classificaccedilatildeo do ponto p em relaccedilatildeo a uma amostragem P2

Q2 o subconjunto de P2 que vai compor o resultado

Os conjuntos Q1 e Q2 satildeo obtidos por meio da Tabela 1 mostrada abaixo

Operaccedilotildees Booleanas com Pontos 42

Tabela 1 Classificaccedilatildeo para operaccedilotildees booleanas

Para o tratamento de interseccedilatildeo neste meacutetodo satildeo computados pontos

que caem exatamente na curva de interseccedilatildeo e estes satildeo acrescentados ao

modelo resultado Estes pontos satildeo determinados de forma que a densidade da

amostragem vai crescendo agrave medida que os surfels se aproximam da curva de

interseccedilatildeo e convergem para este ponto de interseccedilatildeo como mostra a Figura

13

(a) (b) (c)

Figura 13 - Os novos surfels satildeo colocados exatamente na curva de interseccedilatildeo

e convergem para o ponto de interseccedilatildeo

A Figura 14 mostra o processo de encontrar os surfels que caem nesta

curva de interseccedilatildeo Inicialmente satildeo encontrados todos os pontos de Q1 e Q2

que estatildeo proacuteximos agrave curva de interseccedilatildeo por meio da funccedilatildeo de distacircncia do

operador de projeccedilatildeo MLS Em seguida procura-se todos os pares mais

proacuteximos (q1 є Q1 q2 є Q2 ) e computa-se o ponto q na curva de interseccedilatildeo da

seguinte forma (veja a Figura 14)Seja r o ponto na linha de interseccedilatildeo dos dois

planos tangentes em q1 e q2 e que estaacute mais proacuteximo a estes dois pontos isto eacute

que minimiza a distacircncia ||r-q1|| + ||r-q2|| r eacute a primeira aproximaccedilatildeo de q e agora

pode ser projetado sobre S1 e S2 para obter dois novos pontos de partida q1rsquo e q2

rsquo

para a iteraccedilatildeo Este procedimento pode ser repetido iterativamente ateacute que os

pontos q1 e q2 convirjam ao ponto q na curva de interseccedilatildeo Normalmente este

processo requer menos de trecircs iteraccedilotildees

Operaccedilotildees Booleanas com Pontos 43

(a) (b)

(c)

Figura 14 (a) Suponhamos a reta que eacute a interseccedilatildeo do plano tangente a S1 em q1 e o

plano tangente a S2 em q2 O ponto r eacute o ponto desta reta que estaacute mais proacuteximo a q1 e

q2 (b) r eacute projetado sobre S1 e S2 obtendo-se q1acute e q2acute dois novos pontos de partida

para nova iteraccedilatildeo (c) A nova iteraccedilatildeo gera r que eacute uma aproximaccedilatildeo melhor de q

Pauly faz o tratamento de arestas vivas em tempo de renderizaccedilatildeo Ele

faz uma alteraccedilatildeo no renderizador Marca os surfels de interseccedilatildeo e ao

renderizaacute-los satildeo cortados para gerar uma aresta viva

44 Validade da Regra 2

Os dois meacutetodos analisados nesta dissertaccedilatildeo utilizam a seguinte regra

para a classificaccedilatildeo de um surfel

Regra 2 dado um volume V determinado por uma superfiacutecie de contorno

S uma amostragem P da superfiacutecie S um ponto x qualquer um ponto p є P que

eacute a amostra mais proacutexima a x um vetor ny normal a S em p e orientado para

fora de S temos que (x ndash p) np gt 0 x notinV

Em [16] eacute colocado que esta regra eacute tirada da seguinte propriedade da

geometria diferencial (aqui chamada Propriedade 1)

Propriedade 1 Dado um volume V determinado por uma superfiacutecie de

contorno S contiacutenua e duplamente diferenciaacutevel um ponto x qualquer um ponto

Operaccedilotildees Booleanas com Pontos 44

y є S que eacute o ponto de S mais proacuteximo a x um vetor ny normal a S em y e

orientado para fora de S temos que (x ndash y) ny gt 0 x notinV

A Figura 15 ilustra esta propriedade

Figura 15 Para verificar se o ponto x estaacute fora de um contorno C encontra-se o ponto y

de C Se o produto interno entre a normal em y e o vetor que liga y a x for maior que

zero entatildeo x estaacute fora de C senatildeo estaacute dentro de C

Pauly assume que tendo uma amostragem P da superfiacutecie S podemos

usar a Propriedade 1 substituindo y por p o surfel mais proacuteximo ao ponto x (x ndash

p) np gt 0 x notinV (Regra 2) Esta amostragem P em seu trabalho eacute

(aproximadamente) uma ldquoamostragem adequadardquo Tambeacutem seu tratamento de

interseccedilatildeo cria uma aproximaccedilatildeo dela (seccedilatildeo 43) Empiricamente a

ldquodiscretizaccedilatildeo da propriedaderdquo eacute vaacutelida a partir desta suposiccedilatildeo Mas isso natildeo foi

demonstrado teoricamente em seu trabalho

Pauly coloca em [16] que natildeo existe ainda uma teoria matemaacutetica rigorosa

de amostragem anaacuteloga a teoria de Fourier para superfiacutecies discretas

A melhor aproximaccedilatildeo teoacuterica para esta aacuterea eacute o uso do Eixo Medial que

foi colocado em [10] Vamos descrever este trabalho brevemente nesta seccedilatildeo

Este trabalho apresenta um algoritmo de reconstruccedilatildeo de superfiacutecie que parte de

uma amostragem adequada (abaixo definida) de pontos e obteacutem uma malha

que eacute topologicamente equivalente agrave superfiacutecie do objeto e agrave medida que a

densidade da amostragem cresce a saiacuteda converge para esta superfiacutecie

Para definir amostragem adequada o trabalho parte do conceito de Eixo

Medial

Operaccedilotildees Booleanas com Pontos 45

ldquoEixo Medialrdquo de uma superfiacutecie 2D posicionada no R3 eacute o conjunto

(fechado) de pontos pi para os quais buscando-se o ponto da superfiacutecie que

estaacute mais proacuteximo a pi mais de um ponto pertencentes a esta superfiacutecie satildeo

encontrados A Figura 16 abaixo ilustra o Eixo Medial em 2D

Figura 16 [10] As curvas de cor mais clara satildeo o Eixo Medial da curva em preto

Em duas dimensotildees os veacutertices de Voronoi de uma amostragem densa

aproximam o ldquoEixo Medialrdquo da amostragem (mas esta propriedade natildeo se

estende a 3D) A Figura 17 mostra o Eixo Medial em 3D

Figura 17 [10] Em 3D geralmente o Eixo Medial eacute uma superfiacutecie 2D (em cor mais

clara) Aqui o quadrado eacute o Eixo Medial da superfiacutecie transparente que o contorna

Podemos definir agora a amostragem adequada da seguinte forma

Supondo uma superfiacutecie suave que quer dizer uma 2-manifold duplamente

diferenciaacutevel posicionada no R3 uma ldquoamostragem adequadardquo desta superfiacutecie eacute

aquela na qual a densidade da amostragem eacute (pelo menos) inversamente

proporcional agrave distacircncia ao ldquoEixo Medialrdquo A Figura 18 mostra uma amostragem

adequada

Operaccedilotildees Booleanas com Pontos 46

Figura 18 [10] A figura mostra o diagrama de Voronoi de uma amostragem de pontos S

Da mesma forma que o a amostragem aproxima a curva os veacutertices de Voronoi

aproximam o Eixo Medial

Na praacutetica na reconstruccedilatildeo da superfiacutecie uma aproximaccedilatildeo deste ldquoEixo

Medialrdquo eacute computada (devido agrave dificuldade de computaacute-lo exatamente e em

alguns casos ateacute impossibilidade)

Melhorias Propostas 47

5 Melhorias Propostas

No capiacutetulo 4 apresentamos dois meacutetodos que realizam operaccedilotildees

booleanas em modelos por pontos o meacutetodo de Adams e Dutreacute [2] e o meacutetodo

de Pauly[3] Para esta dissertaccedilatildeo usamos o meacutetodo de Adams e Dutreacute [2] e

propomos as seguintes melhorias

- Alteramos o momento em que eacute feita a classificaccedilatildeo da octree Fazemos

esta classificaccedilatildeo durante a sua criaccedilatildeo Os noacutes filhos de um noacute pai P qualquer

satildeo classificados logo apoacutes a criaccedilatildeo de todos estes filhos de P

independentemente do restante da octree ter sido criada Isso pode ser feito

porque a octree eacute construiacuteda na ordem raiz-esquerda-direita (preorder

traversal) e portanto apoacutes todos os filhos de um noacute pai serem criados a parte

necessaacuteria da octree para a classificaccedilatildeo destes filhos jaacute estaacute criada

- A classificaccedilatildeo da octree eacute otimizada classificando-se os cantos dos seus

noacutes como dentro ou fora do modelo Na classificaccedilatildeo de um noacute n1 a partir de seu

vizinho n2 se os cantos que satildeo comuns a n1 e n2 tiverem a mesma

classificaccedilatildeo esta seraacute dada ao noacute Assim diminuiacutemos o nuacutemero de pesquisas

pelo surfel mais proacuteximo que eacute a parte criacutetica da classificaccedilatildeo dos noacutes da octree

em termos de tempo de processamento

- Acrescentamos um valor miacutenimo (maior que zero) para o nuacutemero de

surfels contidos em um noacute que eacute uma das condiccedilotildees de parada na criaccedilatildeo da

octree Verificamos que desta forma diminui-se a chance de erro na classificaccedilatildeo

de partes criacuteticas como ldquoarestas vivasrdquo

Uma comparaccedilatildeo entre a nossa implementaccedilatildeo e a de Pauly tambeacutem seraacute

feita no capiacutetulo 6

51 Descriccedilatildeo do algoritmo

O algoritmo implementado para esta dissertaccedilatildeo baseado no meacutetodo de

Adams e Dutreacute [2] pode ser dividido nas seguintes partes Criaccedilatildeo e

classificaccedilatildeo de uma octree para cada modelo Teste DentroFora Criaccedilatildeo do

modelo resultado Natildeo foi implementado tratamento especial algum de

interseccedilatildeo para o nosso plugin As proacuteximas seccedilotildees apresentam estas partes

Melhorias Propostas 48

511 Criaccedilatildeo e classificaccedilatildeo de uma octree para cada modelo

As ideacuteias do algoritmo satildeo aqui ilustradas em 2D mas a extensatildeo delas

para 3D eacute feita facilmente

Para cada modelo a octree eacute criada e classificada da seguinte forma

Figura 19-Quadtree classificada Os noacutes mais escuros estatildeo fora do modelo os mais claros dentro e os em tom intermediaacuterio satildeo noacutes de contorno

Gera-se uma ldquocaixa envolventerdquo do modelo contendo todos os surfels e

cria-se o noacute raiz da octree que corresponde a esta ldquocaixa envolventerdquo Este noacute

raiz eacute subdividido em oito filhos e seus surfels satildeo distribuiacutedos entre eles Ao

inveacutes de testarmos os valores de xy e z para cada surfel a fim de determinar

para qual filho ele iraacute utilizamos listas auxiliares Primeiro os surfels satildeo

subdivididos em dois grupos pelos valores de x e armazenados em uma lista

auxiliar Em seguida cada uma das listas eacute subdividida pelo valor de y e as

quatro listas obtidas seratildeo subdivididas pelo valor de z Ao final teremos 8 listas

de surfels cada uma delas pertencente a um filho

Cada noacute seraacute entatildeo novamente subdividido enquanto contiver um nuacutemero

de surfels gt nmin (valor preacute-definido) ou enquanto a profundidade da aacutervore lt pmax

(valor preacute-definido) Na figura 19 pmax = 3 e nmin = 3

Melhorias Propostas 49

Figura 20-O noacute cheio eacute dividido em trecircs partes agrave esquerda a regiatildeo estaacute dentro do modelo agrave direita estaacute fora e entre as duas linhas que dividem o noacute estaacute a regiatildeo que conteacutem os surfels

Os noacutes cheios recebem um tratamento especial Eles satildeo subdivididos em

trecircs partes da seguinte forma uma que estaacute fora do modelo outra que estaacute

dentro e uma que conteacutem os surfels Esta subdivisatildeo eacute feita por meio da criaccedilatildeo

de dois planos paralelos que dividem o noacute Para determinar estes planos

calcula-se o vetor nm igual agrave meacutedia das normais dos surfels do noacute nm = sum ns

sum ns onde ns eacute a normal de cada surfel do noacute Em seguida encontra-se o

surfel com maior produto interno entre a sua normal e a normal meacutedia

d1=Max(nm ٠ ns) Este surfel juntamente com a normal meacutedia define um dos

planos Encontra-se tambeacutem o surfel com menor produto interno entre a sua

normal e a normal meacutedia d2=Min (nm ٠ ns) Este surfel juntamente com a normal

meacutedia define o outro plano (Figura 20) Se o noacute conteacutem surfels de superfiacutecies de

orientaccedilotildees diferentes ele natildeo seraacute subdividido ou seja os planos coincidiratildeo

com os planos que delimitam o proacuteprio noacute Este teste foi implementado da

seguinte forma escolhe-se um surfel qualquer do noacute Calcula-se o produto

interno entre a normal deste surfel e as outras normais dos outros surfels deste

noacute Se algum produto interno for menor que zero este noacute natildeo seraacute subdividido

Apoacutes a etapa de subdivisatildeo classificam-se os oito cantos deste noacute como

dentro ou fora do modelo por meio da classificaccedilatildeo de um ponto que

descreveremos na sub-seccedilatildeo 5111

Melhorias Propostas 50

a b

c d

Figura 21-O noacute a eacute classificado pelo noacute c o noacute d tambeacutem eacute classificado pelo noacute c a classificaccedilatildeo do noacute a eacute propagada para o noacute b

Jaacute os noacutes vazios da octree seratildeo classificados como ldquodentrordquo ou ldquoforardquo do

modelo da seguinte forma cada noacute folha vazio eacute classificado a partir de um de

seus irmatildeos vizinhos adjacentes Se ele possuir um vizinho adjacente cheio ele

seraacute classificado por este vizinho se natildeo possuir os vizinhos adjacentes seratildeo

classificados primeiro e ele teraacute esta mesma classificaccedilatildeo (Figura 21) Como tem

que existir sempre pelo menos um noacute cheio entre os filhos de um noacute pai entatildeo

sempre esta classificaccedilatildeo poderaacute ser feita Com a classificaccedilatildeo de todos os

filhos tem-se tambeacutem a classificaccedilatildeo dos cantos do noacute pai

Mf03c003fmx a b

Figura 22-Os cantos a e b do noacute cheio possuem a mesma classificaccedilatildeo fora do modelo Esta classificaccedilatildeo foi dada ao noacute vazio adjacente

Melhorias Propostas 51

Para classificar um noacute vazio por meio de um noacute cheio verificam-se os

cantos comuns destes dois noacutes se todos os cantos tiverem a mesma

classificaccedilatildeo esta seraacute dada ao noacute vazio (Figura 22) Se houver classificaccedilotildees

diferentes escolhe-se o surfel do noacute cheio mais proacuteximo ao noacute vazio faz-se o

produto interno entre a normal deste surfel e o vetor que liga o centro do noacute

cheio ao centro do noacute vazio (ou o vetor que liga o surfel ao centro do noacute vazio)

Se o produto interno for maior que zero o noacute eacute classificado como ldquoforardquo senatildeo eacute

classificado como ldquodentrordquo Para encontrar o surfel (pertencente a um noacute cheio)

mais proacuteximo ao noacute vazio existem dois casos

- O noacute cheio eacute folha percorre-se toda a lista de surfels e escolhe o surfel

mais proacuteximo da fronteira entre o noacute cheio e o vazio

- O noacute cheio natildeo eacute um noacute folha percorrem-se os filhos do noacute cheio ou seja

esta pesquisa eacute feita descendo na octree a partir do noacute cheio procurando o

surfel mais proacuteximo agrave fronteira do pai com o noacute vazio a ser classificado

Classificando o centro do noacute vazio todo o noacute deve ter a mesma

classificaccedilatildeo pois este noacute natildeo conteacutem surfels Para encontrar o surfel do noacute

vazio mais proacuteximo da fronteira entre o noacute cheio e o vazio basta testar o valor da

coordenada se a fronteira eacute o lado direito do noacute cheio escolhe-se o surfel com

maior coordenada lsquoxrsquo se eacute o lado esquerdo escolhe-se o surfel com menor lsquoxrsquo

se lado superior surfel com maior lsquoyrsquo etc A seguir apresentamos a classificaccedilatildeo

de um ponto qualquer pertencente a um noacute cheio

Figura 23- Quadtree classificada

Melhorias Propostas 52

5111 Classificaccedilatildeo de um ponto de um noacute cheio

Figura 24 [2] A normal n eacute a normal meacutedia e os surfels s1 e s2 juntamente com a normal

n definem as retas que dividem o noacute O ponto a estaacute fora do modelo e o ponto b estaacute

dentro do modelo

Para um ponto localizado dentro do noacute faz-se o seguinte teste se o noacute foi

dividido testa-se de acordo com a divisatildeo do noacute se o ponto estaacute na parte do noacute

que estaacute dentro do modelo ele eacute classificado como ldquodentrordquo se o ponto estaacute na

parte que estaacute fora do modelo ele eacute classificado como ldquoforardquo (Figura 24) se o

ponto estaacute na parte que conteacutem os surfels encontra-se o surfel s pertencente ao

noacute mais proacuteximo do ponto e o classifica de acordo com s seja ns a normal em s

cs a coordenada de s cp a coordenada do ponto Se (cp - cs )٠ ns gt 0 o ponto

seraacute classificado como ldquoforardquo Senatildeo seraacute classificado como ldquodentrordquo

Se o noacute natildeo foi dividido em planos esta classificaccedilatildeo a partir do surfel

mais proacuteximo seraacute sempre feita

512 Teste DentroFora

Melhorias Propostas 53

Figura 25-Duas circunferecircncias e suas quadtrees correspondentes

O Teste DentroFora classifica os surfels de um modelo como dentro ou

fora de outro modelo ou na sua interseccedilatildeo Este teste foi aqui implementado

exatamente como foi proposto em Adams e Dutreacute [2] exceto que natildeo foi

implementado o meacutetodo TINN - Triangle Inequality Nearest Neighbour [19]

Cada octree eacute percorrida verificando-se se os seus noacutes ou surfels estatildeo dentro

fora ou no contorno do outro modelo (Figura 25) Sejam A e B duas octrees e

queremos classificar a octree A As duas octrees (AB) satildeo percorridas partindo

da raiz

Para cada noacute de A existem quatro casos (Figura 26) Para testar estas

situaccedilotildees os boxes dos noacutes satildeo aumentados de rmax o raio do maior surfel do

modelo Isto eacute feito para compensar o fato de que o surfel natildeo eacute apenas um

ponto mas sim considerado como um disco

Os quatro casos satildeo

Se o noacute de A natildeo intersecta B entatildeo todos os surfels deste noacute satildeo

classificados como fora

Se o noacute de A intersecta apenas noacutes de B que estatildeo fora do modelo

todos os surfels deste noacute satildeo fora

Se o noacute de A intersecta apenas noacutes de B que estatildeo dentro do modelo

todos os surfels deste noacute satildeo dentro

Melhorias Propostas 54

Se o noacute de A intersecta noacutes de B que estatildeo dentro e tambeacutem noacutes de B

que estatildeo fora testa-se se este noacute de A eacute ou natildeo folha Se natildeo for folha

percorre-se os filhos deste noacute de A ateacute encontrar um noacute folha cheio que

intersecta B Para cada surfel sa deste noacute folha de A encontra-se o surfel de B

mais proacuteximo e classifica-se a coordenada de sa da forma apresentada na seccedilatildeo

5111 Seja sb o surfel usado na classificaccedilatildeo de sa Se os discos de sb e sa

se intersectam sa eacute classificado como ldquointerseccedilatildeordquo

(a) (b)

(c) (d)

Figura 26- a modelos natildeo se intersectam b modelo intersecta noacutes fora c modelo intersecta apenas noacutes dentro d modelo intersecta noacutes dentro e noacutes fora

513 Criaccedilatildeo do modelo resultado

Um novo modelo eacute criado com os seguintes surfels (de acordo com a

operaccedilatildeo booleana escolhida pelo usuaacuterio - veja Regra 1 da seccedilatildeo 41)

Uniatildeo - surfels de A que estatildeo fora de B + surfels de B que estatildeo fora de A

Melhorias Propostas 55

Interseccedilatildeo - surfels de A que estatildeo dentro de B + surfels de B que estatildeo

dentro de A

Diferenccedila A-B - surfels de A que estatildeo fora de B + surfels de B que estatildeo

dentro de A (com orientaccedilatildeo invertida)

Como natildeo foi implementado tratamento especial algum de interseccedilatildeo para

o nosso plugin os surfels que se intersectam satildeo mantidos no modelo resultado

final sem modificaccedilotildees

Descrito o algoritmo vejamos a seguir a sua implementaccedilatildeo

52 Implementaccedilatildeo

Este algoritmo foi implementado na forma de um plugin para o software

PointShop 3D [11] Este plugin foi desenvolvido na linguagem C e no sistema

operacional Windows

A escolha deste tipo de implementaccedilatildeo permitiu-nos usar o software

PointShop para os testes do algoritmo Estes testes foram feitos com os modelos

disponibilizados para o PointShop [11] Nesta seccedilatildeo apresentaremos o software

PointShop e as principais estruturas de dados usadas em nosso plugin

O Pointshop eacute um software aberto com seu coacutedigo disponiacutevel e preparado

para trabalhar com plugins Eacute um software de ediccedilatildeo de modelos 3D por pontos

Ele permite aleacutem de visualizar o modelo alterar as suas caracteriacutesticas como

cor brilho e fazer mapeamento de textura iluminaccedilatildeo filtragem (Figura 27)

Melhorias Propostas 56

Figura 27-Software PointShop 3D com dois modelos carregados na sua cena

Aleacutem disso pode-se criar uma cena com vaacuterios modelos e visualizaacute-los de

qualquer ponto de vista Implementa o virtual trackball para rotacionaacute-los e

transladaacute-los Usa uma iluminaccedilatildeo simples direcional A sua arquitetura eacute

extensiacutevel permite que o usuaacuterio adicione seus proacuteprios componentes ao

sistema Possui trecircs tipos de componentes

ldquoToolsrdquo fornece funcionalidades para ediccedilatildeo interativa de superfiacutecie Satildeo

disponibilizados na ldquotoolbarrdquo

Plugins fornece funcionalidades para processar em um soacute passo

modelos ou partes deles selecionadas Satildeo disponibilizados no menu ldquoPluginsrdquo

Renderes fornece funcionalidades de display para os modelos

Para esta dissertaccedilatildeo foi escolhida a construccedilatildeo do componente Plugin

por adequar-se agrave nossa proposta e ser a mais simples de ser construiacuteda O

PointShop [11] jaacute conteacutem uma tool que executa operaccedilotildees booleanas e

deformaccedilatildeo free-form sobre os modelos carregados na cena usando o meacutetodo

de Pauly [3] apresentado no capiacutetulo 4 O nosso plugin Operaccedilotildees Booleanas

implementa o algoritmo descrito na seccedilatildeo anterior baseado na proposta de

Melhorias Propostas 57

Adams e Dutreacute [2] Uma comparaccedilatildeo entre o nosso plugin e a tool de Pauly [3] eacute

feita no capiacutetulo 6

Figura 28-Menu do PointShop com o plugin e as opccedilotildees para operaccedilotildees booleanas

Para se executar o plugin o usuaacuterio precisa carregar dois modelos na

cena do PointShop acionar o plugin informando a operaccedilatildeo que seraacute executada

O plugin executaraacute o algoritmo acima proposto e carregaraacute o resultado na cena

do Pointshop retirando os modelos anteriores

521 Estruturas de Dados

Como vimos o software PointShop [11] trabalha com modelos por pontos

Um modelo deste software descrito na seccedilatildeo 42 conteacutem todas as informaccedilotildees

que o algoritmo proposto em Bart [2] necessita Abaixo relacionamos as

Melhorias Propostas 58

principais estruturas de dados do PointShop usadas no plugin e as principais

estruturas de dados do nosso plugin

As principais classes do PointShop usadas no plugin satildeo

Classe Scene

Classe Objects

Classe SurfelColections

Classe Surfel

Classe StatusBar

Classe Transformer

A hierarquia de dados eacute a seguinte a Scene conteacutem vaacuterios Objects os

quais conteacutem SurfelColections Cada SurfelColections conteacutem Surfels que

suportam uma ou mais propriedades tais como cor difusa cor especular

Classe Scene Classe que representa uma cena que conteacutem modelos

Classe Object Um modelo eacute representado pela classe Object que

conteacutem uma SurfelCollection e as matrizes de transformaccedilatildeo para rotaccedilatildeo

escala e translaccedilatildeo Cada Object eacute identificado pelo seu nome que eacute uacutenico na

Scene O meacutetodo getUniqueName retorna um nome uacutenico Cada Object tem sua

proacutepria matriz de transformaccedilatildeo que pode ser modificada com setRotation

rotate setPosition translate setScale e scale Objects podem ser copiados com

copy Objects consiste em um conjunto de surfels os quais podem ser

recuperados pela getSurfelCollection O Object pode ser ativado com

setActiveObject e recuperado com getActiveObject

Objects podem ser adicionados ou removidos com addObject e

removeObject Os Objects podem ser obtidos pela getFirstObject e

getNextObject

Classe SurfelCollection representa o conjunto de surfels de um modelo

Cada surfelcollection consiste em um conjunto de surfels (SurfelInterface) de

tamanho obtido por getNofSurfels Os surfels podem ser recuperados com

getFirstSurfel getCurrentSurfel e getNextSurfel

A SurfelCollection conteacutem um PropertyDescriptor e uma SurfelList

A SurfelList eacute uma lista duplamente encadeada de surfels Possui os

atributos firstSurfel lastSurfel currentSurfel que satildeo ponteiros para uma

SurfelInterface nSurfels que eacute o nuacutemero de Surfels

A SurfelInterface define a API para os surfels que satildeo os menores

elementos que compotildeem um Object Podem ser considerados como pontos com

uma normal que define a orientaccedilatildeo do ciacuterculo (ou elipse) que seraacute desenhado

Melhorias Propostas 59

tatildeo logo o surfel seja renderizado Tem como atributos dois ponteiros (next e

prev) para SurfelInterface

PropertyDescriptor consiste em ateacute 32 valores descrevendo quais as

propriedades a SurfelInterface suporta

Classe Surfel classe que representa o surfel

Classe StatusBar classe que imprime mensagens na tela Os plugins

podem mandar mensagens para o usuaacuterio pela StatusBar

Mensagens texto podem ser impressas com showMessage O progresso

de uma operaccedilatildeo pode ser indicado com setProgress ou resetProgress

Classe Transformer representa a transformaccedilatildeo entre sistemas de

coordenadas Esta classe fornece meacutetodos para transformar pontos e vetores

entre os diferentes sistemas de coordenadas do Pointshop

A seguir apresentamos as principais estruturas de dados do plugin

Operaccedilotildees Booleanas

As principais estruturas de dados do plugin satildeo boundingbox tree no

lista_surfel surfel

Boundingbox conteacutem dois pontos 3D que definem uma caixa que conteacutem

o modelo um ponto com menores coordenadas xy e z e outro ponto com

maiores xyz

Tree representa a octree do modelo Cada registro conteacutem um ponteiro

para um noacute e oito ponteiros para as 8 octrees filhas

No representa um noacute da octree Conteacutem os seguintes dados

- localizaccedilatildeo do noacute que eacute o canto inferior esquerdo do noacute

- lista_surfel (preenchida apenas para noacutes folha cheios)

- quantidade de surfels do noacute

- classificaccedilatildeo do noacute como dentro fora ou contorno

- classificaccedilatildeo do noacute em relaccedilatildeo a outro modelo

- indica se o noacute eacute folha ou natildeo

- vetor que eacute a meacutedia das normais dos surfels do noacute

- ponto que eacute a meacutedia das localizaccedilotildees dos surfels do noacute

- surfel que tem (entre todos os surfels do noacute) o maior produto interno

entre a sua normal e a normal meacutedia

- surfel que tem (entre todos os surfels do noacute) o menor produto interno

entre a sua normal e a normal meacutedia

- produto interno maacuteximo e miacutenimo entre as normais dos surfels do noacute e a

normal meacutedia deste noacute

Melhorias Propostas 60

- indica se o noacute conteacutem surfels com normais em sentido oposto (produto

interno entre elas eacute menor que zero)

- classificaccedilatildeo dos oito cantos do noacute

lista_surfels lista em que cada registro conteacutem um apontador para um

surfel e um apontador para o proacuteximo registro

surfel representa o surfel da octree Conteacutem a classificaccedilatildeo em relaccedilatildeo a

outro modelo e um ponteiro para o surfel do Poinshop

Resultados 61

6 Resultados

Neste capiacutetulo apresentamos os testes realizados com o plugin para o

PointShop implementado para esta dissertaccedilatildeo a comparaccedilatildeo deste plugin com

o plugin de Pauly [3] e a comparaccedilatildeo entre o meacutetodo de Adams e Dutreacute [2] e o

meacutetodo de Pauly [3]

61 Testes

Os testes foram feitos em um PC x86 Family 6 261600 KB de RAM sem

placa graacutefica sistema operacional Windows 2000 O plugin foi implementado na

linguagem C

Os modelos usados para os testes satildeo modelos disponibilizados no

PointShop [11] Vale lembrar que o meacutetodo implementado em nosso plugin eacute

restrito a modelos soacutelidos e portanto foram usados apenas estes modelos

soacutelidos para os testes

O modelo na Figura 29 que eacute um dos modelos disponibilizados no

PointShop [11] foi usado para mostrar o resultado das operaccedilotildees realizadas

pelo plugin implementado nesta dissertaccedilatildeo O modelo Igea eacute um modelo soacutelido

que conteacutem 134345 surfels

Resultados 62

Figura 29-Modelo do PointShop Igea

Para realizar as operaccedilotildees este modelo foi carregado na cena do

PointShop duas vezes e um deles colorido de vermelho As Figuras 30 31 32

mostram o resultado da operaccedilatildeo de uniatildeo interseccedilatildeo e diferenccedila

respectivamente Os nuacutemeros de surfels dos modelos resultantes satildeo mostrados

na Tabela 2

Resultados 63

Figura 30-Resultado da uniatildeo de duas Igeas

Figura 31-Resultado da interseccedilatildeo de duas Igeas

Resultados 64

Figura 32-Resultado da diferenccedila entre duas Igeas

Tabela 2-Nuacutemero de surfels dos modelos resultantes

Observamos que o nuacutemero de surfels dos modelos resultantes estaacute

coerente com as figuras dos seus modelos

Para avaliar o tempo de processamento das operaccedilotildees foram realizados

vaacuterios testes com o objetivo de obter uma meacutedia dos tempos de realizaccedilatildeo de

cada operaccedilatildeo Tambeacutem foram armazenados os tempos da criaccedilatildeo das duas

octrees e da classificaccedilatildeo de todos os surfels dos dois objetos (como dentro ou

fora do outro modelo) Estes testes foram feitos usando o modelo Igea A meacutedia

dos tempos de processamento foi calculada e os resultados satildeo mostrados na

Tabela 3 Verificamos que o maior tempo gasto eacute para criaccedilatildeo das octrees

Verificamos tambeacutem que este resultado apresentado eacute similar ao resultado

verificado empiricamente com o plugin de Pauly [3] Os tempos gastos para

realizar as operaccedilotildees satildeo similares e o maior tempo gasto no plugin de Pauly

tambeacutem eacute para inicializaccedilatildeo de suas estruturas de dados que incluem a kd-tree

Operaccedilatildeo Nuacutemero de surfels do modelo resultado

Uniatildeo 189715

Interseccedilatildeo 72225

Diferenccedila 134552

Resultados 65

Operaccedilatildeo Criaccedilatildeo das

Octrees (seg)

Classificaccedilatildeo

(seg)

Criaccedilatildeo do

resultado (seg)

Total (seg)

Uniatildeo 39375 1324 18925 7154

Interseccedilatildeo 38585 1585 09547 63982

Diferenccedila 399875 1504 1729 729475

Tabela 3- Meacutedia dos tempos de processamento para as operaccedilotildees com duas Igeas

Com o objetivo de expor melhor os resultados deste trabalho

apresentamos abaixo mais um teste das operaccedilotildees booleanas usando o nosso

plugin Os modelos usados para este segundo teste satildeo o Max Planck e o Male

ambos modelos soacutelidos disponibilizados no PointShop Estes modelos satildeo

mostrados nas figura 33 e 34

O primeiro Max Planck conteacutem 52809 surfels

Figura 33-Modelo do PointShop MaxPlanck

O segundo modelo abaixo Male conteacutem 148138 surfels

Resultados 66

Figura 34-Modelo do PointShop Male

As Figuras 353637 mostram o resultado da operaccedilatildeo de uniatildeo interseccedilatildeo

e diferenccedila respectivamente usando os dois modelos acima Podemos observar

pela figura 35 que o resultado da operaccedilatildeo de diferenccedila neste caso gerou um

modelo resultado com trecircs partes desconexas Os nuacutemeros de surfels de cada

modelo resultado satildeo mostrados na Tabela 5

Figura 35- Resultado da Uniatildeo do modelo Male com MaxPlanck

Resultados 67

Figura 36-Resultado da interseccedilatildeo do modelo Male com o MaxPlanck

Figura 37-Resultado da diferenccedila do modelo Male do modelo MaxPlanck

As meacutedias de tempos de processamento foram calculadas da mesma

forma que o primeiro teste com o modelo Igea acima apresentado Os

resultados satildeo mostrados na Tabela 4 Podemos observar que este teste

Resultados 68

apresenta tempos um pouco menores que o teste com o modelo Igea Isto se

deve ao fato de que o modelo MaxPlanck ser significativamente menor que o

modelo Igea MaxPlanck possui 52809 surfels e Igea conteacutem 134345 surfels

Operaccedilatildeo Criaccedilatildeo das

Octrees (seg)

Classificaccedilatildeo

(seg)

Criaccedilatildeo do

resultado (seg)

Total

(seg)

Uniatildeo 3012 1254 102 5285

Interseccedilatildeo 2985 0901 0861 4747

Diferenccedila 2965 0911 0791 4667

Tabela 4-Tempo de processamento das operaccedilotildees com os modelos MaxPlanck e Male

Operaccedilatildeo Nuacutemero de surfels do resultado

Uniatildeo 126532

Interseccedilatildeo 88414

Diferenccedila 77635

Tabela 5-Nuacutemero de surfels dos modelos resultados das operaccedilotildees com os modelos MaxPlanck e Male

Em seguida apresentaremos uma comparaccedilatildeo entre o nosso plugin e o

plugin de Pauly[3] e tambeacutem uma comparaccedilatildeo entre o meacutetodo de Adams e Dutreacute

[2] e o meacutetodo de Pauly [3]

62 Comparaccedilatildeo entre os dois meacutetodos que realizam operaccedilotildees booleanas

A comparaccedilatildeo entre os meacutetodos de Pauly[3] e de Adams e Dutreacute foi feita

em termos de tempo de processamento e em termos conceituais Em termos de

tempo de processamento comparamos o plugin de Pauly[3] com o nosso plugin

Em termos de tempo de processamento verifica-se empiricamente que os

dois meacutetodos apresentam tempos bastante similares Entretanto o tempo de

processamento do algoritmo aqui implementado ainda pode ser melhorado com

Resultados 69

o uso do meacutetodo TINN [19] que foi proposto em Adams[2] - para otimizar a

pesquisa do surfel mais proacuteximo a um ponto que estaacute localizado na regiatildeo de um

noacute que conteacutem surfels - veja seccedilatildeo 42 O uso deste meacutetodo natildeo foi

implementado para este trabalho e a sua implementaccedilatildeo melhoraria o tempo de

resposta do algoritmo Aleacutem disso o trabalho de Sara F Frisken [12] citado no

capiacutetulo 2 apresenta uma otimizaccedilatildeo no uso de octrees que pode ser

incorporada no algoritmo implementado neste trabalho

Em termos conceituais vamos fazer a comparaccedilatildeo do uso do que

chamamos aqui de Regra 2 do tratamento de interseccedilatildeo e do tratamento de

ldquoarestas vivasrdquo

Como vimos na seccedilatildeo 41 tanto o algoritmo implementado nesta

dissertaccedilatildeo baseado no trabalho de Adams e Dutreacute como o meacutetodo de Pauly

[3] parte do que chamamos aqui de Regra 2 para realizar operaccedilotildees booleanas

com pontos Mas cada um destes meacutetodos daacute um tratamento diferente para o

uso desta regra

O meacutetodo de Pauly usa a Regra 2 para classificaccedilatildeo de cada ponto ou de

cada surfel Para classificar um surfel de B sb como dentro ou fora de A eacute

encontrado o surfel de A sa mais proacuteximo a sb e sb eacute classificado a partir de sa

Para encontrar sa Pauly utiliza uma kd-tree Como esta pesquisa para encontrar

sa eacute cara (mesmo usando uma kd-tree) Pauly utiliza uma esfera que conteacutem

pontos com a mesma classificaccedilatildeo (seccedilatildeo 432) e diminui em 90 este nuacutemero

de pesquisas Pauly utiliza tambeacutem a representaccedilatildeo impliacutecita MLS (Moving Least

Squares) para casos em que a Regra 2 poderia falhar e para tratamento de

interseccedilotildees Entretanto o nuacutemero destes casos em que a Regra 2 poderia falhar

eacute muito pequeno E a representaccedilatildeo MLS natildeo eacute uma estrutura simples de ser

implementada Portanto natildeo encontramos vantagens em usar MLS para estes

casos O meacutetodo de Adams e Dutreacute natildeo trata estes casos e na praacutetica

apresenta resultados bastante satisfatoacuterios como foi mostrado Portanto

consideramos que valeria a pena fazer algum tratamento especial para estes

casos se fosse um procedimento simples Para a execuccedilatildeo do algoritmo de

Pauly o uso de MLS natildeo interfere significativamente porque a construccedilatildeo desta

representaccedilatildeo natildeo eacute feita somente para realizar operaccedilotildees booleanas Os testes

empiacutericos que fizemos com o algoritmo de Pauly natildeo incluem a construccedilatildeo desta

representaccedilatildeo

Aparentemente os dois algoritmos satildeo bastante parecidos um usa octrees

e o outro usa kd-tree As duas estruturas de dados satildeo simples e otimizam a

classificaccedilatildeo dos surfels de um modelo como dentro ou fora do outro modelo

Resultados 70

Mas existe uma diferenccedila conceitual entre dois que merece ser destacada O

algoritmo aqui implementado usa a Regra 2 para classificaccedilatildeo dos noacutes de uma

octree e armazena esta octree classificada (ver capiacutetulo 5) Assim na maioria dos

casos natildeo seraacute necessaacuterio encontrar o surfel mais proacuteximo para classificar um

ponto (ou um surfel) como fora ou dentro de um modelo Caso o ponto esteja em

uma aacuterea da octree classificada ele teraacute a classificaccedilatildeo dada agravequela aacuterea A

pesquisa ao surfel mais proacuteximo seraacute feita apenas nos casos em que o ponto a

ser classificado estaacute localizado entre os planos que subdividem um noacute cheio

O uso desta octree classificada levanta uma questatildeo que natildeo foi citada no

trabalho de Adams e Dutreacute que eacute a proximidade desta estrutura (armazenada)

de octree classificada com uma representaccedilatildeo volumeacutetrica do objeto Sendo

assim esta estrutura pode ser aproveitada para outras funccedilotildees aleacutem da

classificaccedilatildeo dos surfels Por exemplo podemos ter uma aproximaccedilatildeo do

volume de uma cena somando os volumes aproximados dos modelos que a

compotildeem Como o enfoque deste trabalho eacute operaccedilatildeo booleana natildeo vamos nos

aprofundar nesta questatildeo

Outra importante diferenccedila entre os dois trabalhos que jaacute foi explicada na

seccedilatildeo 432 eacute que o meacutetodo de Pauly aplica-se a modelos soacutelidos ou natildeo

soacutelidos enquanto que o meacutetodo de Adams e Dutreacute aplica-se somente a modelos

soacutelidos

Quanto ao tratamento de interseccedilatildeo em termos de visualizaccedilatildeo todos os

dois resolvem bem o problema O tratamento de interseccedilatildeo nos dois trabalhos

tambeacutem resolve o problema da validade da Regra 2 (ver seccedilatildeo 44) Entretanto

o tratamento de Adams e Dutreacute natildeo depende da renderizaccedilatildeo sendo portanto

mais portaacutevel Aleacutem disso uma desvantagem do meacutetodo de Pauly eacute o uso da

representaccedilatildeo impliacutecita MLS (ldquoMoving Least Squaresrdquo) do objeto para obter os

pontos exatamente na curva de interseccedilatildeo Esta representaccedilatildeo torna o

tratamento de interseccedilatildeo mais complexo e a vantagem apresentada natildeo eacute tatildeo

significativa para este tratamento de interseccedilatildeo

Conclusatildeo 71

7 Conclusatildeo

Concluiacutemos entatildeo que as escolhas de Adams e Dutreacute por usar uma

octree classificada e pelo tratamento dado agrave interseccedilatildeo satildeo mais abrangentes

que a escolha de Pauly E consideramos que quanto mais abrangente for uma

escolha conceitual mais resultados poderemos tirar dela No caso de Adams e

Dutreacute eles estendem o problema de classificar um ponto para classificar todo o

modelo Como foi citado ele quase fornece uma representaccedilatildeo volumeacutetrica do

modelo Esta aproximada representaccedilatildeo volumeacutetrica pode nos fornecer outras

informaccedilotildees como por exemplo o volume aproximado do modelo

Aleacutem disso o uso da representaccedilatildeo impliacutecita MLS no meacutetodo de Pauly cria

uma complexidade a mais para o meacutetodo sem apresentar vantagens para a

realizaccedilatildeo de operaccedilotildees booleanas que eacute o nosso enfoque

Logo podemos dizer que o meacutetodo de Adams e Dutreacute apresenta as

seguintes vantagens em relaccedilatildeo ao de Pauly

- a estrutura de octree classificada aleacutem de ser usada para classificaccedilatildeo

fornece informaccedilotildees adicionais como volume aproximado do objeto

- o tempo de processamento no meacutetodo de Adams e Dutreacute tende a ser

melhor que no meacutetodo de Pauly se implementadas as melhorias acima citadas e

se colocaacutessemos em consideraccedilatildeo o uso da representaccedilatildeo impliacutecita MLS

(Moving Least Squares)

- o tratamento de interseccedilatildeo de Adams e Dutreacute apresenta a vantagem da

portabilidade ou seja iraacute funcionar independente do algoritmo de renderizaccedilatildeo

utilizado

E as vantagens do meacutetodo de Pauly em relaccedilatildeo ao de Adams e Dutreacute

- a colocaccedilatildeo de surfels exatamente na curva de interseccedilatildeo

- a possibilidade de trabalhar com modelos soacutelidos ou natildeo soacutelidos

E finalizando concluiacutemos que o estudo relatado nesta dissertaccedilatildeo foi

importante por

- fornecer um breve estudo sobre modelagem por pontos uma nova e

promissora aacuterea dentro da computaccedilatildeo graacutefica

Conclusatildeo 72

- por apresentar uma avaliaccedilatildeo dos dois trabalhos existentes sobre

operaccedilotildees booleanas com pontos encontrando as vantagens de cada um

e levantando questotildees que natildeo tinham sido citadas nos trabalhos originais

- por propor e implementar melhorias ao trabalho de Adams e Dutreacute

71 Trabalhos Futuros

Nossa implementaccedilatildeo pode ser ainda evoluiacuteda com as propostas

apresentadas na seccedilatildeo 62 Como observamos o tempo de processamento do

algoritmo aqui implementado ainda pode ser melhorado com o uso do meacutetodo

TINN [19] - que foi proposto em Adams[2] - para otimizar a pesquisa do surfel

mais proacuteximo a um ponto que estaacute localizado na regiatildeo de um noacute que conteacutem

surfels Aleacutem disso o trabalho Simple and Efficient Trasversal Methods for

Quadtrees and Octrees de Sara F Frisken [12] citado no capiacutetulo 2 apresenta

uma otimizaccedilatildeo no uso de octrees Outra proposta para melhorar o tempo de

processamento do algoritmo aqui implementado eacute usar a forma de trabalhar com

octrees apresentada neste trabalho

O trabalho de Adams e Dutreacute [2] eacute aplicado apenas a objetos soacutelidos O

nosso plugin portanto aplica-se somente a este tipo de objeto Jaacute o trabalho de

Pauly[3] eacute aplicado tambeacutem a modelos natildeo soacutelidos Apresentamos como

proposta a um trabalho futuro a extensatildeo do algoritmo aqui implementado para

modelos natildeo soacutelidos O surfel pode conter uma informaccedilatildeo adicional que indica

se ele estaacute delimitando um volume ou natildeo Assim pode-se ter um modelo com

ldquopartes soacutelidasrdquo e ldquopartes natildeo soacutelidasrdquo Por exemplo a uniatildeo de um plano com

uma esfera poderia resultar numa esfera com ldquoabasrdquo (seriam as partes do plano

que estariam fora da esfera) O modelo resultado teria uma parte correspondente

a um espaccedilo 3D (esfera) e outra parte que seria uma superfiacutecie 2D posicionada

no espaccedilo 3D sem delimitar algum volume (abas)

Muitos trabalhos podem ser desenvolvidos aplicando-se o modelo por

pontos em animaccedilatildeo jogos visualizaccedilatildeo de terrenos criaccedilatildeo de protoacutetipos etc

considerando-se a eficiecircncia e simplicidade do modelo E mais especificamente

as operaccedilotildees booleanas com pontos podem ser aplicadas para criaccedilatildeo de

cenaacuterios testes de colisotildees e nestes casos a representaccedilatildeo usando octrees

pode ser mais explorada considerando-se o seu potencial de representaccedilatildeo

volumeacutetrica de um objeto

Referecircncias Bibliograacuteficas 73

8 Referecircncias Bibliograacuteficas

[1] MAumlNTYLAuml M An Introduction to Solid Modeling Computer Science Press 1988

[2] ADAMS B DUTREacute P Interactive Boolean Operations on Surfel-

Bounded Solids Proceedings of SIGGRAPH 2003 San Diego USA 2003

[3] PAULY M KEISER R KOBBELT L GROSS M Shape Modeling

with Point-Sampled Geometry SIGGRAPH 2003 Computer Graphics

Proceedings Annual Conference Series ACM Press ACM SIGGRAPH 2003

[4] LEVOY M WHITTED T The Use of Points as Display Primitives

Technical Report TR 85-022 The University of North Carolina at Chapel Hill

Department of Computer Science 1985

[5] PFISTER H ZWICKER M VAN BAAR J GROSS M 2000 Surfels

Surface Elements as Rendering Primitives SIGGRAPH 2000 pp 335ndash342 New

Orleans LA July 23-28 2000

[6] ZWICKER M PFISTER H VAN BAAR J GROSS M Surface

Splatting SIGGRAPH 2001

[7] PAULY M KOBBELT L GROSS M Multiresolution Modeling of

Point-Sampled Geometry CS Techinical Report 378 September 16 2002

[8] CURLESS B New Methods for Surface Reconstruction from Range Images PhD thesis Stanford University 1997

[9] RUSINKIEWICZ S Real-time Acquisition and Rendering of Large 3D Models PhD thesis Stanford University 2001

Referecircncias Bibliograacuteficas 74

[10] AMENTA N BERN M KAMVYSSELIS M A new Voronoi-Based

Surface Reconstruction Algorithm SIGGRAPH 98 Conference proceedings pp

415-421 New York 1998

[11] ZWICKER M PAULY M KNOLL O GROSS M Pointshop 3D an

Interactive System for Point-Based Surface Editing Proceedings of SIGGRAPH 2002 San Antonio TX July 2002

[12] FRISKEN S PERRY R Simple and Efficient Traversal Methods for

Quadtrees and Octrees Journal of Graphics Tools Vol 7 Issue 3 May 2003

[13] CORREcircA W T OLIVEIRA M M Silva C T Wang J

Modeling and Rendering of Real Environments

Revista de Informaacutetica Teoacuterica e Aplicada (Brazilian Journal of Theoretic and Applied Computing) 9(2)127-156 2002

[14] DAVIS J MARSCHNER S GARR M LEVOY M Filling Holes in

Complex Surfaces Using Volumetric Diffusion First International Symposium on 3D Data Processing Visualization Transmission June 2002

[15] RAumlSAumlNEN J Surface Splatting Theory Extensions and Implementation Masterrsquos Thesis Dept of Computer Science Helsinki

University of Technology May 28 2002

[16] PAULY M Point Primitives for Interactive Modeling and Processing of 3D Geometry PhD thesis Federal Institute of Technology (ETH)

of Zurich 2003

[17] HOPPE H DEROSE T DUCHAMP T MCDONALD J

STUELZLE W Surface Reconstruction from Unorganized Points Computer Graphics 26(2)71ndash78 July 1992

[18] ALEXA M BEHR J COHEN-OR D FLEISHMAN S LEVIN D

SILVA C T Point Set Surfaces IEEE Visualization 2001 pp 21ndash28 October

2001

Referecircncias Bibliograacuteficas 75

[19] GREENSPAN M GODIN G TALBOT J Acceleration of Binning

Nearest Neighbor Methods Proceedings of Vision Interface 2000 pp 337-

344

[20] MENCL R Reconstruction of Surfaces from Unorganized Three-Dimensional Point Clouds Dissertation Dortmund Univ 2001

[21] KRIVANEK J Representing and Rendering Surfaces With Points

httpciteseernjneccomkrivanek03representinghtml Acesso em 30 jul

2003

[22] KRISTJANSSON ET AL Approximate Boolean Operations on Free-

form Solids Proceedings of SIGGRAPH 01 2001

Modelagem por Pontos 20

3 Modelagem por Pontos

A computaccedilatildeo graacutefica natildeo lida diretamente com o objeto ou com o

fenocircmeno fiacutesico lida com modelos graacuteficos ou geomeacutetricos Modelos graacuteficos

satildeo estruturas computacionais (abstratas) que capturam aspectos de objetos de

interesse para uma aplicaccedilatildeo como forma cor textura etc Se apenas a forma

ou a geometria do objeto eacute relevante temos modelos geomeacutetricos

Estes modelos satildeo usados em vaacuterias aplicaccedilotildees em computaccedilatildeo graacutefica

como roboacutetica visatildeo computacional simulaccedilotildees realistas anaacutelises estruturais

prototipagem projeto e manufatura de produtos eletromecacircnicos arquitetura

Existem vaacuterios tipos de modelos graacuteficos Esta dissertaccedilatildeo trata de um tipo

muito em voga atualmente que eacute o modelo por pontos

Neste capiacutetulo daremos uma visatildeo geral do modelo por pontos

Introduziremos este modelo e seu processo de criaccedilatildeo Seraacute apresentado o que

eacute um modelo por pontos e o conceito de surfel [5] introduziremos os tipos de

distribuiccedilatildeo dos surfels uma estruturaccedilatildeo aplicada a estes surfels e dados que

eles podem conter As quatro proacuteximas subseccedilotildees (Ideacuteia da representaccedilatildeo

Tipos de distribuiccedilatildeo dos surfels Estrutura de multi-resoluccedilatildeo e Dados que um

surfel pode conter) tratam destes toacutepicos Um modelo por pontos pode ser criado

a partir da conversatildeo de outros tipos de modelagem NURBS por exemplo para

o modelo por pontos ou a partir de um processo de aquisiccedilatildeo Esta uacuteltima forma

de criaccedilatildeo pode ser dividida em duas etapas aquisiccedilatildeo do modelo reconstruccedilatildeo

da superfiacutecie As subseccedilotildees 35 e 36 tratam destas duas etapas

respectivamente A ediccedilatildeo do modelo 3D eacute tratada brevemente na subseccedilatildeo 38

e a sua visualizaccedilatildeo na subseccedilatildeo 37 A apresentaccedilatildeo do processo de aquisiccedilatildeo

(seccedilatildeo 35) eacute baseada no tutorial de W T Correcirca [13] A etapa de ediccedilatildeo 3D

consiste em operaccedilotildees para mudanccedila da cor textura ou forma do modelo Para

esta etapa enfocaremos as operaccedilotildees booleanas que modificam a forma do

modelo ou criam novos modelos

31 Ideacuteia da Representaccedilatildeo

Modelagem por Pontos 21

Figura 1 [20] -Um modelo por pontos e sua visualizaccedilatildeo

Um modelo por pontos representa um objeto atraveacutes de seu contorno Eacute

um tipo de representaccedilatildeo B-Rep (Boundary Representation) [1] Este contorno

consiste em uma superfiacutecie 2D posicionada no espaccedilo 3D Na modelagem por

pontos ela eacute representada por um conjunto de pontos 3D que satildeo uma

amostragem dos (infinitos) pontos que formam a superfiacutecie contiacutenua (Figura 1) A

amostragem pode ser obtida de diversas maneiras Uma delas o processo de

aquisiccedilatildeo progrediu muito nos uacuteltimos anos e este foi um dos fatores que tornou

muito importante o desenvolvimento deste modelo por pontos Outra forma de

gerar amostragem eacute fazer uma conversatildeo de um outro modelo NURBS por

exemplo para o modelo por pontos

Estes pontos satildeo denominados surfels e podem conter aleacutem da posiccedilatildeo

3D outras informaccedilotildees como normal agrave superfiacutecie cor textura raio de alcance A

Figura 2 mostra um conjunto de surfels representando uma superfiacutecie No surfel

em destaque podemos ver o raio de alcance rt e a normal n agrave superfiacutecie

Modelagem por Pontos 22

Figura 2 [5] A superfiacutecie modelada por surfels O surfel em destaque tem raio de alcance

rt e normal n

Como o modelo natildeo armazena qualquer informaccedilatildeo sobre a conexatildeo entre

os surfels a reconstruccedilatildeo da superfiacutecie contiacutenua a partir dele pode exigir

algumas restriccedilotildees na amostragem (seccedilatildeo 36)

32 Tipos de distribuiccedilatildeo dos surfels

Existem dois tipos de distribuiccedilatildeo dos surfels na modelagem por pontos

uniforme e natildeo uniforme Na distribuiccedilatildeo uniforme cada um deles descreve

partes de mesmo tamanho da superfiacutecie Na natildeo uniforme cada surfel armazena

a informaccedilatildeo de seu raio de alcance que eacute o raio do disco que este surfel

representa

A distribuiccedilatildeo uniforme tem a vantagem de ser mais simples e natildeo ser

necessaacuterio armazenar o raio de alcance do disco mas ela apresenta a seguinte

desvantagem se o modelo possui regiotildees com muito detalhe e regiotildees com

pouco detalhe ele teraacute que manter uma alta densidade mesmo nas regiotildees de

poucos detalhes

33 Estrutura de multi-resoluccedilatildeo

Um objeto pode ser representado em vaacuterios niacuteveis de detalhes Por

exemplo podemos representar um mesmo objeto com vaacuterias resoluccedilotildees

diferentes Este conceito pode ser aplicado ao modelo por pontos Desta forma

um modelo eacute representado por uma estrutura hieraacuterquica (uma aacutervore por

exemplo) onde em cada niacutevel temos uma representaccedilatildeo do objeto em uma

Modelagem por Pontos 23

determinada resoluccedilatildeo Em [7] Pauly et al propotildeem algoritmos para modelagem

multi-resoluccedilatildeo em modelos por pontos

34 Dados que um surfel pode conter

Cada surfel armazena sua localizaccedilatildeo e pode tambeacutem conter informaccedilotildees

como a cor ou coordenadas de textura Se a amostragem natildeo for uniforme o

surfel conteacutem a informaccedilatildeo do raio de alcance que eacute o raio de um disco cujo

centro eacute a posiccedilatildeo do surfel O surfel pode tambeacutem conter o vetor normal agrave

superfiacutecie e assim o surfel pode ser visto como um disco orientado A superfiacutecie

tambeacutem pode ser vista como uma superfiacutecie orientada

35 Aquisiccedilatildeo do modelo

Esta introduccedilatildeo sobre aquisiccedilatildeo do modelo aqui apresentada baseia-se no

tutorial de W T Correcirca [13]

O processo de aquisiccedilatildeo consiste em obter uma amostragem de pontos da

superfiacutecie do objeto real por meio de equipamentos como por exemplo o

scanner 3D Eacute uma aacuterea que tem progredido muito nos uacuteltimos anos A

resoluccedilatildeo e a precisatildeo dos equipamentos de aquisiccedilatildeo tecircm melhorado bastante

e o custo deles reduzido de forma significativa Isso possibilita que a aquisiccedilatildeo

de modelos 3D seja usada em aplicaccedilotildees de desenho industrial arte ou em

produtos para a aacuterea de entretenimento O consequumlente maior uso destes

equipamentos criou a necessidade de avanccedilos no tratamento dos seus dados de

saiacuteda que satildeo um conjunto de pontos

Este processo pode ser dividido em trecircs partes [13] aquisiccedilatildeo da

geometria aquisiccedilatildeo da textura e correccedilatildeo de falhas da aquisiccedilatildeo

351 Aquisiccedilatildeo da geometria

Existem vaacuterios meacutetodos de aquisiccedilatildeo da geometria Curless [8] e

Rusinkiewicz [9] classificaram estes meacutetodos em trecircs categorias meacutetodos por

contato transmissatildeo e reflexatildeo

O meacutetodo por contato toca a superfiacutecie do objeto com uma sonda e grava

a posiccedilatildeo Este meacutetodo do qual o Coordinate Measuring Machines (CMMs) eacute

Modelagem por Pontos 24

um exemplo eacute bastante preciso mas eacute muito lento e natildeo adequado a objetos

fraacutegeis

Meacutetodos por transmissatildeo projetam ondas de energia sobre o objeto e

gravam a energia transmitida Por exemplo tomografia computadorizada que

projeta ondas de raio-x sobre o objeto e mede a quantidade de radiaccedilatildeo que

passa atraveacutes dele O resultado eacute um modelo geomeacutetrico de alta resoluccedilatildeo Este

meacutetodo pode captar detalhes do objeto que natildeo satildeo visiacuteveis de fora do objeto

Por outro lado ele eacute caro e arriscado

Meacutetodos por reflexatildeo podem ser oacuteticos ou natildeo-oacuteticos Natildeo-oacuteticos incluem

radares que medem a distacircncia a um objeto enviando microondas ou ondas

sonoras para o objeto e gravando o tempo que a onda gasta para retornar Estes

meacutetodos natildeo satildeo muito precisos nem raacutepidos

Meacutetodos por reflexatildeo oacuteticos podem ser passivos ou ativos Meacutetodos oacuteticos

passivos natildeo interagem com o objeto e incluem teacutecnicas de visatildeo computacional

como shape-from-shading stereo triangulation optical flow e meacutetodos de

decomposiccedilatildeo para video streams Estes meacutetodos raramente constroem

modelos precisos e sua maior aplicaccedilatildeo eacute em reconhecimento de objetos

Meacutetodos oacuteticos ativos projetam luz sobre um objeto de maneira estruturada

e atraveacutes da reflexatildeo da luz determinam a forma do objeto Exemplos satildeo depth

from defocus photometric stereo projected-light triangulation time of flight

Meacutetodos por reflexatildeo oacuteticos ativos tecircm muitas vantagens sobre os passivos tecircm

um melhor desempenho quando natildeo existe textura satildeo mais baratos e mais

robustos e produzem uma amostragem precisa

352 Aquisiccedilatildeo da textura

Idealmente noacutes gostariacuteamos de ter uma completa descriccedilatildeo de como um

ponto da superfiacutecie reflete a luz dependendo do vetor normal a esta superfiacutecie

da direccedilatildeo do raio de luz incidente e do comprimento de onda Tal descriccedilatildeo eacute

conhecida como Bidirectional Reflectance Distribution Function (BRDF) Medir

BRDFs com precisatildeo eacute um problema difiacutecil

Pode-se ter uma aproximaccedilatildeo da aquisiccedilatildeo de cores do objeto tirando

fotos dele O objeto eacute fotografado e a cor de cada ponto da superfiacutecie eacute obtida a

partir de um mapeamento das fotos 2D para o modelo 3D Para mapear a

fotografia agrave geometria precisamos conhecer os paracircmetros de projeccedilatildeo da

cacircmera e a sua posiccedilatildeo no momento em que a foto foi batida Para cada ponto

Modelagem por Pontos 25

3D do modelo encontramos sua projeccedilatildeo 2D no plano da cacircmera e associamos

a cor do pixel nesta projeccedilatildeo agrave cor do ponto 3D

353 Correccedilatildeo das falhas da aquisiccedilatildeo

O processo de aquisiccedilatildeo deixa frequumlentemente buracos no modelo devido

a ruiacutedos no processo ou agrave impossibilidade de aquisiccedilatildeo de determinadas partes

de uma superfiacutecie Estes buracos devem ser corrigidos Pode-se usar por

exemplo um filtro de passa-baixa para remoccedilatildeo de ruiacutedos [14] Meacutetodos de

difusatildeo geomeacutetrica tecircm sido aplicados para preenchimento dos buracos [15] A

correccedilatildeo das falhas eacute tida como um preacute-processamento para o processo de

reconstruccedilatildeo da superfiacutecie contiacutenua (seccedilatildeo 36)

36 Reconstruccedilatildeo da superfiacutecie (contiacutenua) a partir do modelo (discreto)

A reconstruccedilatildeo da superfiacutecie contiacutenua consiste em a partir de um conjunto

natildeo estruturado de pontos obter um modelo contiacutenuo desta superfiacutecie Esta

reconstruccedilatildeo eacute frequumlentemente exigida para um modelo por pontos Na sua

visualizaccedilatildeo podemos desejar focar qualquer parte do modelo Para fazermos

operaccedilotildees booleanas com os modelos podemos querer determinar exatamente

onde eles se intersectam

No entanto natildeo precisamos ter necessariamente a representaccedilatildeo contiacutenua

de todo o objeto ao mesmo tempo A reconstruccedilatildeo desta superfiacutecie a partir dos

pontos amostrados pode ser feita no momento que for mais adequado agrave

aplicaccedilatildeo Na visualizaccedilatildeo a reconstruccedilatildeo pode ser feita na projeccedilatildeo 2D da

parte do modelo em foco (seccedilatildeo 37) Para operaccedilotildees booleanas pode-se

reconstruir apenas a aacuterea da interseccedilatildeo dos modelos

Este processo de reconstruccedilatildeo de superfiacutecie tem sido muito estudado em

modelagem geomeacutetrica e geometria computacional nos uacuteltimos anos O trabalho

mais importante desta aacuterea eacute o trabalho de Amenta et al [10] que foi a primeira

soluccedilatildeo com garantias demonstraacuteveis para este problema de reconstruccedilatildeo de

superfiacutecie A seccedilatildeo 44 explica estes conceitos e o trabalho [10] Este trabalho

demonstra que teoricamente para que a reconstruccedilatildeo da superfiacutecie (contiacutenua) a

partir das amostras seja correta a amostragem deve ser adequada Ele usa o

conceito de ldquoEixo Medialrdquo para definir o que eacute uma amostragem adequada

Modelagem por Pontos 26

(seccedilatildeo 44) Em duas dimensotildees os veacutertices de Voronoi de uma amostragem

densa aproximam o ldquoEixo Medialrdquo da amostragem

Por meio deste conceito de Eixo Medial [1016] obtecircm-se paracircmetros

teoacutericos para a definiccedilatildeo de amostragem adequada e baseado neste conceito

o algoritmo apresentado em [10] traz uma soluccedilatildeo praacutetica para o problema

obtendo uma malha poligonal a partir do modelo por pontos

O PointShop 3D [11] software de ediccedilatildeo de modelos por pontos utilizado

nesta pesquisa faz quando necessaacuterio a reconstruccedilatildeo da superfiacutecie Para isso

o PointShop 3D explora a vizinhanccedila local (surfels vizinhos de acordo com suas

posiccedilotildees) Ele usa o conceito de Eixo Medial para justificar seu meacutetodo de

reconstruccedilatildeo da superfiacutecie que na praacutetica apresenta resultados bastante

satisfatoacuterios apesar de teoricamente natildeo ter garantias [16]

37 Visualizaccedilatildeo do modelo

A primeira abordagem para visualizaccedilatildeo de um modelo por pontos foi

construir uma malha de poliacutegonos a partir dos surfels e renderizaacute-la Mas a

construccedilatildeo de malhas a partir dos surfels eacute um processo muito caro e lento

principalmente para modelos complexos Na tentativa de obter uma visualizaccedilatildeo

interativa do modelo por pontos estatildeo sendo estudadas teacutecnicas que utilizam

surfels como primitiva de visualizaccedilatildeo A ideacuteia foi apresentada inicialmente por

Levoy [4]

Figura 3 [21] -Modelo por pontos e sua renderizaccedilatildeo usando Surface Splatting

Modelagem por Pontos 27

O objetivo da renderizaccedilatildeo a partir dos surfels eacute projetaacute-los na tela e

reconstruir as superfiacutecies de forma contiacutenua sem buracos Para que esta

renderizaccedilatildeo seja amplamente utilizada deve-se ter cuidado com o uso de

memoacuteria e com a qualidade da imagem gerada Teacutecnicas recentes como Surface

Splatting [6] faz a renderizaccedilatildeo interativamente com qualidade (Figura 3)

comparada a outros meacutetodos de renderizaccedilatildeo como Image Based Rendering

Em geral a visualizaccedilatildeo do modelo por pontos pode ser dividida nas seguintes

etapas

- warping - projeccedilatildeo em perspectiva de cada ponto do modelo na tela

processo anaacutelogo agrave projeccedilatildeo de veacutertices dos triacircngulos na malha triangular Se

um pixel da tela estiver contido em mais de uma projeccedilatildeo de surfels (vizinhos)

ou seja mais de um ponto cobre este pixel os atributos destes pontos seratildeo

combinados

- shading por ponto - o processo de shading eacute realizado para cada ponto

visiacutevel (os pontos que natildeo satildeo vistos do ponto de vista em questatildeo devem ser

retirados) Qualquer modelo local de shading pode ser aplicado Uma nova

teacutecnica foi proposta em Surface Splatting [6]

- reconstruccedilatildeo da imagem ndash pixels que natildeo ldquoreceberamrdquo projeccedilatildeo de

nenhum ponto formam buracos na imagem Esta imagem deve ser reconstruiacuteda

sem buracos sem aliasing e as superfiacutecies devem ser reconstruiacutedas de forma

contiacutenua e devem ser ldquosuavizadasrdquo (smooth surface)

Os algoritmos de renderizaccedilatildeo por pontos podem tratar a questatildeo de

buracos na visualizaccedilatildeo de trecircs formas [17]

Detecccedilatildeo e preenchimento de buracos no espaccedilo da tela pontos satildeo

projetados na tela e pixels que natildeo receberam pontos satildeo detectados (buracos)

Para preencher estes buracos que natildeo receberam pontos eacute feita uma

interpolaccedilatildeo entre os vizinhos

Geraccedilatildeo de mais pontos a superfiacutecie eacute interpolada no espaccedilo do modelo

para garantir que todos os pixels recebam pelo menos a projeccedilatildeo de um ponto

Splatting um surfel eacute projetado na tela e sua contribuiccedilatildeo eacute espalhada de

forma diferenciada para os pixels vizinhos Agrave medida em que o vizinho se torna

mais distante a contribuiccedilatildeo do surfel diminui

Raumlsaumlnen faz uma analogia do processo de renderizaccedilatildeo proposto em [6]

com o mapeamento de textura [15] No mapeamento de textura para um

determinado pixel da tela satildeo encontrados os pontos da textura que afetam este

Modelagem por Pontos 28

pixel Num sentido inverso em splatting para um determinado surfel (que

representa a textura) satildeo encontrados os pixels da tela que este surfel afeta

38 Ediccedilatildeo do modelo

Ediccedilatildeo de um modelo 3D consiste em operaccedilotildees que modificam

caracteriacutesticas deste modelo como cor textura forma ou criam novos modelos

O software PointShop 3D [11] software de ediccedilatildeo de modelos por pontos 3D

implementa vaacuterias destas operaccedilotildees (ver seccedilatildeo 52)

Para modificar a forma de um modelo ou criar um novo satildeo muito usadas

as operaccedilotildees booleanas que eacute o nosso enfoque nesta dissertaccedilatildeo Na

modelagem CSG (Constructive Solid Geometry) as operaccedilotildees booleanas satildeo

usadas juntamente com primitivas soacutelidas para definir um modelo No entanto

em alguns tipos de modelos estas operaccedilotildees satildeo difiacuteceis como por exemplo

em malhas poligonais Com pontos elas podem ser feitas interativamente [32]

Operaccedilotildees Booleanas com Pontos 29

4 Operaccedilotildees Booleanas com Pontos

Operaccedilotildees booleanas satildeo as operaccedilotildees de uniatildeo interseccedilatildeo e diferenccedila

definidas na teoria matemaacutetica de conjuntos Estas operaccedilotildees satildeo aplicadas em

modelos soacutelidos para alteraacute-los ou para criar novos modelos A Figura 4 abaixo

mostra a criaccedilatildeo de trecircs novos modelos a partir de quatro modelos iniciais

Figura 4 [22] Trecircs modelos novos foram criados a partir dos quatro iniciais (esfera

cilindro dois cubos) O primeiro eacute a esfera menos um cubo em seguida retirou-se outro

cubo e por uacuteltimo retirou-se o cilindro

Estas operaccedilotildees satildeo aplicadas em objetos modelados por pontos em dois

trabalhos no trabalho de Bart Adams e Philip Dutreacute [2] e no trabalho de Pauly

et Al [3] Neste capiacutetulo a seccedilatildeo 41 apresenta a parte comum aos dois

trabalhos e as seccedilotildees 42 e 43 apresentam as particularidades de cada um A

seccedilatildeo 44 discute uma questatildeo natildeo explicitada em nenhum dos dois trabalhos

41 Meacutetodos para realizar operaccedilotildees booleanas em objetos modelados por pontos

A Figura 5 mostra o resultado do meacutetodo de Adams[2] operaccedilotildees de

uniatildeo diferenccedila e interseccedilatildeo de objetos soacutelidos 3D modelados por pontos

Operaccedilotildees Booleanas com Pontos 30

Figura 5 [2]-A partir de dois modelos por pontos uma heacutelice e uma cabeccedila as trecircs operaccedilotildees booleanas satildeo mostradas da esquerda para a direita uniatildeo diferenccedila e interseccedilatildeo

Sejam A e B objetos 3D soacutelidos modelados por pontos Definem-se os

seguintes elementos

Af ndash superfiacutecie (contorno) de A que estaacute fora de B

Ad ndash superfiacutecie (contorno) de A que estaacute dentro de B

Bf ndash superfiacutecie (contorno) de B que estaacute fora de A

Bd ndash superfiacutecie (contorno) de B que estaacute dentro de A

O resultado da operaccedilatildeo booleana entre A e B seraacute um modelo C cuja

superfiacutecie de contorno pode ser determinada pela seguinte regra [2] que aqui

chamamos de Regra 1

Regra 1 A U B Af + Bf

A cap B Ad + Bd

A ndash B Af + Bd (com a orientaccedilatildeo invertida)

B ndash A Ad (com a orientaccedilatildeo invertida) + Bf

A Figura 6 mostra as operaccedilotildees com dois modelos A e B

(a) (b)

Operaccedilotildees Booleanas com Pontos 31

(c) (d)

Figura 6 [22] (a) Dois modelos A e B (b) Posicionados de forma que A tem

uma parte dentro de B eacute mostrado o resultado A U B Af + Bf (c) Resultado de A ndash B Af

+ Bd (d) Resultado de A cap B Ad + Bd

Bart [2] e Pauly [3] apresentam dois meacutetodos para determinar os

elementos acima Estes dois meacutetodos satildeo construiacutedos a partir dos seguintes

conceitos os elementos Af Ad Bf Bd satildeo uma parte da superfiacutecie modelada por

pontos e portanto satildeo conjuntos de surfels Para determinaacute-los eacute necessaacuteria

entatildeo a classificaccedilatildeo de um surfel (que pode se resumir agrave classificaccedilatildeo de um

ponto que eacute o seu centro) de uma superfiacutecie como dentro ou fora de um outro

modelo Os dois meacutetodos utilizam a seguinte regra para esta classificaccedilatildeo aqui

denominada Regra 2

Regra 2 Dado um ponto x qualquer um volume V determinado por uma superfiacutecie

de contorno S uma amostragem P da superfiacutecie S um ponto p є P que eacute a

amostra mais proacutexima a x um vetor np normal agrave S em p e orientado para fora de

S temos que

(x ndash p) np gt 0 x notinV

Ou seja para classificar um ponto em relaccedilatildeo a um modelo verificamos o

produto interno entre a normal em p (surfel mais proacuteximo a x) e o vetor (x - p)

se este produto interno for maior que zero x natildeo pertence ao volume V e seraacute

classificado como fora senatildeo seraacute classificado como dentro De maneira

ainda mais informal se a normal em p apontar para a direccedilatildeo oposta a x x seraacute

classificado como dentro se apontar para x x seraacute classificado como fora

A Figura 7 mostra a Regra 2

Operaccedilotildees Booleanas com Pontos 32

Figura 7 Para classificar o ponto x encontra-se o surfel p (com normal np) mais proacuteximo

a x Se o produto interno entre np e (x ndash p) for maior que zero entatildeo x eacute classificado como

fora senatildeo seraacute classificado como dentro

A validade da Regra 2 eacute discutida na Seccedilatildeo 44 Uma das restriccedilotildees

teoacutericas para garantir-lhe a validade eacute que a superfiacutecie seja suave

Cada um dos dois meacutetodos daacute um tratamento diferente para o uso desta

regra Pauly usa a regra diretamente encontrando o surfel mais proacuteximo a um

ponto e classificando este ponto a partir deste surfel Ele utiliza tambeacutem a

representaccedilatildeo impliacutecita MLS (Moving Least Squares [18]) para casos em que a

Regra 2 poderia falhar e para tratamento de interseccedilotildees [3] Seu meacutetodo vale

para modelos soacutelidos ou natildeo soacutelidos O meacutetodo de Adams e Dutreacute [2] utiliza

octrees [1] criando uma classificaccedilatildeo dos noacutes da octree a partir desta Regra 2

Os pontos satildeo entatildeo classificados de acordo com o noacute da octree que o conteacutem

Este segundo meacutetodo aplica-se somente a modelos soacutelidos Os dois meacutetodos

seratildeo descritos em detalhes nas seccedilotildees abaixo

Como um surfel eacute considerado um disco podemos dizer que surfels de

dois modelos diferentes podem se intersectar A interseccedilatildeo destes dois surfels

corresponde agrave interseccedilatildeo destes dois discos Estes surfels geram problemas

para visualizaccedilatildeo se forem acrescentados ao resultado sem um tratamento

especiacutefico apresentaratildeo artefatos natildeo desejaacuteveis na renderizaccedilatildeo do modelo

resultado (Figura 8) se natildeo forem acrescentados ao resultado deixaratildeo buracos

no modelo

Operaccedilotildees Booleanas com Pontos 33

Figura 8 [2] -Interseccedilatildeo de duas esferas agrave esquerda sem nenhum tratamento de interseccedilatildeo agrave direita apoacutes o tratamento de interseccedilatildeo

Aleacutem disso nem sempre esta interseccedilatildeo forma uma superfiacutecie suave

Esta interseccedilatildeo pode formar uma aresta viva (seccedilatildeo 4223) gerando

problemas tambeacutem para o uso da Regra 2 que eacute vaacutelida apenas para superfiacutecies

suaves Eacute necessaacuterio entatildeo fazer um tratamento desta superfiacutecie de interseccedilatildeo

(formada por surfels originados de diferentes modelos) O tratamento de cada

um dos meacutetodos para este caso seraacute tambeacutem abaixo apresentado

42 Meacutetodo de Adams e Dutreacute

O meacutetodo aplica-se somente a modelos soacutelidos Para determinaccedilatildeo dos

elementos da aqui chamada Regra 1 (seccedilatildeo 41) este meacutetodo utiliza uma octree

[1] que subdivide o espaccedilo do modelo em trecircs fora dentro ou no contorno do

modelo Estes espaccedilos satildeo determinados pela classificaccedilatildeo dos noacutes da octree a

partir da Regra 2 Tambeacutem eacute usado o meacutetodo TINN - Triangle Inequality Nearest

Neighbour [19] - para otimizar a pesquisa dentro do noacute A seguir descrevemos o

modelo usado neste meacutetodo apresentando os dados associados aos pontos o

tipo de distribuiccedilatildeo e o algoritmo que realiza as operaccedilotildees

421 Modelo por Pontos em Adams e Dutreacute

Os surfels neste meacutetodo contecircm as seguintes informaccedilotildees posiccedilatildeo do

surfel xs orientaccedilatildeo do surfel ns e raio de alcance do surfel rs O surfel pode ser

pensado como um disco ortogonal a ns com centro xs e raio rs O raio eacute

escolhido de tal forma que a projeccedilatildeo dos discos no plano da imagem se

sobreponham

Operaccedilotildees Booleanas com Pontos 34

Os objetos representados satildeo soacutelidos A distribuiccedilatildeo dos surfels eacute

uniforme embora o algoritmo natildeo exija esta condiccedilatildeo Para cada soacutelido eacute

definido um rmax = Max rs o raio de alcance do maior surfel pertencente agrave

superfiacutecie do soacutelido Como o raio eacute escolhido de tal forma que a projeccedilatildeo dos

discos no plano da imagem se sobreponham o controle da amostragem eacute

entatildeo ligado agrave renderizaccedilatildeo

422 Algoritmo de Operaccedilotildees Booleanas

Utilizando objetos modelados da forma descrita acima o meacutetodo realiza

operaccedilotildees de uniatildeo interseccedilatildeo e diferenccedila com modelos soacutelidos Supondo dois

modelos soacutelidos S1 e S2 O algoritmo pode ser dividido nas seguintes etapas

Criaccedilatildeo de uma octree para cada modelo Teste Dentro-Fora Tratamento da

interseccedilatildeo Estas etapas satildeo apresentadas nas proacuteximas seccedilotildees

4221 Criaccedilatildeo de uma octree para cada modelo

Eacute criada uma octree [1] para cada modelo A criaccedilatildeo de uma octree eacute feita

da seguinte forma

Gera-se a ldquoCaixa envolventerdquo caixa alinhada com os eixos que conteacutem

todo o modelo A ldquoCaixa envolventerdquo corresponde ao noacute raiz da octree Este noacute

conteacutem inicialmente todos os surfels do modelo Em seguida o noacute raiz eacute

dividido em oito noacutes filhos Os surfels satildeo distribuiacutedos entre estes oito noacutes Cada

um deles caso contenha surfels eacute dividido novamente em 8 filhos e seus surfels

satildeo redistribuiacutedos entre eles Este processo eacute repetido recursivamente enquanto

o nuacutemero de surfels do noacute for maior que zero ou ateacute uma profundidade maacutexima

preacute-definida da octree ser alcanccedilada

Cada noacute da octree deve ser classificado O objetivo desta classificaccedilatildeo eacute

determinar que parte da octree estaacute dentro do modelo e que parte estaacute fora Os

noacutes da octree satildeo entatildeo classificados como ldquodentrordquo ldquoforardquo e ldquocontornordquo

Podemos ilustrar esta classificaccedilatildeo em 2D a Figura 9 mostra uma quadtree

classificada

Operaccedilotildees Booleanas com Pontos 35

Figura 9-Um objeto representado por pontos com suas normais e sua quadtree correspondente classificada os noacutes cinza claro estatildeo dentro do modelo noacutes cinza mais escuro estatildeo fora do modelo e noacutes com cinza intermediaacuterio satildeo noacutes cheios noacutes que conteacutem pontos

O noacutes que conteacutem surfels satildeo classificados como ldquocontornordquo Para

classificar um noacute vazio existem trecircs casos

o noacute vazio tem apenas um vizinho-irmatildeo natildeo vazio

o noacute vazio tem mais de um vizinho-irmatildeo natildeo vazio

o noacute vazio natildeo tem vizinhos-irmatildeos natildeo vazios

No primeiro caso o noacute vazio eacute classificado pelo seu vizinho natildeo vazio No

segundo caso considera-se qualquer um dos vizinhos natildeo vazios No terceiro

caso classifica-se primeiro os noacutes vizinhos e eacute dada a mesma classificaccedilatildeo para

o noacute vazio Como cada noacute natildeo folha de uma octree tem pelo menos um noacute filho

natildeo vazio sempre pode ser feita a classificaccedilatildeo dos noacutes vazios A classificaccedilatildeo

eacute feita da seguinte forma dentre os surfels do vizinho-irmatildeo escolhido encontra-

se o surfel mais proacuteximo ao noacute a ser classificado Se a normal deste surfel

aponta para o noacute vazio a ser classificado entatildeo ele eacute classificado como ldquoforardquo

Se a normal aponta no sentido contraacuterio entatildeo ele eacute classificado como ldquodentrordquo

De maneira mais formal sejam cv e cc coordenadas dos centros do noacute vazio e

do noacute contorno respectivamente Seja s o surfel mais proacuteximo ao noacute vazio e ns

a normal em s Se ( cv - cc )٠ ns gt 0 ( produto interno entre a normal em s e o

vetor cv - cc for maior que zero ) o noacute vazio seraacute classificado como ldquoforardquo

Senatildeo seraacute classificado como ldquodentrordquo

Em geral os noacutes ldquocontornordquo satildeo subdivididos em trecircs partes uma que estaacute

fora do modelo uma que estaacute dentro do modelo e uma terceira que conteacutem os

surfels Esta subdivisatildeo eacute feita por meio da criaccedilatildeo de dois planos paralelos que

Operaccedilotildees Booleanas com Pontos 36

dividem o noacute Para determinar estes planos calcula-se o vetor nm igual agrave

meacutedia das normais dos surfels do noacute nm = sum ns sum ns onde ns eacute a normal de

cada surfel do noacute

Em seguida encontra-se o surfel com maior produto interno entre a sua

normal e a normal meacutedia d1=Max(nm ٠ ns) Este surfel juntamente com a normal

meacutedia define um dos planos Encontra-se tambeacutem o surfel com menor produto

interno entre a sua normal e a normal meacutedia d2=Min(nm ٠ ns) Este surfel

juntamente com a normal meacutedia define o outro plano A Figura 10 mostra a

divisatildeo de um noacute de uma quadtree nas trecircs partes dentro do modelo fora do

modelo e no ldquocontornordquo

Esta subdivisatildeo aplica-se apenas a noacutes que conteacutem surfels cujas direccedilotildees

natildeo variem em mais de 90 graus Caso isso ocorra ele natildeo seraacute subdividido Ou

seja se um noacute possuir dois vetores normais (de dois surfels diferentes) que

formem um acircngulo maior que 90 graus ele natildeo seraacute subdividido

Figura 10 [2] -Divisatildeo de noacute de contorno a parte agrave esquerda estaacute fora do modelo a parte agrave direita estaacute dentro do modelo e a faixa intermediaacuteria conteacutem os surfels

4222 Teste Dentro-Fora

O Teste Dentro-Fora faz a classificaccedilatildeo dos surfels de um modelo como

ldquodentrordquo ou ldquoforardquo de outro modelo Portanto aplicaremos este mesmo teste duas

vezes uma para o modelo S1 em relaccedilatildeo ao modelo S2 e outra para S2 em

relaccedilatildeo a S1 Vamos mostrar o teste Dentro-Fora para o caso da classificaccedilatildeo

dos surfels do modelo S1 em relaccedilatildeo a S2

Operaccedilotildees Booleanas com Pontos 37

No item anterior foram criadas duas octrees uma para o modelo S1 e

outra para o modelo S2 Chamemos de A e B as octrees de S1 e S2

respectivamente Para classificar S1 em relaccedilatildeo a S2 inicialmente eacute feita uma

avaliaccedilatildeo da posiccedilatildeo de A em relaccedilatildeo a B A e B podem estar nas seguintes

situaccedilotildees

- A natildeo intersecta B

- A intersecta apenas noacutes ldquoforardquo de B

- A intersecta apenas noacutes ldquodentrordquo de B

- A intersecta noacutes ldquoforardquo e noacutes ldquodentrordquo de B

Para testar estas situaccedilotildees os noacutes satildeo aumentados de rmax o raio do

maior surfel do modelo soacutelido Isto eacute feito para compensar o fato de que o surfel

natildeo eacute apenas um ponto mas sim considerado como um disco

No primeiro e no segundo caso todos os surfels de A satildeo classificados

como ldquoforardquo No terceiro caso todos os surfels de A satildeo classificados como

ldquodentrordquo

No quarto caso temos que percorrer a octree A Comeccedilando pelo noacute raiz

percorre-se os filhos deste noacute Para cada filho os quatro testes acima satildeo feitos

Se o noacute filho encontra-se em um dos trecircs primeiros casos a classificaccedilatildeo eacute dada

como foi citada acima Se um filho estaacute no quarto caso e natildeo eacute um noacute folha

repete-se recursivamente o mesmo procedimento para seus filhos ateacute encontrar-

se um noacute folha Para um noacute que estaacute no quarto caso e eacute folha percorre-se a lista

de surfels que este noacute conteacutem classificando cada um destes surfels Seja sa um

surfel desta lista Para este caso percorre-se a octree B para classificar sa

Primeiramente encontramos o noacute de B que conteacutem sa Se este noacute de B foi

dividido testa-se de acordo com esta divisatildeo do noacute se o surfel sa estaacute na parte

do noacute que estaacute dentro do modelo ele eacute classificado como ldquodentrordquo se sa estaacute na

parte que estaacute fora do modelo ele eacute classificado como ldquoforardquo se sa estaacute na parte

intermediaacuteria ou se o noacute de B natildeo foi subdividido em planos encontra-se sb que

eacute o surfel pertencente a este noacute de B que estaacute mais proacuteximo de sa sa seraacute

entatildeo classificado de acordo com sb Se ( sa - sb )٠ nb gt 0 sa eacute classificado

como ldquoforardquo senatildeo eacute classificado como ldquodentrordquo Se os discos de sb e sa se

intersectam sa eacute marcado como interseccedilatildeo Para encontrar sb o algoritmo

implementa o meacutetodo TINN ndash Triangle Inequality Nearest Neighbour [19]

Operaccedilotildees Booleanas com Pontos 38

4223 Tratamento da interseccedilatildeo

Os surfels de A que intersectam surfels de B satildeo classificados como

ldquointerseccedilatildeordquo Se eles natildeo forem incluiacutedos no modelo resultado o soacutelido resultado

teraacute buracos Se eles forem incluiacutedos sem algum tratamento eles natildeo

representaratildeo adequadamente a regiatildeo Em geral o surfel sa (um surfel

ldquointerseccedilatildeordquo de A) eacute dividido em dois pelo plano que conteacutem o surfel sb (surfel de

B que sa intersecta) uma parte que estaacute fora de B e outra que estaacute dentro de B

Dependendo da operaccedilatildeo que estaacute sendo realizada vamos querer manter uma

destas partes do surfel sa no modelo resultado Seja xa a posiccedilatildeo do surfel sa e o

surfel sa uma circunferecircncia de centro xa e raio ra igual ao raio de alcance de sa

O plano que conteacutem o surfel sb define uma corda desta circunferecircncia como

mostra a Figura 11 O surfel sa seraacute substituiacutedo por um surfel menor que

ultrapassa esta corda de uma distacircncia e definida pelo usuaacuterio Para cobrir

completamente a interseccedilatildeo seratildeo adicionados surfels menores que cruzam a

corda de interseccedilatildeo

Figura 11 -Interseccedilatildeo do surfel s e do plano que passa pelo surfel t o surfel mais proacuteximo a s O surfel s eacute substituiacutedo por trecircs surfels menores

Operaccedilotildees Booleanas com Pontos 39

O tratamento de interseccedilatildeo proposto por Adams e Dutreacute [2] natildeo soacute evita

os buracos mas tambeacutem cria uma forma de renderizaccedilatildeo de arestas vivas A

colocaccedilatildeo de vaacuterios pequenos surfels na regiatildeo da interseccedilatildeo permite esta

correta renderizaccedilatildeo das ldquoarestas vivasrdquo Desta forma o problema das arestas

vivas eacute resolvido na modelagem (Figura 12) A vantagem de se resolver o caso

na modelagem eacute que natildeo eacute necessaacuterio fazer um tratamento especial na

renderizaccedilatildeo para que mostre esta aresta viva Diferente do tratamento feito

em Pauly (seccedilatildeo 431) que resolve esta questatildeo em tempo de renderizaccedilatildeo

Aleacutem disso o tratamento resolve alguns casos onde a Regra 2 poderia falhar

(veja em Validade da Regra 2-seccedilatildeo 44)

Figura 12 [2] -Agrave direita eacute mostrado o resultado do tratamento de interseccedilatildeo para o caso de Arestas Vivas do objeto agrave esquerda

43 Meacutetodo de Pauly

O meacutetodo aplica-se a objetos soacutelidos e natildeo soacutelidos Os modelos podem ser

obtidos a partir de diferentes entradas como nuvem de pontos irregulares ou por

meio de scanners 3D Cria um modelo hiacutebrido destes objetos usa o modelo por

pontos juntamente com a representaccedilatildeo impliacutecita Moving Least Squares - MLS

[18] Realiza operaccedilotildees booleanas com pontos e utiliza adicionalmente MLS

para alguns casos de classificaccedilatildeo de surfels e no tratamento de interseccedilatildeo A

seguir apresentamos as caracteriacutesticas do modelo por pontos deste meacutetodo e o

algoritmo que realiza as operaccedilotildees

Operaccedilotildees Booleanas com Pontos 40

431 Modelo em Pauly

O modelo eacute uma estrutura hiacutebrida de pontos com a representaccedilatildeo impliacutecita

Moving Least Squares - MLS [18] Esta estrutura eacute usada para fazer operaccedilotildees

booleanas e tambeacutem operaccedilotildees de free-form (natildeo abordadas nesta

dissertaccedilatildeo) Para operaccedilotildees booleanas a representaccedilatildeo MLS permite que a

curva de interseccedilatildeo entre os modelos seja reconstruiacuteda e surfels sejam

colocados nesta curva e em alguns casos de classificaccedilatildeo de surfels mostrados

na seccedilatildeo 432 Para este modelo natildeo existem restriccedilotildees quanto agrave forma do

objeto

Os surfels contecircm informaccedilotildees sobre sua posiccedilatildeo e sua normal Aleacutem

disso surfels podem conter informaccedilotildees adicionais como textura cor

propriedades de materiais

A distribuiccedilatildeo dos surfels eacute natildeo-uniforme e a amostragem eacute

aproximadamente adequada (Veja seccedilatildeo 44)

432 Algoritmo de Operaccedilotildees Booleanas

O algoritmo classifica surfels de um modelo como ldquodentrordquo ou ldquoforardquo de

outro modelo Antes de colocarmos como eacute feita esta classificaccedilatildeo devemos

acrescentar que Pauly estende esta classificaccedilatildeo para modelos que natildeo satildeo

soacutelidos Ou seja mesmo um modelo natildeo soacutelido divide o espaccedilo da cena (espaccedilo

em que se encontra o modelo) em dois sub-espaccedilos dentro ou fora do modelo

Pauly faz esta subdivisatildeo da seguinte forma

Como a superfiacutecie que determina o modelo eacute orientada (conteacutem vetores

normais agrave superfiacutecie que apontam para ldquoforardquo do modelo) Pauly considera que

um modelo natildeo soacutelido divide o espaccedilo em dois sub-espaccedilos um ldquoforardquo do

modelo (os vetores normais apontam para este sub-espaccedilo) e um que estaacute

ldquodentrordquo do modelo (os vetores normais apontam para direccedilatildeo oposta a este sub-

espaccedilo) Por exemplo um plano eacute representado como um conjunto de surfels

contidos num determinado espaccedilo geomeacutetrico plano π Cada surfel conteacutem um

vetor normal direcionado Este modelo divide entatildeo o espaccedilo em dois sub-

espaccedilos o sub-espaccedilo que eacute apontado por estes surfels (considerado ldquoforardquo do

modelo) e o sub-espaccedilo que estaacute na direccedilatildeo oposta (considerado ldquodentrordquo do

modelo) Desta forma ele aplica as classificaccedilotildees de ldquodentrordquo e ldquoforardquo de um

modelo tambeacutem a modelos natildeo soacutelidos A partir desta consideraccedilatildeo as

Operaccedilotildees Booleanas com Pontos 41

operaccedilotildees booleanas satildeo realizadas com os modelos natildeo soacutelidos da mesma

forma que com os modelos soacutelidos

Para determinar esta classificaccedilatildeo (dentro ou fora do modelo) Pauly utiliza

a Regra 2 Para pesquisa do surfel mais proacuteximo o meacutetodo usa a estrutura Kd-

tree [16] e tambeacutem o algoritmo ANN [16] No entanto o meacutetodo apresenta uma

restriccedilatildeo da Regra 2 ela soacute deve ser usada para classificaccedilotildees de pontos x se

a distacircncia x-p for maior que o espaccedilamento da amostragem local ηp em p

Este espaccedilamento da amostragem local ηp em p eacute um caacutelculo aproximado da

distacircncia meacutedia entre os surfels vizinhos a p Se x estaacute muito proacuteximo agrave

superfiacutecie a classificaccedilatildeo pode falhar Neste caso ele calcula o ponto exato de

S mais proacuteximo a x usando a projeccedilatildeo MLS (ldquoMoving Least Squaresrdquo)

Por questotildees de melhoria de desempenho utiliza-se o fato de que sendo

Ωp (x) a classificaccedilatildeo do ponto x em relaccedilatildeo agrave amostragem P tem-se que Ωp (x)

= Ωp (xrsquo) para todos os pontos de xrsquo que estatildeo dentro da esfera de centro x e

raio igual a x-p - ηp (onde p eacute o surfel mais proacuteximo e ηp eacute o espaccedilamento

local da amostragem em p acima citado) Ou seja sendo x um ponto qualquer p

o surfel mais proacuteximo a x ηp eacute o espaccedilamento local da amostragem em p se

desenharmos uma esfera com centro x e raio igual a x-p - ηp temos que

todos os pontos xrsquo que estatildeo dentro da esfera teratildeo a mesma classificaccedilatildeo de x

Desta forma o nuacutemero de vezes que a classificaccedilatildeo eacute feita (pesquisando-se o

surfel mais proacuteximo ao ponto e usando a Regra 2) diminui em ateacute 90 Assim

em geral a classificaccedilatildeo de um surfel eacute obtida a partir do seu surfel vizinho

Dados

S1 a superfiacutecie MLS de contorno que define o modelo A

S2 a superfiacutecie MLS de contorno que define o modelo B

P1 o conjunto de surfels que representa a superfiacutecie S1

P2 o conjunto de surfels que representa a superfiacutecie S2

Ωp1 (x) a classificaccedilatildeo do ponto p em relaccedilatildeo a uma amostragem P1

Q1 o subconjunto de P1 que vai compor o resultado

Ωp2 (x) a classificaccedilatildeo do ponto p em relaccedilatildeo a uma amostragem P2

Q2 o subconjunto de P2 que vai compor o resultado

Os conjuntos Q1 e Q2 satildeo obtidos por meio da Tabela 1 mostrada abaixo

Operaccedilotildees Booleanas com Pontos 42

Tabela 1 Classificaccedilatildeo para operaccedilotildees booleanas

Para o tratamento de interseccedilatildeo neste meacutetodo satildeo computados pontos

que caem exatamente na curva de interseccedilatildeo e estes satildeo acrescentados ao

modelo resultado Estes pontos satildeo determinados de forma que a densidade da

amostragem vai crescendo agrave medida que os surfels se aproximam da curva de

interseccedilatildeo e convergem para este ponto de interseccedilatildeo como mostra a Figura

13

(a) (b) (c)

Figura 13 - Os novos surfels satildeo colocados exatamente na curva de interseccedilatildeo

e convergem para o ponto de interseccedilatildeo

A Figura 14 mostra o processo de encontrar os surfels que caem nesta

curva de interseccedilatildeo Inicialmente satildeo encontrados todos os pontos de Q1 e Q2

que estatildeo proacuteximos agrave curva de interseccedilatildeo por meio da funccedilatildeo de distacircncia do

operador de projeccedilatildeo MLS Em seguida procura-se todos os pares mais

proacuteximos (q1 є Q1 q2 є Q2 ) e computa-se o ponto q na curva de interseccedilatildeo da

seguinte forma (veja a Figura 14)Seja r o ponto na linha de interseccedilatildeo dos dois

planos tangentes em q1 e q2 e que estaacute mais proacuteximo a estes dois pontos isto eacute

que minimiza a distacircncia ||r-q1|| + ||r-q2|| r eacute a primeira aproximaccedilatildeo de q e agora

pode ser projetado sobre S1 e S2 para obter dois novos pontos de partida q1rsquo e q2

rsquo

para a iteraccedilatildeo Este procedimento pode ser repetido iterativamente ateacute que os

pontos q1 e q2 convirjam ao ponto q na curva de interseccedilatildeo Normalmente este

processo requer menos de trecircs iteraccedilotildees

Operaccedilotildees Booleanas com Pontos 43

(a) (b)

(c)

Figura 14 (a) Suponhamos a reta que eacute a interseccedilatildeo do plano tangente a S1 em q1 e o

plano tangente a S2 em q2 O ponto r eacute o ponto desta reta que estaacute mais proacuteximo a q1 e

q2 (b) r eacute projetado sobre S1 e S2 obtendo-se q1acute e q2acute dois novos pontos de partida

para nova iteraccedilatildeo (c) A nova iteraccedilatildeo gera r que eacute uma aproximaccedilatildeo melhor de q

Pauly faz o tratamento de arestas vivas em tempo de renderizaccedilatildeo Ele

faz uma alteraccedilatildeo no renderizador Marca os surfels de interseccedilatildeo e ao

renderizaacute-los satildeo cortados para gerar uma aresta viva

44 Validade da Regra 2

Os dois meacutetodos analisados nesta dissertaccedilatildeo utilizam a seguinte regra

para a classificaccedilatildeo de um surfel

Regra 2 dado um volume V determinado por uma superfiacutecie de contorno

S uma amostragem P da superfiacutecie S um ponto x qualquer um ponto p є P que

eacute a amostra mais proacutexima a x um vetor ny normal a S em p e orientado para

fora de S temos que (x ndash p) np gt 0 x notinV

Em [16] eacute colocado que esta regra eacute tirada da seguinte propriedade da

geometria diferencial (aqui chamada Propriedade 1)

Propriedade 1 Dado um volume V determinado por uma superfiacutecie de

contorno S contiacutenua e duplamente diferenciaacutevel um ponto x qualquer um ponto

Operaccedilotildees Booleanas com Pontos 44

y є S que eacute o ponto de S mais proacuteximo a x um vetor ny normal a S em y e

orientado para fora de S temos que (x ndash y) ny gt 0 x notinV

A Figura 15 ilustra esta propriedade

Figura 15 Para verificar se o ponto x estaacute fora de um contorno C encontra-se o ponto y

de C Se o produto interno entre a normal em y e o vetor que liga y a x for maior que

zero entatildeo x estaacute fora de C senatildeo estaacute dentro de C

Pauly assume que tendo uma amostragem P da superfiacutecie S podemos

usar a Propriedade 1 substituindo y por p o surfel mais proacuteximo ao ponto x (x ndash

p) np gt 0 x notinV (Regra 2) Esta amostragem P em seu trabalho eacute

(aproximadamente) uma ldquoamostragem adequadardquo Tambeacutem seu tratamento de

interseccedilatildeo cria uma aproximaccedilatildeo dela (seccedilatildeo 43) Empiricamente a

ldquodiscretizaccedilatildeo da propriedaderdquo eacute vaacutelida a partir desta suposiccedilatildeo Mas isso natildeo foi

demonstrado teoricamente em seu trabalho

Pauly coloca em [16] que natildeo existe ainda uma teoria matemaacutetica rigorosa

de amostragem anaacuteloga a teoria de Fourier para superfiacutecies discretas

A melhor aproximaccedilatildeo teoacuterica para esta aacuterea eacute o uso do Eixo Medial que

foi colocado em [10] Vamos descrever este trabalho brevemente nesta seccedilatildeo

Este trabalho apresenta um algoritmo de reconstruccedilatildeo de superfiacutecie que parte de

uma amostragem adequada (abaixo definida) de pontos e obteacutem uma malha

que eacute topologicamente equivalente agrave superfiacutecie do objeto e agrave medida que a

densidade da amostragem cresce a saiacuteda converge para esta superfiacutecie

Para definir amostragem adequada o trabalho parte do conceito de Eixo

Medial

Operaccedilotildees Booleanas com Pontos 45

ldquoEixo Medialrdquo de uma superfiacutecie 2D posicionada no R3 eacute o conjunto

(fechado) de pontos pi para os quais buscando-se o ponto da superfiacutecie que

estaacute mais proacuteximo a pi mais de um ponto pertencentes a esta superfiacutecie satildeo

encontrados A Figura 16 abaixo ilustra o Eixo Medial em 2D

Figura 16 [10] As curvas de cor mais clara satildeo o Eixo Medial da curva em preto

Em duas dimensotildees os veacutertices de Voronoi de uma amostragem densa

aproximam o ldquoEixo Medialrdquo da amostragem (mas esta propriedade natildeo se

estende a 3D) A Figura 17 mostra o Eixo Medial em 3D

Figura 17 [10] Em 3D geralmente o Eixo Medial eacute uma superfiacutecie 2D (em cor mais

clara) Aqui o quadrado eacute o Eixo Medial da superfiacutecie transparente que o contorna

Podemos definir agora a amostragem adequada da seguinte forma

Supondo uma superfiacutecie suave que quer dizer uma 2-manifold duplamente

diferenciaacutevel posicionada no R3 uma ldquoamostragem adequadardquo desta superfiacutecie eacute

aquela na qual a densidade da amostragem eacute (pelo menos) inversamente

proporcional agrave distacircncia ao ldquoEixo Medialrdquo A Figura 18 mostra uma amostragem

adequada

Operaccedilotildees Booleanas com Pontos 46

Figura 18 [10] A figura mostra o diagrama de Voronoi de uma amostragem de pontos S

Da mesma forma que o a amostragem aproxima a curva os veacutertices de Voronoi

aproximam o Eixo Medial

Na praacutetica na reconstruccedilatildeo da superfiacutecie uma aproximaccedilatildeo deste ldquoEixo

Medialrdquo eacute computada (devido agrave dificuldade de computaacute-lo exatamente e em

alguns casos ateacute impossibilidade)

Melhorias Propostas 47

5 Melhorias Propostas

No capiacutetulo 4 apresentamos dois meacutetodos que realizam operaccedilotildees

booleanas em modelos por pontos o meacutetodo de Adams e Dutreacute [2] e o meacutetodo

de Pauly[3] Para esta dissertaccedilatildeo usamos o meacutetodo de Adams e Dutreacute [2] e

propomos as seguintes melhorias

- Alteramos o momento em que eacute feita a classificaccedilatildeo da octree Fazemos

esta classificaccedilatildeo durante a sua criaccedilatildeo Os noacutes filhos de um noacute pai P qualquer

satildeo classificados logo apoacutes a criaccedilatildeo de todos estes filhos de P

independentemente do restante da octree ter sido criada Isso pode ser feito

porque a octree eacute construiacuteda na ordem raiz-esquerda-direita (preorder

traversal) e portanto apoacutes todos os filhos de um noacute pai serem criados a parte

necessaacuteria da octree para a classificaccedilatildeo destes filhos jaacute estaacute criada

- A classificaccedilatildeo da octree eacute otimizada classificando-se os cantos dos seus

noacutes como dentro ou fora do modelo Na classificaccedilatildeo de um noacute n1 a partir de seu

vizinho n2 se os cantos que satildeo comuns a n1 e n2 tiverem a mesma

classificaccedilatildeo esta seraacute dada ao noacute Assim diminuiacutemos o nuacutemero de pesquisas

pelo surfel mais proacuteximo que eacute a parte criacutetica da classificaccedilatildeo dos noacutes da octree

em termos de tempo de processamento

- Acrescentamos um valor miacutenimo (maior que zero) para o nuacutemero de

surfels contidos em um noacute que eacute uma das condiccedilotildees de parada na criaccedilatildeo da

octree Verificamos que desta forma diminui-se a chance de erro na classificaccedilatildeo

de partes criacuteticas como ldquoarestas vivasrdquo

Uma comparaccedilatildeo entre a nossa implementaccedilatildeo e a de Pauly tambeacutem seraacute

feita no capiacutetulo 6

51 Descriccedilatildeo do algoritmo

O algoritmo implementado para esta dissertaccedilatildeo baseado no meacutetodo de

Adams e Dutreacute [2] pode ser dividido nas seguintes partes Criaccedilatildeo e

classificaccedilatildeo de uma octree para cada modelo Teste DentroFora Criaccedilatildeo do

modelo resultado Natildeo foi implementado tratamento especial algum de

interseccedilatildeo para o nosso plugin As proacuteximas seccedilotildees apresentam estas partes

Melhorias Propostas 48

511 Criaccedilatildeo e classificaccedilatildeo de uma octree para cada modelo

As ideacuteias do algoritmo satildeo aqui ilustradas em 2D mas a extensatildeo delas

para 3D eacute feita facilmente

Para cada modelo a octree eacute criada e classificada da seguinte forma

Figura 19-Quadtree classificada Os noacutes mais escuros estatildeo fora do modelo os mais claros dentro e os em tom intermediaacuterio satildeo noacutes de contorno

Gera-se uma ldquocaixa envolventerdquo do modelo contendo todos os surfels e

cria-se o noacute raiz da octree que corresponde a esta ldquocaixa envolventerdquo Este noacute

raiz eacute subdividido em oito filhos e seus surfels satildeo distribuiacutedos entre eles Ao

inveacutes de testarmos os valores de xy e z para cada surfel a fim de determinar

para qual filho ele iraacute utilizamos listas auxiliares Primeiro os surfels satildeo

subdivididos em dois grupos pelos valores de x e armazenados em uma lista

auxiliar Em seguida cada uma das listas eacute subdividida pelo valor de y e as

quatro listas obtidas seratildeo subdivididas pelo valor de z Ao final teremos 8 listas

de surfels cada uma delas pertencente a um filho

Cada noacute seraacute entatildeo novamente subdividido enquanto contiver um nuacutemero

de surfels gt nmin (valor preacute-definido) ou enquanto a profundidade da aacutervore lt pmax

(valor preacute-definido) Na figura 19 pmax = 3 e nmin = 3

Melhorias Propostas 49

Figura 20-O noacute cheio eacute dividido em trecircs partes agrave esquerda a regiatildeo estaacute dentro do modelo agrave direita estaacute fora e entre as duas linhas que dividem o noacute estaacute a regiatildeo que conteacutem os surfels

Os noacutes cheios recebem um tratamento especial Eles satildeo subdivididos em

trecircs partes da seguinte forma uma que estaacute fora do modelo outra que estaacute

dentro e uma que conteacutem os surfels Esta subdivisatildeo eacute feita por meio da criaccedilatildeo

de dois planos paralelos que dividem o noacute Para determinar estes planos

calcula-se o vetor nm igual agrave meacutedia das normais dos surfels do noacute nm = sum ns

sum ns onde ns eacute a normal de cada surfel do noacute Em seguida encontra-se o

surfel com maior produto interno entre a sua normal e a normal meacutedia

d1=Max(nm ٠ ns) Este surfel juntamente com a normal meacutedia define um dos

planos Encontra-se tambeacutem o surfel com menor produto interno entre a sua

normal e a normal meacutedia d2=Min (nm ٠ ns) Este surfel juntamente com a normal

meacutedia define o outro plano (Figura 20) Se o noacute conteacutem surfels de superfiacutecies de

orientaccedilotildees diferentes ele natildeo seraacute subdividido ou seja os planos coincidiratildeo

com os planos que delimitam o proacuteprio noacute Este teste foi implementado da

seguinte forma escolhe-se um surfel qualquer do noacute Calcula-se o produto

interno entre a normal deste surfel e as outras normais dos outros surfels deste

noacute Se algum produto interno for menor que zero este noacute natildeo seraacute subdividido

Apoacutes a etapa de subdivisatildeo classificam-se os oito cantos deste noacute como

dentro ou fora do modelo por meio da classificaccedilatildeo de um ponto que

descreveremos na sub-seccedilatildeo 5111

Melhorias Propostas 50

a b

c d

Figura 21-O noacute a eacute classificado pelo noacute c o noacute d tambeacutem eacute classificado pelo noacute c a classificaccedilatildeo do noacute a eacute propagada para o noacute b

Jaacute os noacutes vazios da octree seratildeo classificados como ldquodentrordquo ou ldquoforardquo do

modelo da seguinte forma cada noacute folha vazio eacute classificado a partir de um de

seus irmatildeos vizinhos adjacentes Se ele possuir um vizinho adjacente cheio ele

seraacute classificado por este vizinho se natildeo possuir os vizinhos adjacentes seratildeo

classificados primeiro e ele teraacute esta mesma classificaccedilatildeo (Figura 21) Como tem

que existir sempre pelo menos um noacute cheio entre os filhos de um noacute pai entatildeo

sempre esta classificaccedilatildeo poderaacute ser feita Com a classificaccedilatildeo de todos os

filhos tem-se tambeacutem a classificaccedilatildeo dos cantos do noacute pai

Mf03c003fmx a b

Figura 22-Os cantos a e b do noacute cheio possuem a mesma classificaccedilatildeo fora do modelo Esta classificaccedilatildeo foi dada ao noacute vazio adjacente

Melhorias Propostas 51

Para classificar um noacute vazio por meio de um noacute cheio verificam-se os

cantos comuns destes dois noacutes se todos os cantos tiverem a mesma

classificaccedilatildeo esta seraacute dada ao noacute vazio (Figura 22) Se houver classificaccedilotildees

diferentes escolhe-se o surfel do noacute cheio mais proacuteximo ao noacute vazio faz-se o

produto interno entre a normal deste surfel e o vetor que liga o centro do noacute

cheio ao centro do noacute vazio (ou o vetor que liga o surfel ao centro do noacute vazio)

Se o produto interno for maior que zero o noacute eacute classificado como ldquoforardquo senatildeo eacute

classificado como ldquodentrordquo Para encontrar o surfel (pertencente a um noacute cheio)

mais proacuteximo ao noacute vazio existem dois casos

- O noacute cheio eacute folha percorre-se toda a lista de surfels e escolhe o surfel

mais proacuteximo da fronteira entre o noacute cheio e o vazio

- O noacute cheio natildeo eacute um noacute folha percorrem-se os filhos do noacute cheio ou seja

esta pesquisa eacute feita descendo na octree a partir do noacute cheio procurando o

surfel mais proacuteximo agrave fronteira do pai com o noacute vazio a ser classificado

Classificando o centro do noacute vazio todo o noacute deve ter a mesma

classificaccedilatildeo pois este noacute natildeo conteacutem surfels Para encontrar o surfel do noacute

vazio mais proacuteximo da fronteira entre o noacute cheio e o vazio basta testar o valor da

coordenada se a fronteira eacute o lado direito do noacute cheio escolhe-se o surfel com

maior coordenada lsquoxrsquo se eacute o lado esquerdo escolhe-se o surfel com menor lsquoxrsquo

se lado superior surfel com maior lsquoyrsquo etc A seguir apresentamos a classificaccedilatildeo

de um ponto qualquer pertencente a um noacute cheio

Figura 23- Quadtree classificada

Melhorias Propostas 52

5111 Classificaccedilatildeo de um ponto de um noacute cheio

Figura 24 [2] A normal n eacute a normal meacutedia e os surfels s1 e s2 juntamente com a normal

n definem as retas que dividem o noacute O ponto a estaacute fora do modelo e o ponto b estaacute

dentro do modelo

Para um ponto localizado dentro do noacute faz-se o seguinte teste se o noacute foi

dividido testa-se de acordo com a divisatildeo do noacute se o ponto estaacute na parte do noacute

que estaacute dentro do modelo ele eacute classificado como ldquodentrordquo se o ponto estaacute na

parte que estaacute fora do modelo ele eacute classificado como ldquoforardquo (Figura 24) se o

ponto estaacute na parte que conteacutem os surfels encontra-se o surfel s pertencente ao

noacute mais proacuteximo do ponto e o classifica de acordo com s seja ns a normal em s

cs a coordenada de s cp a coordenada do ponto Se (cp - cs )٠ ns gt 0 o ponto

seraacute classificado como ldquoforardquo Senatildeo seraacute classificado como ldquodentrordquo

Se o noacute natildeo foi dividido em planos esta classificaccedilatildeo a partir do surfel

mais proacuteximo seraacute sempre feita

512 Teste DentroFora

Melhorias Propostas 53

Figura 25-Duas circunferecircncias e suas quadtrees correspondentes

O Teste DentroFora classifica os surfels de um modelo como dentro ou

fora de outro modelo ou na sua interseccedilatildeo Este teste foi aqui implementado

exatamente como foi proposto em Adams e Dutreacute [2] exceto que natildeo foi

implementado o meacutetodo TINN - Triangle Inequality Nearest Neighbour [19]

Cada octree eacute percorrida verificando-se se os seus noacutes ou surfels estatildeo dentro

fora ou no contorno do outro modelo (Figura 25) Sejam A e B duas octrees e

queremos classificar a octree A As duas octrees (AB) satildeo percorridas partindo

da raiz

Para cada noacute de A existem quatro casos (Figura 26) Para testar estas

situaccedilotildees os boxes dos noacutes satildeo aumentados de rmax o raio do maior surfel do

modelo Isto eacute feito para compensar o fato de que o surfel natildeo eacute apenas um

ponto mas sim considerado como um disco

Os quatro casos satildeo

Se o noacute de A natildeo intersecta B entatildeo todos os surfels deste noacute satildeo

classificados como fora

Se o noacute de A intersecta apenas noacutes de B que estatildeo fora do modelo

todos os surfels deste noacute satildeo fora

Se o noacute de A intersecta apenas noacutes de B que estatildeo dentro do modelo

todos os surfels deste noacute satildeo dentro

Melhorias Propostas 54

Se o noacute de A intersecta noacutes de B que estatildeo dentro e tambeacutem noacutes de B

que estatildeo fora testa-se se este noacute de A eacute ou natildeo folha Se natildeo for folha

percorre-se os filhos deste noacute de A ateacute encontrar um noacute folha cheio que

intersecta B Para cada surfel sa deste noacute folha de A encontra-se o surfel de B

mais proacuteximo e classifica-se a coordenada de sa da forma apresentada na seccedilatildeo

5111 Seja sb o surfel usado na classificaccedilatildeo de sa Se os discos de sb e sa

se intersectam sa eacute classificado como ldquointerseccedilatildeordquo

(a) (b)

(c) (d)

Figura 26- a modelos natildeo se intersectam b modelo intersecta noacutes fora c modelo intersecta apenas noacutes dentro d modelo intersecta noacutes dentro e noacutes fora

513 Criaccedilatildeo do modelo resultado

Um novo modelo eacute criado com os seguintes surfels (de acordo com a

operaccedilatildeo booleana escolhida pelo usuaacuterio - veja Regra 1 da seccedilatildeo 41)

Uniatildeo - surfels de A que estatildeo fora de B + surfels de B que estatildeo fora de A

Melhorias Propostas 55

Interseccedilatildeo - surfels de A que estatildeo dentro de B + surfels de B que estatildeo

dentro de A

Diferenccedila A-B - surfels de A que estatildeo fora de B + surfels de B que estatildeo

dentro de A (com orientaccedilatildeo invertida)

Como natildeo foi implementado tratamento especial algum de interseccedilatildeo para

o nosso plugin os surfels que se intersectam satildeo mantidos no modelo resultado

final sem modificaccedilotildees

Descrito o algoritmo vejamos a seguir a sua implementaccedilatildeo

52 Implementaccedilatildeo

Este algoritmo foi implementado na forma de um plugin para o software

PointShop 3D [11] Este plugin foi desenvolvido na linguagem C e no sistema

operacional Windows

A escolha deste tipo de implementaccedilatildeo permitiu-nos usar o software

PointShop para os testes do algoritmo Estes testes foram feitos com os modelos

disponibilizados para o PointShop [11] Nesta seccedilatildeo apresentaremos o software

PointShop e as principais estruturas de dados usadas em nosso plugin

O Pointshop eacute um software aberto com seu coacutedigo disponiacutevel e preparado

para trabalhar com plugins Eacute um software de ediccedilatildeo de modelos 3D por pontos

Ele permite aleacutem de visualizar o modelo alterar as suas caracteriacutesticas como

cor brilho e fazer mapeamento de textura iluminaccedilatildeo filtragem (Figura 27)

Melhorias Propostas 56

Figura 27-Software PointShop 3D com dois modelos carregados na sua cena

Aleacutem disso pode-se criar uma cena com vaacuterios modelos e visualizaacute-los de

qualquer ponto de vista Implementa o virtual trackball para rotacionaacute-los e

transladaacute-los Usa uma iluminaccedilatildeo simples direcional A sua arquitetura eacute

extensiacutevel permite que o usuaacuterio adicione seus proacuteprios componentes ao

sistema Possui trecircs tipos de componentes

ldquoToolsrdquo fornece funcionalidades para ediccedilatildeo interativa de superfiacutecie Satildeo

disponibilizados na ldquotoolbarrdquo

Plugins fornece funcionalidades para processar em um soacute passo

modelos ou partes deles selecionadas Satildeo disponibilizados no menu ldquoPluginsrdquo

Renderes fornece funcionalidades de display para os modelos

Para esta dissertaccedilatildeo foi escolhida a construccedilatildeo do componente Plugin

por adequar-se agrave nossa proposta e ser a mais simples de ser construiacuteda O

PointShop [11] jaacute conteacutem uma tool que executa operaccedilotildees booleanas e

deformaccedilatildeo free-form sobre os modelos carregados na cena usando o meacutetodo

de Pauly [3] apresentado no capiacutetulo 4 O nosso plugin Operaccedilotildees Booleanas

implementa o algoritmo descrito na seccedilatildeo anterior baseado na proposta de

Melhorias Propostas 57

Adams e Dutreacute [2] Uma comparaccedilatildeo entre o nosso plugin e a tool de Pauly [3] eacute

feita no capiacutetulo 6

Figura 28-Menu do PointShop com o plugin e as opccedilotildees para operaccedilotildees booleanas

Para se executar o plugin o usuaacuterio precisa carregar dois modelos na

cena do PointShop acionar o plugin informando a operaccedilatildeo que seraacute executada

O plugin executaraacute o algoritmo acima proposto e carregaraacute o resultado na cena

do Pointshop retirando os modelos anteriores

521 Estruturas de Dados

Como vimos o software PointShop [11] trabalha com modelos por pontos

Um modelo deste software descrito na seccedilatildeo 42 conteacutem todas as informaccedilotildees

que o algoritmo proposto em Bart [2] necessita Abaixo relacionamos as

Melhorias Propostas 58

principais estruturas de dados do PointShop usadas no plugin e as principais

estruturas de dados do nosso plugin

As principais classes do PointShop usadas no plugin satildeo

Classe Scene

Classe Objects

Classe SurfelColections

Classe Surfel

Classe StatusBar

Classe Transformer

A hierarquia de dados eacute a seguinte a Scene conteacutem vaacuterios Objects os

quais conteacutem SurfelColections Cada SurfelColections conteacutem Surfels que

suportam uma ou mais propriedades tais como cor difusa cor especular

Classe Scene Classe que representa uma cena que conteacutem modelos

Classe Object Um modelo eacute representado pela classe Object que

conteacutem uma SurfelCollection e as matrizes de transformaccedilatildeo para rotaccedilatildeo

escala e translaccedilatildeo Cada Object eacute identificado pelo seu nome que eacute uacutenico na

Scene O meacutetodo getUniqueName retorna um nome uacutenico Cada Object tem sua

proacutepria matriz de transformaccedilatildeo que pode ser modificada com setRotation

rotate setPosition translate setScale e scale Objects podem ser copiados com

copy Objects consiste em um conjunto de surfels os quais podem ser

recuperados pela getSurfelCollection O Object pode ser ativado com

setActiveObject e recuperado com getActiveObject

Objects podem ser adicionados ou removidos com addObject e

removeObject Os Objects podem ser obtidos pela getFirstObject e

getNextObject

Classe SurfelCollection representa o conjunto de surfels de um modelo

Cada surfelcollection consiste em um conjunto de surfels (SurfelInterface) de

tamanho obtido por getNofSurfels Os surfels podem ser recuperados com

getFirstSurfel getCurrentSurfel e getNextSurfel

A SurfelCollection conteacutem um PropertyDescriptor e uma SurfelList

A SurfelList eacute uma lista duplamente encadeada de surfels Possui os

atributos firstSurfel lastSurfel currentSurfel que satildeo ponteiros para uma

SurfelInterface nSurfels que eacute o nuacutemero de Surfels

A SurfelInterface define a API para os surfels que satildeo os menores

elementos que compotildeem um Object Podem ser considerados como pontos com

uma normal que define a orientaccedilatildeo do ciacuterculo (ou elipse) que seraacute desenhado

Melhorias Propostas 59

tatildeo logo o surfel seja renderizado Tem como atributos dois ponteiros (next e

prev) para SurfelInterface

PropertyDescriptor consiste em ateacute 32 valores descrevendo quais as

propriedades a SurfelInterface suporta

Classe Surfel classe que representa o surfel

Classe StatusBar classe que imprime mensagens na tela Os plugins

podem mandar mensagens para o usuaacuterio pela StatusBar

Mensagens texto podem ser impressas com showMessage O progresso

de uma operaccedilatildeo pode ser indicado com setProgress ou resetProgress

Classe Transformer representa a transformaccedilatildeo entre sistemas de

coordenadas Esta classe fornece meacutetodos para transformar pontos e vetores

entre os diferentes sistemas de coordenadas do Pointshop

A seguir apresentamos as principais estruturas de dados do plugin

Operaccedilotildees Booleanas

As principais estruturas de dados do plugin satildeo boundingbox tree no

lista_surfel surfel

Boundingbox conteacutem dois pontos 3D que definem uma caixa que conteacutem

o modelo um ponto com menores coordenadas xy e z e outro ponto com

maiores xyz

Tree representa a octree do modelo Cada registro conteacutem um ponteiro

para um noacute e oito ponteiros para as 8 octrees filhas

No representa um noacute da octree Conteacutem os seguintes dados

- localizaccedilatildeo do noacute que eacute o canto inferior esquerdo do noacute

- lista_surfel (preenchida apenas para noacutes folha cheios)

- quantidade de surfels do noacute

- classificaccedilatildeo do noacute como dentro fora ou contorno

- classificaccedilatildeo do noacute em relaccedilatildeo a outro modelo

- indica se o noacute eacute folha ou natildeo

- vetor que eacute a meacutedia das normais dos surfels do noacute

- ponto que eacute a meacutedia das localizaccedilotildees dos surfels do noacute

- surfel que tem (entre todos os surfels do noacute) o maior produto interno

entre a sua normal e a normal meacutedia

- surfel que tem (entre todos os surfels do noacute) o menor produto interno

entre a sua normal e a normal meacutedia

- produto interno maacuteximo e miacutenimo entre as normais dos surfels do noacute e a

normal meacutedia deste noacute

Melhorias Propostas 60

- indica se o noacute conteacutem surfels com normais em sentido oposto (produto

interno entre elas eacute menor que zero)

- classificaccedilatildeo dos oito cantos do noacute

lista_surfels lista em que cada registro conteacutem um apontador para um

surfel e um apontador para o proacuteximo registro

surfel representa o surfel da octree Conteacutem a classificaccedilatildeo em relaccedilatildeo a

outro modelo e um ponteiro para o surfel do Poinshop

Resultados 61

6 Resultados

Neste capiacutetulo apresentamos os testes realizados com o plugin para o

PointShop implementado para esta dissertaccedilatildeo a comparaccedilatildeo deste plugin com

o plugin de Pauly [3] e a comparaccedilatildeo entre o meacutetodo de Adams e Dutreacute [2] e o

meacutetodo de Pauly [3]

61 Testes

Os testes foram feitos em um PC x86 Family 6 261600 KB de RAM sem

placa graacutefica sistema operacional Windows 2000 O plugin foi implementado na

linguagem C

Os modelos usados para os testes satildeo modelos disponibilizados no

PointShop [11] Vale lembrar que o meacutetodo implementado em nosso plugin eacute

restrito a modelos soacutelidos e portanto foram usados apenas estes modelos

soacutelidos para os testes

O modelo na Figura 29 que eacute um dos modelos disponibilizados no

PointShop [11] foi usado para mostrar o resultado das operaccedilotildees realizadas

pelo plugin implementado nesta dissertaccedilatildeo O modelo Igea eacute um modelo soacutelido

que conteacutem 134345 surfels

Resultados 62

Figura 29-Modelo do PointShop Igea

Para realizar as operaccedilotildees este modelo foi carregado na cena do

PointShop duas vezes e um deles colorido de vermelho As Figuras 30 31 32

mostram o resultado da operaccedilatildeo de uniatildeo interseccedilatildeo e diferenccedila

respectivamente Os nuacutemeros de surfels dos modelos resultantes satildeo mostrados

na Tabela 2

Resultados 63

Figura 30-Resultado da uniatildeo de duas Igeas

Figura 31-Resultado da interseccedilatildeo de duas Igeas

Resultados 64

Figura 32-Resultado da diferenccedila entre duas Igeas

Tabela 2-Nuacutemero de surfels dos modelos resultantes

Observamos que o nuacutemero de surfels dos modelos resultantes estaacute

coerente com as figuras dos seus modelos

Para avaliar o tempo de processamento das operaccedilotildees foram realizados

vaacuterios testes com o objetivo de obter uma meacutedia dos tempos de realizaccedilatildeo de

cada operaccedilatildeo Tambeacutem foram armazenados os tempos da criaccedilatildeo das duas

octrees e da classificaccedilatildeo de todos os surfels dos dois objetos (como dentro ou

fora do outro modelo) Estes testes foram feitos usando o modelo Igea A meacutedia

dos tempos de processamento foi calculada e os resultados satildeo mostrados na

Tabela 3 Verificamos que o maior tempo gasto eacute para criaccedilatildeo das octrees

Verificamos tambeacutem que este resultado apresentado eacute similar ao resultado

verificado empiricamente com o plugin de Pauly [3] Os tempos gastos para

realizar as operaccedilotildees satildeo similares e o maior tempo gasto no plugin de Pauly

tambeacutem eacute para inicializaccedilatildeo de suas estruturas de dados que incluem a kd-tree

Operaccedilatildeo Nuacutemero de surfels do modelo resultado

Uniatildeo 189715

Interseccedilatildeo 72225

Diferenccedila 134552

Resultados 65

Operaccedilatildeo Criaccedilatildeo das

Octrees (seg)

Classificaccedilatildeo

(seg)

Criaccedilatildeo do

resultado (seg)

Total (seg)

Uniatildeo 39375 1324 18925 7154

Interseccedilatildeo 38585 1585 09547 63982

Diferenccedila 399875 1504 1729 729475

Tabela 3- Meacutedia dos tempos de processamento para as operaccedilotildees com duas Igeas

Com o objetivo de expor melhor os resultados deste trabalho

apresentamos abaixo mais um teste das operaccedilotildees booleanas usando o nosso

plugin Os modelos usados para este segundo teste satildeo o Max Planck e o Male

ambos modelos soacutelidos disponibilizados no PointShop Estes modelos satildeo

mostrados nas figura 33 e 34

O primeiro Max Planck conteacutem 52809 surfels

Figura 33-Modelo do PointShop MaxPlanck

O segundo modelo abaixo Male conteacutem 148138 surfels

Resultados 66

Figura 34-Modelo do PointShop Male

As Figuras 353637 mostram o resultado da operaccedilatildeo de uniatildeo interseccedilatildeo

e diferenccedila respectivamente usando os dois modelos acima Podemos observar

pela figura 35 que o resultado da operaccedilatildeo de diferenccedila neste caso gerou um

modelo resultado com trecircs partes desconexas Os nuacutemeros de surfels de cada

modelo resultado satildeo mostrados na Tabela 5

Figura 35- Resultado da Uniatildeo do modelo Male com MaxPlanck

Resultados 67

Figura 36-Resultado da interseccedilatildeo do modelo Male com o MaxPlanck

Figura 37-Resultado da diferenccedila do modelo Male do modelo MaxPlanck

As meacutedias de tempos de processamento foram calculadas da mesma

forma que o primeiro teste com o modelo Igea acima apresentado Os

resultados satildeo mostrados na Tabela 4 Podemos observar que este teste

Resultados 68

apresenta tempos um pouco menores que o teste com o modelo Igea Isto se

deve ao fato de que o modelo MaxPlanck ser significativamente menor que o

modelo Igea MaxPlanck possui 52809 surfels e Igea conteacutem 134345 surfels

Operaccedilatildeo Criaccedilatildeo das

Octrees (seg)

Classificaccedilatildeo

(seg)

Criaccedilatildeo do

resultado (seg)

Total

(seg)

Uniatildeo 3012 1254 102 5285

Interseccedilatildeo 2985 0901 0861 4747

Diferenccedila 2965 0911 0791 4667

Tabela 4-Tempo de processamento das operaccedilotildees com os modelos MaxPlanck e Male

Operaccedilatildeo Nuacutemero de surfels do resultado

Uniatildeo 126532

Interseccedilatildeo 88414

Diferenccedila 77635

Tabela 5-Nuacutemero de surfels dos modelos resultados das operaccedilotildees com os modelos MaxPlanck e Male

Em seguida apresentaremos uma comparaccedilatildeo entre o nosso plugin e o

plugin de Pauly[3] e tambeacutem uma comparaccedilatildeo entre o meacutetodo de Adams e Dutreacute

[2] e o meacutetodo de Pauly [3]

62 Comparaccedilatildeo entre os dois meacutetodos que realizam operaccedilotildees booleanas

A comparaccedilatildeo entre os meacutetodos de Pauly[3] e de Adams e Dutreacute foi feita

em termos de tempo de processamento e em termos conceituais Em termos de

tempo de processamento comparamos o plugin de Pauly[3] com o nosso plugin

Em termos de tempo de processamento verifica-se empiricamente que os

dois meacutetodos apresentam tempos bastante similares Entretanto o tempo de

processamento do algoritmo aqui implementado ainda pode ser melhorado com

Resultados 69

o uso do meacutetodo TINN [19] que foi proposto em Adams[2] - para otimizar a

pesquisa do surfel mais proacuteximo a um ponto que estaacute localizado na regiatildeo de um

noacute que conteacutem surfels - veja seccedilatildeo 42 O uso deste meacutetodo natildeo foi

implementado para este trabalho e a sua implementaccedilatildeo melhoraria o tempo de

resposta do algoritmo Aleacutem disso o trabalho de Sara F Frisken [12] citado no

capiacutetulo 2 apresenta uma otimizaccedilatildeo no uso de octrees que pode ser

incorporada no algoritmo implementado neste trabalho

Em termos conceituais vamos fazer a comparaccedilatildeo do uso do que

chamamos aqui de Regra 2 do tratamento de interseccedilatildeo e do tratamento de

ldquoarestas vivasrdquo

Como vimos na seccedilatildeo 41 tanto o algoritmo implementado nesta

dissertaccedilatildeo baseado no trabalho de Adams e Dutreacute como o meacutetodo de Pauly

[3] parte do que chamamos aqui de Regra 2 para realizar operaccedilotildees booleanas

com pontos Mas cada um destes meacutetodos daacute um tratamento diferente para o

uso desta regra

O meacutetodo de Pauly usa a Regra 2 para classificaccedilatildeo de cada ponto ou de

cada surfel Para classificar um surfel de B sb como dentro ou fora de A eacute

encontrado o surfel de A sa mais proacuteximo a sb e sb eacute classificado a partir de sa

Para encontrar sa Pauly utiliza uma kd-tree Como esta pesquisa para encontrar

sa eacute cara (mesmo usando uma kd-tree) Pauly utiliza uma esfera que conteacutem

pontos com a mesma classificaccedilatildeo (seccedilatildeo 432) e diminui em 90 este nuacutemero

de pesquisas Pauly utiliza tambeacutem a representaccedilatildeo impliacutecita MLS (Moving Least

Squares) para casos em que a Regra 2 poderia falhar e para tratamento de

interseccedilotildees Entretanto o nuacutemero destes casos em que a Regra 2 poderia falhar

eacute muito pequeno E a representaccedilatildeo MLS natildeo eacute uma estrutura simples de ser

implementada Portanto natildeo encontramos vantagens em usar MLS para estes

casos O meacutetodo de Adams e Dutreacute natildeo trata estes casos e na praacutetica

apresenta resultados bastante satisfatoacuterios como foi mostrado Portanto

consideramos que valeria a pena fazer algum tratamento especial para estes

casos se fosse um procedimento simples Para a execuccedilatildeo do algoritmo de

Pauly o uso de MLS natildeo interfere significativamente porque a construccedilatildeo desta

representaccedilatildeo natildeo eacute feita somente para realizar operaccedilotildees booleanas Os testes

empiacutericos que fizemos com o algoritmo de Pauly natildeo incluem a construccedilatildeo desta

representaccedilatildeo

Aparentemente os dois algoritmos satildeo bastante parecidos um usa octrees

e o outro usa kd-tree As duas estruturas de dados satildeo simples e otimizam a

classificaccedilatildeo dos surfels de um modelo como dentro ou fora do outro modelo

Resultados 70

Mas existe uma diferenccedila conceitual entre dois que merece ser destacada O

algoritmo aqui implementado usa a Regra 2 para classificaccedilatildeo dos noacutes de uma

octree e armazena esta octree classificada (ver capiacutetulo 5) Assim na maioria dos

casos natildeo seraacute necessaacuterio encontrar o surfel mais proacuteximo para classificar um

ponto (ou um surfel) como fora ou dentro de um modelo Caso o ponto esteja em

uma aacuterea da octree classificada ele teraacute a classificaccedilatildeo dada agravequela aacuterea A

pesquisa ao surfel mais proacuteximo seraacute feita apenas nos casos em que o ponto a

ser classificado estaacute localizado entre os planos que subdividem um noacute cheio

O uso desta octree classificada levanta uma questatildeo que natildeo foi citada no

trabalho de Adams e Dutreacute que eacute a proximidade desta estrutura (armazenada)

de octree classificada com uma representaccedilatildeo volumeacutetrica do objeto Sendo

assim esta estrutura pode ser aproveitada para outras funccedilotildees aleacutem da

classificaccedilatildeo dos surfels Por exemplo podemos ter uma aproximaccedilatildeo do

volume de uma cena somando os volumes aproximados dos modelos que a

compotildeem Como o enfoque deste trabalho eacute operaccedilatildeo booleana natildeo vamos nos

aprofundar nesta questatildeo

Outra importante diferenccedila entre os dois trabalhos que jaacute foi explicada na

seccedilatildeo 432 eacute que o meacutetodo de Pauly aplica-se a modelos soacutelidos ou natildeo

soacutelidos enquanto que o meacutetodo de Adams e Dutreacute aplica-se somente a modelos

soacutelidos

Quanto ao tratamento de interseccedilatildeo em termos de visualizaccedilatildeo todos os

dois resolvem bem o problema O tratamento de interseccedilatildeo nos dois trabalhos

tambeacutem resolve o problema da validade da Regra 2 (ver seccedilatildeo 44) Entretanto

o tratamento de Adams e Dutreacute natildeo depende da renderizaccedilatildeo sendo portanto

mais portaacutevel Aleacutem disso uma desvantagem do meacutetodo de Pauly eacute o uso da

representaccedilatildeo impliacutecita MLS (ldquoMoving Least Squaresrdquo) do objeto para obter os

pontos exatamente na curva de interseccedilatildeo Esta representaccedilatildeo torna o

tratamento de interseccedilatildeo mais complexo e a vantagem apresentada natildeo eacute tatildeo

significativa para este tratamento de interseccedilatildeo

Conclusatildeo 71

7 Conclusatildeo

Concluiacutemos entatildeo que as escolhas de Adams e Dutreacute por usar uma

octree classificada e pelo tratamento dado agrave interseccedilatildeo satildeo mais abrangentes

que a escolha de Pauly E consideramos que quanto mais abrangente for uma

escolha conceitual mais resultados poderemos tirar dela No caso de Adams e

Dutreacute eles estendem o problema de classificar um ponto para classificar todo o

modelo Como foi citado ele quase fornece uma representaccedilatildeo volumeacutetrica do

modelo Esta aproximada representaccedilatildeo volumeacutetrica pode nos fornecer outras

informaccedilotildees como por exemplo o volume aproximado do modelo

Aleacutem disso o uso da representaccedilatildeo impliacutecita MLS no meacutetodo de Pauly cria

uma complexidade a mais para o meacutetodo sem apresentar vantagens para a

realizaccedilatildeo de operaccedilotildees booleanas que eacute o nosso enfoque

Logo podemos dizer que o meacutetodo de Adams e Dutreacute apresenta as

seguintes vantagens em relaccedilatildeo ao de Pauly

- a estrutura de octree classificada aleacutem de ser usada para classificaccedilatildeo

fornece informaccedilotildees adicionais como volume aproximado do objeto

- o tempo de processamento no meacutetodo de Adams e Dutreacute tende a ser

melhor que no meacutetodo de Pauly se implementadas as melhorias acima citadas e

se colocaacutessemos em consideraccedilatildeo o uso da representaccedilatildeo impliacutecita MLS

(Moving Least Squares)

- o tratamento de interseccedilatildeo de Adams e Dutreacute apresenta a vantagem da

portabilidade ou seja iraacute funcionar independente do algoritmo de renderizaccedilatildeo

utilizado

E as vantagens do meacutetodo de Pauly em relaccedilatildeo ao de Adams e Dutreacute

- a colocaccedilatildeo de surfels exatamente na curva de interseccedilatildeo

- a possibilidade de trabalhar com modelos soacutelidos ou natildeo soacutelidos

E finalizando concluiacutemos que o estudo relatado nesta dissertaccedilatildeo foi

importante por

- fornecer um breve estudo sobre modelagem por pontos uma nova e

promissora aacuterea dentro da computaccedilatildeo graacutefica

Conclusatildeo 72

- por apresentar uma avaliaccedilatildeo dos dois trabalhos existentes sobre

operaccedilotildees booleanas com pontos encontrando as vantagens de cada um

e levantando questotildees que natildeo tinham sido citadas nos trabalhos originais

- por propor e implementar melhorias ao trabalho de Adams e Dutreacute

71 Trabalhos Futuros

Nossa implementaccedilatildeo pode ser ainda evoluiacuteda com as propostas

apresentadas na seccedilatildeo 62 Como observamos o tempo de processamento do

algoritmo aqui implementado ainda pode ser melhorado com o uso do meacutetodo

TINN [19] - que foi proposto em Adams[2] - para otimizar a pesquisa do surfel

mais proacuteximo a um ponto que estaacute localizado na regiatildeo de um noacute que conteacutem

surfels Aleacutem disso o trabalho Simple and Efficient Trasversal Methods for

Quadtrees and Octrees de Sara F Frisken [12] citado no capiacutetulo 2 apresenta

uma otimizaccedilatildeo no uso de octrees Outra proposta para melhorar o tempo de

processamento do algoritmo aqui implementado eacute usar a forma de trabalhar com

octrees apresentada neste trabalho

O trabalho de Adams e Dutreacute [2] eacute aplicado apenas a objetos soacutelidos O

nosso plugin portanto aplica-se somente a este tipo de objeto Jaacute o trabalho de

Pauly[3] eacute aplicado tambeacutem a modelos natildeo soacutelidos Apresentamos como

proposta a um trabalho futuro a extensatildeo do algoritmo aqui implementado para

modelos natildeo soacutelidos O surfel pode conter uma informaccedilatildeo adicional que indica

se ele estaacute delimitando um volume ou natildeo Assim pode-se ter um modelo com

ldquopartes soacutelidasrdquo e ldquopartes natildeo soacutelidasrdquo Por exemplo a uniatildeo de um plano com

uma esfera poderia resultar numa esfera com ldquoabasrdquo (seriam as partes do plano

que estariam fora da esfera) O modelo resultado teria uma parte correspondente

a um espaccedilo 3D (esfera) e outra parte que seria uma superfiacutecie 2D posicionada

no espaccedilo 3D sem delimitar algum volume (abas)

Muitos trabalhos podem ser desenvolvidos aplicando-se o modelo por

pontos em animaccedilatildeo jogos visualizaccedilatildeo de terrenos criaccedilatildeo de protoacutetipos etc

considerando-se a eficiecircncia e simplicidade do modelo E mais especificamente

as operaccedilotildees booleanas com pontos podem ser aplicadas para criaccedilatildeo de

cenaacuterios testes de colisotildees e nestes casos a representaccedilatildeo usando octrees

pode ser mais explorada considerando-se o seu potencial de representaccedilatildeo

volumeacutetrica de um objeto

Referecircncias Bibliograacuteficas 73

8 Referecircncias Bibliograacuteficas

[1] MAumlNTYLAuml M An Introduction to Solid Modeling Computer Science Press 1988

[2] ADAMS B DUTREacute P Interactive Boolean Operations on Surfel-

Bounded Solids Proceedings of SIGGRAPH 2003 San Diego USA 2003

[3] PAULY M KEISER R KOBBELT L GROSS M Shape Modeling

with Point-Sampled Geometry SIGGRAPH 2003 Computer Graphics

Proceedings Annual Conference Series ACM Press ACM SIGGRAPH 2003

[4] LEVOY M WHITTED T The Use of Points as Display Primitives

Technical Report TR 85-022 The University of North Carolina at Chapel Hill

Department of Computer Science 1985

[5] PFISTER H ZWICKER M VAN BAAR J GROSS M 2000 Surfels

Surface Elements as Rendering Primitives SIGGRAPH 2000 pp 335ndash342 New

Orleans LA July 23-28 2000

[6] ZWICKER M PFISTER H VAN BAAR J GROSS M Surface

Splatting SIGGRAPH 2001

[7] PAULY M KOBBELT L GROSS M Multiresolution Modeling of

Point-Sampled Geometry CS Techinical Report 378 September 16 2002

[8] CURLESS B New Methods for Surface Reconstruction from Range Images PhD thesis Stanford University 1997

[9] RUSINKIEWICZ S Real-time Acquisition and Rendering of Large 3D Models PhD thesis Stanford University 2001

Referecircncias Bibliograacuteficas 74

[10] AMENTA N BERN M KAMVYSSELIS M A new Voronoi-Based

Surface Reconstruction Algorithm SIGGRAPH 98 Conference proceedings pp

415-421 New York 1998

[11] ZWICKER M PAULY M KNOLL O GROSS M Pointshop 3D an

Interactive System for Point-Based Surface Editing Proceedings of SIGGRAPH 2002 San Antonio TX July 2002

[12] FRISKEN S PERRY R Simple and Efficient Traversal Methods for

Quadtrees and Octrees Journal of Graphics Tools Vol 7 Issue 3 May 2003

[13] CORREcircA W T OLIVEIRA M M Silva C T Wang J

Modeling and Rendering of Real Environments

Revista de Informaacutetica Teoacuterica e Aplicada (Brazilian Journal of Theoretic and Applied Computing) 9(2)127-156 2002

[14] DAVIS J MARSCHNER S GARR M LEVOY M Filling Holes in

Complex Surfaces Using Volumetric Diffusion First International Symposium on 3D Data Processing Visualization Transmission June 2002

[15] RAumlSAumlNEN J Surface Splatting Theory Extensions and Implementation Masterrsquos Thesis Dept of Computer Science Helsinki

University of Technology May 28 2002

[16] PAULY M Point Primitives for Interactive Modeling and Processing of 3D Geometry PhD thesis Federal Institute of Technology (ETH)

of Zurich 2003

[17] HOPPE H DEROSE T DUCHAMP T MCDONALD J

STUELZLE W Surface Reconstruction from Unorganized Points Computer Graphics 26(2)71ndash78 July 1992

[18] ALEXA M BEHR J COHEN-OR D FLEISHMAN S LEVIN D

SILVA C T Point Set Surfaces IEEE Visualization 2001 pp 21ndash28 October

2001

Referecircncias Bibliograacuteficas 75

[19] GREENSPAN M GODIN G TALBOT J Acceleration of Binning

Nearest Neighbor Methods Proceedings of Vision Interface 2000 pp 337-

344

[20] MENCL R Reconstruction of Surfaces from Unorganized Three-Dimensional Point Clouds Dissertation Dortmund Univ 2001

[21] KRIVANEK J Representing and Rendering Surfaces With Points

httpciteseernjneccomkrivanek03representinghtml Acesso em 30 jul

2003

[22] KRISTJANSSON ET AL Approximate Boolean Operations on Free-

form Solids Proceedings of SIGGRAPH 01 2001

Modelagem por Pontos 21

Figura 1 [20] -Um modelo por pontos e sua visualizaccedilatildeo

Um modelo por pontos representa um objeto atraveacutes de seu contorno Eacute

um tipo de representaccedilatildeo B-Rep (Boundary Representation) [1] Este contorno

consiste em uma superfiacutecie 2D posicionada no espaccedilo 3D Na modelagem por

pontos ela eacute representada por um conjunto de pontos 3D que satildeo uma

amostragem dos (infinitos) pontos que formam a superfiacutecie contiacutenua (Figura 1) A

amostragem pode ser obtida de diversas maneiras Uma delas o processo de

aquisiccedilatildeo progrediu muito nos uacuteltimos anos e este foi um dos fatores que tornou

muito importante o desenvolvimento deste modelo por pontos Outra forma de

gerar amostragem eacute fazer uma conversatildeo de um outro modelo NURBS por

exemplo para o modelo por pontos

Estes pontos satildeo denominados surfels e podem conter aleacutem da posiccedilatildeo

3D outras informaccedilotildees como normal agrave superfiacutecie cor textura raio de alcance A

Figura 2 mostra um conjunto de surfels representando uma superfiacutecie No surfel

em destaque podemos ver o raio de alcance rt e a normal n agrave superfiacutecie

Modelagem por Pontos 22

Figura 2 [5] A superfiacutecie modelada por surfels O surfel em destaque tem raio de alcance

rt e normal n

Como o modelo natildeo armazena qualquer informaccedilatildeo sobre a conexatildeo entre

os surfels a reconstruccedilatildeo da superfiacutecie contiacutenua a partir dele pode exigir

algumas restriccedilotildees na amostragem (seccedilatildeo 36)

32 Tipos de distribuiccedilatildeo dos surfels

Existem dois tipos de distribuiccedilatildeo dos surfels na modelagem por pontos

uniforme e natildeo uniforme Na distribuiccedilatildeo uniforme cada um deles descreve

partes de mesmo tamanho da superfiacutecie Na natildeo uniforme cada surfel armazena

a informaccedilatildeo de seu raio de alcance que eacute o raio do disco que este surfel

representa

A distribuiccedilatildeo uniforme tem a vantagem de ser mais simples e natildeo ser

necessaacuterio armazenar o raio de alcance do disco mas ela apresenta a seguinte

desvantagem se o modelo possui regiotildees com muito detalhe e regiotildees com

pouco detalhe ele teraacute que manter uma alta densidade mesmo nas regiotildees de

poucos detalhes

33 Estrutura de multi-resoluccedilatildeo

Um objeto pode ser representado em vaacuterios niacuteveis de detalhes Por

exemplo podemos representar um mesmo objeto com vaacuterias resoluccedilotildees

diferentes Este conceito pode ser aplicado ao modelo por pontos Desta forma

um modelo eacute representado por uma estrutura hieraacuterquica (uma aacutervore por

exemplo) onde em cada niacutevel temos uma representaccedilatildeo do objeto em uma

Modelagem por Pontos 23

determinada resoluccedilatildeo Em [7] Pauly et al propotildeem algoritmos para modelagem

multi-resoluccedilatildeo em modelos por pontos

34 Dados que um surfel pode conter

Cada surfel armazena sua localizaccedilatildeo e pode tambeacutem conter informaccedilotildees

como a cor ou coordenadas de textura Se a amostragem natildeo for uniforme o

surfel conteacutem a informaccedilatildeo do raio de alcance que eacute o raio de um disco cujo

centro eacute a posiccedilatildeo do surfel O surfel pode tambeacutem conter o vetor normal agrave

superfiacutecie e assim o surfel pode ser visto como um disco orientado A superfiacutecie

tambeacutem pode ser vista como uma superfiacutecie orientada

35 Aquisiccedilatildeo do modelo

Esta introduccedilatildeo sobre aquisiccedilatildeo do modelo aqui apresentada baseia-se no

tutorial de W T Correcirca [13]

O processo de aquisiccedilatildeo consiste em obter uma amostragem de pontos da

superfiacutecie do objeto real por meio de equipamentos como por exemplo o

scanner 3D Eacute uma aacuterea que tem progredido muito nos uacuteltimos anos A

resoluccedilatildeo e a precisatildeo dos equipamentos de aquisiccedilatildeo tecircm melhorado bastante

e o custo deles reduzido de forma significativa Isso possibilita que a aquisiccedilatildeo

de modelos 3D seja usada em aplicaccedilotildees de desenho industrial arte ou em

produtos para a aacuterea de entretenimento O consequumlente maior uso destes

equipamentos criou a necessidade de avanccedilos no tratamento dos seus dados de

saiacuteda que satildeo um conjunto de pontos

Este processo pode ser dividido em trecircs partes [13] aquisiccedilatildeo da

geometria aquisiccedilatildeo da textura e correccedilatildeo de falhas da aquisiccedilatildeo

351 Aquisiccedilatildeo da geometria

Existem vaacuterios meacutetodos de aquisiccedilatildeo da geometria Curless [8] e

Rusinkiewicz [9] classificaram estes meacutetodos em trecircs categorias meacutetodos por

contato transmissatildeo e reflexatildeo

O meacutetodo por contato toca a superfiacutecie do objeto com uma sonda e grava

a posiccedilatildeo Este meacutetodo do qual o Coordinate Measuring Machines (CMMs) eacute

Modelagem por Pontos 24

um exemplo eacute bastante preciso mas eacute muito lento e natildeo adequado a objetos

fraacutegeis

Meacutetodos por transmissatildeo projetam ondas de energia sobre o objeto e

gravam a energia transmitida Por exemplo tomografia computadorizada que

projeta ondas de raio-x sobre o objeto e mede a quantidade de radiaccedilatildeo que

passa atraveacutes dele O resultado eacute um modelo geomeacutetrico de alta resoluccedilatildeo Este

meacutetodo pode captar detalhes do objeto que natildeo satildeo visiacuteveis de fora do objeto

Por outro lado ele eacute caro e arriscado

Meacutetodos por reflexatildeo podem ser oacuteticos ou natildeo-oacuteticos Natildeo-oacuteticos incluem

radares que medem a distacircncia a um objeto enviando microondas ou ondas

sonoras para o objeto e gravando o tempo que a onda gasta para retornar Estes

meacutetodos natildeo satildeo muito precisos nem raacutepidos

Meacutetodos por reflexatildeo oacuteticos podem ser passivos ou ativos Meacutetodos oacuteticos

passivos natildeo interagem com o objeto e incluem teacutecnicas de visatildeo computacional

como shape-from-shading stereo triangulation optical flow e meacutetodos de

decomposiccedilatildeo para video streams Estes meacutetodos raramente constroem

modelos precisos e sua maior aplicaccedilatildeo eacute em reconhecimento de objetos

Meacutetodos oacuteticos ativos projetam luz sobre um objeto de maneira estruturada

e atraveacutes da reflexatildeo da luz determinam a forma do objeto Exemplos satildeo depth

from defocus photometric stereo projected-light triangulation time of flight

Meacutetodos por reflexatildeo oacuteticos ativos tecircm muitas vantagens sobre os passivos tecircm

um melhor desempenho quando natildeo existe textura satildeo mais baratos e mais

robustos e produzem uma amostragem precisa

352 Aquisiccedilatildeo da textura

Idealmente noacutes gostariacuteamos de ter uma completa descriccedilatildeo de como um

ponto da superfiacutecie reflete a luz dependendo do vetor normal a esta superfiacutecie

da direccedilatildeo do raio de luz incidente e do comprimento de onda Tal descriccedilatildeo eacute

conhecida como Bidirectional Reflectance Distribution Function (BRDF) Medir

BRDFs com precisatildeo eacute um problema difiacutecil

Pode-se ter uma aproximaccedilatildeo da aquisiccedilatildeo de cores do objeto tirando

fotos dele O objeto eacute fotografado e a cor de cada ponto da superfiacutecie eacute obtida a

partir de um mapeamento das fotos 2D para o modelo 3D Para mapear a

fotografia agrave geometria precisamos conhecer os paracircmetros de projeccedilatildeo da

cacircmera e a sua posiccedilatildeo no momento em que a foto foi batida Para cada ponto

Modelagem por Pontos 25

3D do modelo encontramos sua projeccedilatildeo 2D no plano da cacircmera e associamos

a cor do pixel nesta projeccedilatildeo agrave cor do ponto 3D

353 Correccedilatildeo das falhas da aquisiccedilatildeo

O processo de aquisiccedilatildeo deixa frequumlentemente buracos no modelo devido

a ruiacutedos no processo ou agrave impossibilidade de aquisiccedilatildeo de determinadas partes

de uma superfiacutecie Estes buracos devem ser corrigidos Pode-se usar por

exemplo um filtro de passa-baixa para remoccedilatildeo de ruiacutedos [14] Meacutetodos de

difusatildeo geomeacutetrica tecircm sido aplicados para preenchimento dos buracos [15] A

correccedilatildeo das falhas eacute tida como um preacute-processamento para o processo de

reconstruccedilatildeo da superfiacutecie contiacutenua (seccedilatildeo 36)

36 Reconstruccedilatildeo da superfiacutecie (contiacutenua) a partir do modelo (discreto)

A reconstruccedilatildeo da superfiacutecie contiacutenua consiste em a partir de um conjunto

natildeo estruturado de pontos obter um modelo contiacutenuo desta superfiacutecie Esta

reconstruccedilatildeo eacute frequumlentemente exigida para um modelo por pontos Na sua

visualizaccedilatildeo podemos desejar focar qualquer parte do modelo Para fazermos

operaccedilotildees booleanas com os modelos podemos querer determinar exatamente

onde eles se intersectam

No entanto natildeo precisamos ter necessariamente a representaccedilatildeo contiacutenua

de todo o objeto ao mesmo tempo A reconstruccedilatildeo desta superfiacutecie a partir dos

pontos amostrados pode ser feita no momento que for mais adequado agrave

aplicaccedilatildeo Na visualizaccedilatildeo a reconstruccedilatildeo pode ser feita na projeccedilatildeo 2D da

parte do modelo em foco (seccedilatildeo 37) Para operaccedilotildees booleanas pode-se

reconstruir apenas a aacuterea da interseccedilatildeo dos modelos

Este processo de reconstruccedilatildeo de superfiacutecie tem sido muito estudado em

modelagem geomeacutetrica e geometria computacional nos uacuteltimos anos O trabalho

mais importante desta aacuterea eacute o trabalho de Amenta et al [10] que foi a primeira

soluccedilatildeo com garantias demonstraacuteveis para este problema de reconstruccedilatildeo de

superfiacutecie A seccedilatildeo 44 explica estes conceitos e o trabalho [10] Este trabalho

demonstra que teoricamente para que a reconstruccedilatildeo da superfiacutecie (contiacutenua) a

partir das amostras seja correta a amostragem deve ser adequada Ele usa o

conceito de ldquoEixo Medialrdquo para definir o que eacute uma amostragem adequada

Modelagem por Pontos 26

(seccedilatildeo 44) Em duas dimensotildees os veacutertices de Voronoi de uma amostragem

densa aproximam o ldquoEixo Medialrdquo da amostragem

Por meio deste conceito de Eixo Medial [1016] obtecircm-se paracircmetros

teoacutericos para a definiccedilatildeo de amostragem adequada e baseado neste conceito

o algoritmo apresentado em [10] traz uma soluccedilatildeo praacutetica para o problema

obtendo uma malha poligonal a partir do modelo por pontos

O PointShop 3D [11] software de ediccedilatildeo de modelos por pontos utilizado

nesta pesquisa faz quando necessaacuterio a reconstruccedilatildeo da superfiacutecie Para isso

o PointShop 3D explora a vizinhanccedila local (surfels vizinhos de acordo com suas

posiccedilotildees) Ele usa o conceito de Eixo Medial para justificar seu meacutetodo de

reconstruccedilatildeo da superfiacutecie que na praacutetica apresenta resultados bastante

satisfatoacuterios apesar de teoricamente natildeo ter garantias [16]

37 Visualizaccedilatildeo do modelo

A primeira abordagem para visualizaccedilatildeo de um modelo por pontos foi

construir uma malha de poliacutegonos a partir dos surfels e renderizaacute-la Mas a

construccedilatildeo de malhas a partir dos surfels eacute um processo muito caro e lento

principalmente para modelos complexos Na tentativa de obter uma visualizaccedilatildeo

interativa do modelo por pontos estatildeo sendo estudadas teacutecnicas que utilizam

surfels como primitiva de visualizaccedilatildeo A ideacuteia foi apresentada inicialmente por

Levoy [4]

Figura 3 [21] -Modelo por pontos e sua renderizaccedilatildeo usando Surface Splatting

Modelagem por Pontos 27

O objetivo da renderizaccedilatildeo a partir dos surfels eacute projetaacute-los na tela e

reconstruir as superfiacutecies de forma contiacutenua sem buracos Para que esta

renderizaccedilatildeo seja amplamente utilizada deve-se ter cuidado com o uso de

memoacuteria e com a qualidade da imagem gerada Teacutecnicas recentes como Surface

Splatting [6] faz a renderizaccedilatildeo interativamente com qualidade (Figura 3)

comparada a outros meacutetodos de renderizaccedilatildeo como Image Based Rendering

Em geral a visualizaccedilatildeo do modelo por pontos pode ser dividida nas seguintes

etapas

- warping - projeccedilatildeo em perspectiva de cada ponto do modelo na tela

processo anaacutelogo agrave projeccedilatildeo de veacutertices dos triacircngulos na malha triangular Se

um pixel da tela estiver contido em mais de uma projeccedilatildeo de surfels (vizinhos)

ou seja mais de um ponto cobre este pixel os atributos destes pontos seratildeo

combinados

- shading por ponto - o processo de shading eacute realizado para cada ponto

visiacutevel (os pontos que natildeo satildeo vistos do ponto de vista em questatildeo devem ser

retirados) Qualquer modelo local de shading pode ser aplicado Uma nova

teacutecnica foi proposta em Surface Splatting [6]

- reconstruccedilatildeo da imagem ndash pixels que natildeo ldquoreceberamrdquo projeccedilatildeo de

nenhum ponto formam buracos na imagem Esta imagem deve ser reconstruiacuteda

sem buracos sem aliasing e as superfiacutecies devem ser reconstruiacutedas de forma

contiacutenua e devem ser ldquosuavizadasrdquo (smooth surface)

Os algoritmos de renderizaccedilatildeo por pontos podem tratar a questatildeo de

buracos na visualizaccedilatildeo de trecircs formas [17]

Detecccedilatildeo e preenchimento de buracos no espaccedilo da tela pontos satildeo

projetados na tela e pixels que natildeo receberam pontos satildeo detectados (buracos)

Para preencher estes buracos que natildeo receberam pontos eacute feita uma

interpolaccedilatildeo entre os vizinhos

Geraccedilatildeo de mais pontos a superfiacutecie eacute interpolada no espaccedilo do modelo

para garantir que todos os pixels recebam pelo menos a projeccedilatildeo de um ponto

Splatting um surfel eacute projetado na tela e sua contribuiccedilatildeo eacute espalhada de

forma diferenciada para os pixels vizinhos Agrave medida em que o vizinho se torna

mais distante a contribuiccedilatildeo do surfel diminui

Raumlsaumlnen faz uma analogia do processo de renderizaccedilatildeo proposto em [6]

com o mapeamento de textura [15] No mapeamento de textura para um

determinado pixel da tela satildeo encontrados os pontos da textura que afetam este

Modelagem por Pontos 28

pixel Num sentido inverso em splatting para um determinado surfel (que

representa a textura) satildeo encontrados os pixels da tela que este surfel afeta

38 Ediccedilatildeo do modelo

Ediccedilatildeo de um modelo 3D consiste em operaccedilotildees que modificam

caracteriacutesticas deste modelo como cor textura forma ou criam novos modelos

O software PointShop 3D [11] software de ediccedilatildeo de modelos por pontos 3D

implementa vaacuterias destas operaccedilotildees (ver seccedilatildeo 52)

Para modificar a forma de um modelo ou criar um novo satildeo muito usadas

as operaccedilotildees booleanas que eacute o nosso enfoque nesta dissertaccedilatildeo Na

modelagem CSG (Constructive Solid Geometry) as operaccedilotildees booleanas satildeo

usadas juntamente com primitivas soacutelidas para definir um modelo No entanto

em alguns tipos de modelos estas operaccedilotildees satildeo difiacuteceis como por exemplo

em malhas poligonais Com pontos elas podem ser feitas interativamente [32]

Operaccedilotildees Booleanas com Pontos 29

4 Operaccedilotildees Booleanas com Pontos

Operaccedilotildees booleanas satildeo as operaccedilotildees de uniatildeo interseccedilatildeo e diferenccedila

definidas na teoria matemaacutetica de conjuntos Estas operaccedilotildees satildeo aplicadas em

modelos soacutelidos para alteraacute-los ou para criar novos modelos A Figura 4 abaixo

mostra a criaccedilatildeo de trecircs novos modelos a partir de quatro modelos iniciais

Figura 4 [22] Trecircs modelos novos foram criados a partir dos quatro iniciais (esfera

cilindro dois cubos) O primeiro eacute a esfera menos um cubo em seguida retirou-se outro

cubo e por uacuteltimo retirou-se o cilindro

Estas operaccedilotildees satildeo aplicadas em objetos modelados por pontos em dois

trabalhos no trabalho de Bart Adams e Philip Dutreacute [2] e no trabalho de Pauly

et Al [3] Neste capiacutetulo a seccedilatildeo 41 apresenta a parte comum aos dois

trabalhos e as seccedilotildees 42 e 43 apresentam as particularidades de cada um A

seccedilatildeo 44 discute uma questatildeo natildeo explicitada em nenhum dos dois trabalhos

41 Meacutetodos para realizar operaccedilotildees booleanas em objetos modelados por pontos

A Figura 5 mostra o resultado do meacutetodo de Adams[2] operaccedilotildees de

uniatildeo diferenccedila e interseccedilatildeo de objetos soacutelidos 3D modelados por pontos

Operaccedilotildees Booleanas com Pontos 30

Figura 5 [2]-A partir de dois modelos por pontos uma heacutelice e uma cabeccedila as trecircs operaccedilotildees booleanas satildeo mostradas da esquerda para a direita uniatildeo diferenccedila e interseccedilatildeo

Sejam A e B objetos 3D soacutelidos modelados por pontos Definem-se os

seguintes elementos

Af ndash superfiacutecie (contorno) de A que estaacute fora de B

Ad ndash superfiacutecie (contorno) de A que estaacute dentro de B

Bf ndash superfiacutecie (contorno) de B que estaacute fora de A

Bd ndash superfiacutecie (contorno) de B que estaacute dentro de A

O resultado da operaccedilatildeo booleana entre A e B seraacute um modelo C cuja

superfiacutecie de contorno pode ser determinada pela seguinte regra [2] que aqui

chamamos de Regra 1

Regra 1 A U B Af + Bf

A cap B Ad + Bd

A ndash B Af + Bd (com a orientaccedilatildeo invertida)

B ndash A Ad (com a orientaccedilatildeo invertida) + Bf

A Figura 6 mostra as operaccedilotildees com dois modelos A e B

(a) (b)

Operaccedilotildees Booleanas com Pontos 31

(c) (d)

Figura 6 [22] (a) Dois modelos A e B (b) Posicionados de forma que A tem

uma parte dentro de B eacute mostrado o resultado A U B Af + Bf (c) Resultado de A ndash B Af

+ Bd (d) Resultado de A cap B Ad + Bd

Bart [2] e Pauly [3] apresentam dois meacutetodos para determinar os

elementos acima Estes dois meacutetodos satildeo construiacutedos a partir dos seguintes

conceitos os elementos Af Ad Bf Bd satildeo uma parte da superfiacutecie modelada por

pontos e portanto satildeo conjuntos de surfels Para determinaacute-los eacute necessaacuteria

entatildeo a classificaccedilatildeo de um surfel (que pode se resumir agrave classificaccedilatildeo de um

ponto que eacute o seu centro) de uma superfiacutecie como dentro ou fora de um outro

modelo Os dois meacutetodos utilizam a seguinte regra para esta classificaccedilatildeo aqui

denominada Regra 2

Regra 2 Dado um ponto x qualquer um volume V determinado por uma superfiacutecie

de contorno S uma amostragem P da superfiacutecie S um ponto p є P que eacute a

amostra mais proacutexima a x um vetor np normal agrave S em p e orientado para fora de

S temos que

(x ndash p) np gt 0 x notinV

Ou seja para classificar um ponto em relaccedilatildeo a um modelo verificamos o

produto interno entre a normal em p (surfel mais proacuteximo a x) e o vetor (x - p)

se este produto interno for maior que zero x natildeo pertence ao volume V e seraacute

classificado como fora senatildeo seraacute classificado como dentro De maneira

ainda mais informal se a normal em p apontar para a direccedilatildeo oposta a x x seraacute

classificado como dentro se apontar para x x seraacute classificado como fora

A Figura 7 mostra a Regra 2

Operaccedilotildees Booleanas com Pontos 32

Figura 7 Para classificar o ponto x encontra-se o surfel p (com normal np) mais proacuteximo

a x Se o produto interno entre np e (x ndash p) for maior que zero entatildeo x eacute classificado como

fora senatildeo seraacute classificado como dentro

A validade da Regra 2 eacute discutida na Seccedilatildeo 44 Uma das restriccedilotildees

teoacutericas para garantir-lhe a validade eacute que a superfiacutecie seja suave

Cada um dos dois meacutetodos daacute um tratamento diferente para o uso desta

regra Pauly usa a regra diretamente encontrando o surfel mais proacuteximo a um

ponto e classificando este ponto a partir deste surfel Ele utiliza tambeacutem a

representaccedilatildeo impliacutecita MLS (Moving Least Squares [18]) para casos em que a

Regra 2 poderia falhar e para tratamento de interseccedilotildees [3] Seu meacutetodo vale

para modelos soacutelidos ou natildeo soacutelidos O meacutetodo de Adams e Dutreacute [2] utiliza

octrees [1] criando uma classificaccedilatildeo dos noacutes da octree a partir desta Regra 2

Os pontos satildeo entatildeo classificados de acordo com o noacute da octree que o conteacutem

Este segundo meacutetodo aplica-se somente a modelos soacutelidos Os dois meacutetodos

seratildeo descritos em detalhes nas seccedilotildees abaixo

Como um surfel eacute considerado um disco podemos dizer que surfels de

dois modelos diferentes podem se intersectar A interseccedilatildeo destes dois surfels

corresponde agrave interseccedilatildeo destes dois discos Estes surfels geram problemas

para visualizaccedilatildeo se forem acrescentados ao resultado sem um tratamento

especiacutefico apresentaratildeo artefatos natildeo desejaacuteveis na renderizaccedilatildeo do modelo

resultado (Figura 8) se natildeo forem acrescentados ao resultado deixaratildeo buracos

no modelo

Operaccedilotildees Booleanas com Pontos 33

Figura 8 [2] -Interseccedilatildeo de duas esferas agrave esquerda sem nenhum tratamento de interseccedilatildeo agrave direita apoacutes o tratamento de interseccedilatildeo

Aleacutem disso nem sempre esta interseccedilatildeo forma uma superfiacutecie suave

Esta interseccedilatildeo pode formar uma aresta viva (seccedilatildeo 4223) gerando

problemas tambeacutem para o uso da Regra 2 que eacute vaacutelida apenas para superfiacutecies

suaves Eacute necessaacuterio entatildeo fazer um tratamento desta superfiacutecie de interseccedilatildeo

(formada por surfels originados de diferentes modelos) O tratamento de cada

um dos meacutetodos para este caso seraacute tambeacutem abaixo apresentado

42 Meacutetodo de Adams e Dutreacute

O meacutetodo aplica-se somente a modelos soacutelidos Para determinaccedilatildeo dos

elementos da aqui chamada Regra 1 (seccedilatildeo 41) este meacutetodo utiliza uma octree

[1] que subdivide o espaccedilo do modelo em trecircs fora dentro ou no contorno do

modelo Estes espaccedilos satildeo determinados pela classificaccedilatildeo dos noacutes da octree a

partir da Regra 2 Tambeacutem eacute usado o meacutetodo TINN - Triangle Inequality Nearest

Neighbour [19] - para otimizar a pesquisa dentro do noacute A seguir descrevemos o

modelo usado neste meacutetodo apresentando os dados associados aos pontos o

tipo de distribuiccedilatildeo e o algoritmo que realiza as operaccedilotildees

421 Modelo por Pontos em Adams e Dutreacute

Os surfels neste meacutetodo contecircm as seguintes informaccedilotildees posiccedilatildeo do

surfel xs orientaccedilatildeo do surfel ns e raio de alcance do surfel rs O surfel pode ser

pensado como um disco ortogonal a ns com centro xs e raio rs O raio eacute

escolhido de tal forma que a projeccedilatildeo dos discos no plano da imagem se

sobreponham

Operaccedilotildees Booleanas com Pontos 34

Os objetos representados satildeo soacutelidos A distribuiccedilatildeo dos surfels eacute

uniforme embora o algoritmo natildeo exija esta condiccedilatildeo Para cada soacutelido eacute

definido um rmax = Max rs o raio de alcance do maior surfel pertencente agrave

superfiacutecie do soacutelido Como o raio eacute escolhido de tal forma que a projeccedilatildeo dos

discos no plano da imagem se sobreponham o controle da amostragem eacute

entatildeo ligado agrave renderizaccedilatildeo

422 Algoritmo de Operaccedilotildees Booleanas

Utilizando objetos modelados da forma descrita acima o meacutetodo realiza

operaccedilotildees de uniatildeo interseccedilatildeo e diferenccedila com modelos soacutelidos Supondo dois

modelos soacutelidos S1 e S2 O algoritmo pode ser dividido nas seguintes etapas

Criaccedilatildeo de uma octree para cada modelo Teste Dentro-Fora Tratamento da

interseccedilatildeo Estas etapas satildeo apresentadas nas proacuteximas seccedilotildees

4221 Criaccedilatildeo de uma octree para cada modelo

Eacute criada uma octree [1] para cada modelo A criaccedilatildeo de uma octree eacute feita

da seguinte forma

Gera-se a ldquoCaixa envolventerdquo caixa alinhada com os eixos que conteacutem

todo o modelo A ldquoCaixa envolventerdquo corresponde ao noacute raiz da octree Este noacute

conteacutem inicialmente todos os surfels do modelo Em seguida o noacute raiz eacute

dividido em oito noacutes filhos Os surfels satildeo distribuiacutedos entre estes oito noacutes Cada

um deles caso contenha surfels eacute dividido novamente em 8 filhos e seus surfels

satildeo redistribuiacutedos entre eles Este processo eacute repetido recursivamente enquanto

o nuacutemero de surfels do noacute for maior que zero ou ateacute uma profundidade maacutexima

preacute-definida da octree ser alcanccedilada

Cada noacute da octree deve ser classificado O objetivo desta classificaccedilatildeo eacute

determinar que parte da octree estaacute dentro do modelo e que parte estaacute fora Os

noacutes da octree satildeo entatildeo classificados como ldquodentrordquo ldquoforardquo e ldquocontornordquo

Podemos ilustrar esta classificaccedilatildeo em 2D a Figura 9 mostra uma quadtree

classificada

Operaccedilotildees Booleanas com Pontos 35

Figura 9-Um objeto representado por pontos com suas normais e sua quadtree correspondente classificada os noacutes cinza claro estatildeo dentro do modelo noacutes cinza mais escuro estatildeo fora do modelo e noacutes com cinza intermediaacuterio satildeo noacutes cheios noacutes que conteacutem pontos

O noacutes que conteacutem surfels satildeo classificados como ldquocontornordquo Para

classificar um noacute vazio existem trecircs casos

o noacute vazio tem apenas um vizinho-irmatildeo natildeo vazio

o noacute vazio tem mais de um vizinho-irmatildeo natildeo vazio

o noacute vazio natildeo tem vizinhos-irmatildeos natildeo vazios

No primeiro caso o noacute vazio eacute classificado pelo seu vizinho natildeo vazio No

segundo caso considera-se qualquer um dos vizinhos natildeo vazios No terceiro

caso classifica-se primeiro os noacutes vizinhos e eacute dada a mesma classificaccedilatildeo para

o noacute vazio Como cada noacute natildeo folha de uma octree tem pelo menos um noacute filho

natildeo vazio sempre pode ser feita a classificaccedilatildeo dos noacutes vazios A classificaccedilatildeo

eacute feita da seguinte forma dentre os surfels do vizinho-irmatildeo escolhido encontra-

se o surfel mais proacuteximo ao noacute a ser classificado Se a normal deste surfel

aponta para o noacute vazio a ser classificado entatildeo ele eacute classificado como ldquoforardquo

Se a normal aponta no sentido contraacuterio entatildeo ele eacute classificado como ldquodentrordquo

De maneira mais formal sejam cv e cc coordenadas dos centros do noacute vazio e

do noacute contorno respectivamente Seja s o surfel mais proacuteximo ao noacute vazio e ns

a normal em s Se ( cv - cc )٠ ns gt 0 ( produto interno entre a normal em s e o

vetor cv - cc for maior que zero ) o noacute vazio seraacute classificado como ldquoforardquo

Senatildeo seraacute classificado como ldquodentrordquo

Em geral os noacutes ldquocontornordquo satildeo subdivididos em trecircs partes uma que estaacute

fora do modelo uma que estaacute dentro do modelo e uma terceira que conteacutem os

surfels Esta subdivisatildeo eacute feita por meio da criaccedilatildeo de dois planos paralelos que

Operaccedilotildees Booleanas com Pontos 36

dividem o noacute Para determinar estes planos calcula-se o vetor nm igual agrave

meacutedia das normais dos surfels do noacute nm = sum ns sum ns onde ns eacute a normal de

cada surfel do noacute

Em seguida encontra-se o surfel com maior produto interno entre a sua

normal e a normal meacutedia d1=Max(nm ٠ ns) Este surfel juntamente com a normal

meacutedia define um dos planos Encontra-se tambeacutem o surfel com menor produto

interno entre a sua normal e a normal meacutedia d2=Min(nm ٠ ns) Este surfel

juntamente com a normal meacutedia define o outro plano A Figura 10 mostra a

divisatildeo de um noacute de uma quadtree nas trecircs partes dentro do modelo fora do

modelo e no ldquocontornordquo

Esta subdivisatildeo aplica-se apenas a noacutes que conteacutem surfels cujas direccedilotildees

natildeo variem em mais de 90 graus Caso isso ocorra ele natildeo seraacute subdividido Ou

seja se um noacute possuir dois vetores normais (de dois surfels diferentes) que

formem um acircngulo maior que 90 graus ele natildeo seraacute subdividido

Figura 10 [2] -Divisatildeo de noacute de contorno a parte agrave esquerda estaacute fora do modelo a parte agrave direita estaacute dentro do modelo e a faixa intermediaacuteria conteacutem os surfels

4222 Teste Dentro-Fora

O Teste Dentro-Fora faz a classificaccedilatildeo dos surfels de um modelo como

ldquodentrordquo ou ldquoforardquo de outro modelo Portanto aplicaremos este mesmo teste duas

vezes uma para o modelo S1 em relaccedilatildeo ao modelo S2 e outra para S2 em

relaccedilatildeo a S1 Vamos mostrar o teste Dentro-Fora para o caso da classificaccedilatildeo

dos surfels do modelo S1 em relaccedilatildeo a S2

Operaccedilotildees Booleanas com Pontos 37

No item anterior foram criadas duas octrees uma para o modelo S1 e

outra para o modelo S2 Chamemos de A e B as octrees de S1 e S2

respectivamente Para classificar S1 em relaccedilatildeo a S2 inicialmente eacute feita uma

avaliaccedilatildeo da posiccedilatildeo de A em relaccedilatildeo a B A e B podem estar nas seguintes

situaccedilotildees

- A natildeo intersecta B

- A intersecta apenas noacutes ldquoforardquo de B

- A intersecta apenas noacutes ldquodentrordquo de B

- A intersecta noacutes ldquoforardquo e noacutes ldquodentrordquo de B

Para testar estas situaccedilotildees os noacutes satildeo aumentados de rmax o raio do

maior surfel do modelo soacutelido Isto eacute feito para compensar o fato de que o surfel

natildeo eacute apenas um ponto mas sim considerado como um disco

No primeiro e no segundo caso todos os surfels de A satildeo classificados

como ldquoforardquo No terceiro caso todos os surfels de A satildeo classificados como

ldquodentrordquo

No quarto caso temos que percorrer a octree A Comeccedilando pelo noacute raiz

percorre-se os filhos deste noacute Para cada filho os quatro testes acima satildeo feitos

Se o noacute filho encontra-se em um dos trecircs primeiros casos a classificaccedilatildeo eacute dada

como foi citada acima Se um filho estaacute no quarto caso e natildeo eacute um noacute folha

repete-se recursivamente o mesmo procedimento para seus filhos ateacute encontrar-

se um noacute folha Para um noacute que estaacute no quarto caso e eacute folha percorre-se a lista

de surfels que este noacute conteacutem classificando cada um destes surfels Seja sa um

surfel desta lista Para este caso percorre-se a octree B para classificar sa

Primeiramente encontramos o noacute de B que conteacutem sa Se este noacute de B foi

dividido testa-se de acordo com esta divisatildeo do noacute se o surfel sa estaacute na parte

do noacute que estaacute dentro do modelo ele eacute classificado como ldquodentrordquo se sa estaacute na

parte que estaacute fora do modelo ele eacute classificado como ldquoforardquo se sa estaacute na parte

intermediaacuteria ou se o noacute de B natildeo foi subdividido em planos encontra-se sb que

eacute o surfel pertencente a este noacute de B que estaacute mais proacuteximo de sa sa seraacute

entatildeo classificado de acordo com sb Se ( sa - sb )٠ nb gt 0 sa eacute classificado

como ldquoforardquo senatildeo eacute classificado como ldquodentrordquo Se os discos de sb e sa se

intersectam sa eacute marcado como interseccedilatildeo Para encontrar sb o algoritmo

implementa o meacutetodo TINN ndash Triangle Inequality Nearest Neighbour [19]

Operaccedilotildees Booleanas com Pontos 38

4223 Tratamento da interseccedilatildeo

Os surfels de A que intersectam surfels de B satildeo classificados como

ldquointerseccedilatildeordquo Se eles natildeo forem incluiacutedos no modelo resultado o soacutelido resultado

teraacute buracos Se eles forem incluiacutedos sem algum tratamento eles natildeo

representaratildeo adequadamente a regiatildeo Em geral o surfel sa (um surfel

ldquointerseccedilatildeordquo de A) eacute dividido em dois pelo plano que conteacutem o surfel sb (surfel de

B que sa intersecta) uma parte que estaacute fora de B e outra que estaacute dentro de B

Dependendo da operaccedilatildeo que estaacute sendo realizada vamos querer manter uma

destas partes do surfel sa no modelo resultado Seja xa a posiccedilatildeo do surfel sa e o

surfel sa uma circunferecircncia de centro xa e raio ra igual ao raio de alcance de sa

O plano que conteacutem o surfel sb define uma corda desta circunferecircncia como

mostra a Figura 11 O surfel sa seraacute substituiacutedo por um surfel menor que

ultrapassa esta corda de uma distacircncia e definida pelo usuaacuterio Para cobrir

completamente a interseccedilatildeo seratildeo adicionados surfels menores que cruzam a

corda de interseccedilatildeo

Figura 11 -Interseccedilatildeo do surfel s e do plano que passa pelo surfel t o surfel mais proacuteximo a s O surfel s eacute substituiacutedo por trecircs surfels menores

Operaccedilotildees Booleanas com Pontos 39

O tratamento de interseccedilatildeo proposto por Adams e Dutreacute [2] natildeo soacute evita

os buracos mas tambeacutem cria uma forma de renderizaccedilatildeo de arestas vivas A

colocaccedilatildeo de vaacuterios pequenos surfels na regiatildeo da interseccedilatildeo permite esta

correta renderizaccedilatildeo das ldquoarestas vivasrdquo Desta forma o problema das arestas

vivas eacute resolvido na modelagem (Figura 12) A vantagem de se resolver o caso

na modelagem eacute que natildeo eacute necessaacuterio fazer um tratamento especial na

renderizaccedilatildeo para que mostre esta aresta viva Diferente do tratamento feito

em Pauly (seccedilatildeo 431) que resolve esta questatildeo em tempo de renderizaccedilatildeo

Aleacutem disso o tratamento resolve alguns casos onde a Regra 2 poderia falhar

(veja em Validade da Regra 2-seccedilatildeo 44)

Figura 12 [2] -Agrave direita eacute mostrado o resultado do tratamento de interseccedilatildeo para o caso de Arestas Vivas do objeto agrave esquerda

43 Meacutetodo de Pauly

O meacutetodo aplica-se a objetos soacutelidos e natildeo soacutelidos Os modelos podem ser

obtidos a partir de diferentes entradas como nuvem de pontos irregulares ou por

meio de scanners 3D Cria um modelo hiacutebrido destes objetos usa o modelo por

pontos juntamente com a representaccedilatildeo impliacutecita Moving Least Squares - MLS

[18] Realiza operaccedilotildees booleanas com pontos e utiliza adicionalmente MLS

para alguns casos de classificaccedilatildeo de surfels e no tratamento de interseccedilatildeo A

seguir apresentamos as caracteriacutesticas do modelo por pontos deste meacutetodo e o

algoritmo que realiza as operaccedilotildees

Operaccedilotildees Booleanas com Pontos 40

431 Modelo em Pauly

O modelo eacute uma estrutura hiacutebrida de pontos com a representaccedilatildeo impliacutecita

Moving Least Squares - MLS [18] Esta estrutura eacute usada para fazer operaccedilotildees

booleanas e tambeacutem operaccedilotildees de free-form (natildeo abordadas nesta

dissertaccedilatildeo) Para operaccedilotildees booleanas a representaccedilatildeo MLS permite que a

curva de interseccedilatildeo entre os modelos seja reconstruiacuteda e surfels sejam

colocados nesta curva e em alguns casos de classificaccedilatildeo de surfels mostrados

na seccedilatildeo 432 Para este modelo natildeo existem restriccedilotildees quanto agrave forma do

objeto

Os surfels contecircm informaccedilotildees sobre sua posiccedilatildeo e sua normal Aleacutem

disso surfels podem conter informaccedilotildees adicionais como textura cor

propriedades de materiais

A distribuiccedilatildeo dos surfels eacute natildeo-uniforme e a amostragem eacute

aproximadamente adequada (Veja seccedilatildeo 44)

432 Algoritmo de Operaccedilotildees Booleanas

O algoritmo classifica surfels de um modelo como ldquodentrordquo ou ldquoforardquo de

outro modelo Antes de colocarmos como eacute feita esta classificaccedilatildeo devemos

acrescentar que Pauly estende esta classificaccedilatildeo para modelos que natildeo satildeo

soacutelidos Ou seja mesmo um modelo natildeo soacutelido divide o espaccedilo da cena (espaccedilo

em que se encontra o modelo) em dois sub-espaccedilos dentro ou fora do modelo

Pauly faz esta subdivisatildeo da seguinte forma

Como a superfiacutecie que determina o modelo eacute orientada (conteacutem vetores

normais agrave superfiacutecie que apontam para ldquoforardquo do modelo) Pauly considera que

um modelo natildeo soacutelido divide o espaccedilo em dois sub-espaccedilos um ldquoforardquo do

modelo (os vetores normais apontam para este sub-espaccedilo) e um que estaacute

ldquodentrordquo do modelo (os vetores normais apontam para direccedilatildeo oposta a este sub-

espaccedilo) Por exemplo um plano eacute representado como um conjunto de surfels

contidos num determinado espaccedilo geomeacutetrico plano π Cada surfel conteacutem um

vetor normal direcionado Este modelo divide entatildeo o espaccedilo em dois sub-

espaccedilos o sub-espaccedilo que eacute apontado por estes surfels (considerado ldquoforardquo do

modelo) e o sub-espaccedilo que estaacute na direccedilatildeo oposta (considerado ldquodentrordquo do

modelo) Desta forma ele aplica as classificaccedilotildees de ldquodentrordquo e ldquoforardquo de um

modelo tambeacutem a modelos natildeo soacutelidos A partir desta consideraccedilatildeo as

Operaccedilotildees Booleanas com Pontos 41

operaccedilotildees booleanas satildeo realizadas com os modelos natildeo soacutelidos da mesma

forma que com os modelos soacutelidos

Para determinar esta classificaccedilatildeo (dentro ou fora do modelo) Pauly utiliza

a Regra 2 Para pesquisa do surfel mais proacuteximo o meacutetodo usa a estrutura Kd-

tree [16] e tambeacutem o algoritmo ANN [16] No entanto o meacutetodo apresenta uma

restriccedilatildeo da Regra 2 ela soacute deve ser usada para classificaccedilotildees de pontos x se

a distacircncia x-p for maior que o espaccedilamento da amostragem local ηp em p

Este espaccedilamento da amostragem local ηp em p eacute um caacutelculo aproximado da

distacircncia meacutedia entre os surfels vizinhos a p Se x estaacute muito proacuteximo agrave

superfiacutecie a classificaccedilatildeo pode falhar Neste caso ele calcula o ponto exato de

S mais proacuteximo a x usando a projeccedilatildeo MLS (ldquoMoving Least Squaresrdquo)

Por questotildees de melhoria de desempenho utiliza-se o fato de que sendo

Ωp (x) a classificaccedilatildeo do ponto x em relaccedilatildeo agrave amostragem P tem-se que Ωp (x)

= Ωp (xrsquo) para todos os pontos de xrsquo que estatildeo dentro da esfera de centro x e

raio igual a x-p - ηp (onde p eacute o surfel mais proacuteximo e ηp eacute o espaccedilamento

local da amostragem em p acima citado) Ou seja sendo x um ponto qualquer p

o surfel mais proacuteximo a x ηp eacute o espaccedilamento local da amostragem em p se

desenharmos uma esfera com centro x e raio igual a x-p - ηp temos que

todos os pontos xrsquo que estatildeo dentro da esfera teratildeo a mesma classificaccedilatildeo de x

Desta forma o nuacutemero de vezes que a classificaccedilatildeo eacute feita (pesquisando-se o

surfel mais proacuteximo ao ponto e usando a Regra 2) diminui em ateacute 90 Assim

em geral a classificaccedilatildeo de um surfel eacute obtida a partir do seu surfel vizinho

Dados

S1 a superfiacutecie MLS de contorno que define o modelo A

S2 a superfiacutecie MLS de contorno que define o modelo B

P1 o conjunto de surfels que representa a superfiacutecie S1

P2 o conjunto de surfels que representa a superfiacutecie S2

Ωp1 (x) a classificaccedilatildeo do ponto p em relaccedilatildeo a uma amostragem P1

Q1 o subconjunto de P1 que vai compor o resultado

Ωp2 (x) a classificaccedilatildeo do ponto p em relaccedilatildeo a uma amostragem P2

Q2 o subconjunto de P2 que vai compor o resultado

Os conjuntos Q1 e Q2 satildeo obtidos por meio da Tabela 1 mostrada abaixo

Operaccedilotildees Booleanas com Pontos 42

Tabela 1 Classificaccedilatildeo para operaccedilotildees booleanas

Para o tratamento de interseccedilatildeo neste meacutetodo satildeo computados pontos

que caem exatamente na curva de interseccedilatildeo e estes satildeo acrescentados ao

modelo resultado Estes pontos satildeo determinados de forma que a densidade da

amostragem vai crescendo agrave medida que os surfels se aproximam da curva de

interseccedilatildeo e convergem para este ponto de interseccedilatildeo como mostra a Figura

13

(a) (b) (c)

Figura 13 - Os novos surfels satildeo colocados exatamente na curva de interseccedilatildeo

e convergem para o ponto de interseccedilatildeo

A Figura 14 mostra o processo de encontrar os surfels que caem nesta

curva de interseccedilatildeo Inicialmente satildeo encontrados todos os pontos de Q1 e Q2

que estatildeo proacuteximos agrave curva de interseccedilatildeo por meio da funccedilatildeo de distacircncia do

operador de projeccedilatildeo MLS Em seguida procura-se todos os pares mais

proacuteximos (q1 є Q1 q2 є Q2 ) e computa-se o ponto q na curva de interseccedilatildeo da

seguinte forma (veja a Figura 14)Seja r o ponto na linha de interseccedilatildeo dos dois

planos tangentes em q1 e q2 e que estaacute mais proacuteximo a estes dois pontos isto eacute

que minimiza a distacircncia ||r-q1|| + ||r-q2|| r eacute a primeira aproximaccedilatildeo de q e agora

pode ser projetado sobre S1 e S2 para obter dois novos pontos de partida q1rsquo e q2

rsquo

para a iteraccedilatildeo Este procedimento pode ser repetido iterativamente ateacute que os

pontos q1 e q2 convirjam ao ponto q na curva de interseccedilatildeo Normalmente este

processo requer menos de trecircs iteraccedilotildees

Operaccedilotildees Booleanas com Pontos 43

(a) (b)

(c)

Figura 14 (a) Suponhamos a reta que eacute a interseccedilatildeo do plano tangente a S1 em q1 e o

plano tangente a S2 em q2 O ponto r eacute o ponto desta reta que estaacute mais proacuteximo a q1 e

q2 (b) r eacute projetado sobre S1 e S2 obtendo-se q1acute e q2acute dois novos pontos de partida

para nova iteraccedilatildeo (c) A nova iteraccedilatildeo gera r que eacute uma aproximaccedilatildeo melhor de q

Pauly faz o tratamento de arestas vivas em tempo de renderizaccedilatildeo Ele

faz uma alteraccedilatildeo no renderizador Marca os surfels de interseccedilatildeo e ao

renderizaacute-los satildeo cortados para gerar uma aresta viva

44 Validade da Regra 2

Os dois meacutetodos analisados nesta dissertaccedilatildeo utilizam a seguinte regra

para a classificaccedilatildeo de um surfel

Regra 2 dado um volume V determinado por uma superfiacutecie de contorno

S uma amostragem P da superfiacutecie S um ponto x qualquer um ponto p є P que

eacute a amostra mais proacutexima a x um vetor ny normal a S em p e orientado para

fora de S temos que (x ndash p) np gt 0 x notinV

Em [16] eacute colocado que esta regra eacute tirada da seguinte propriedade da

geometria diferencial (aqui chamada Propriedade 1)

Propriedade 1 Dado um volume V determinado por uma superfiacutecie de

contorno S contiacutenua e duplamente diferenciaacutevel um ponto x qualquer um ponto

Operaccedilotildees Booleanas com Pontos 44

y є S que eacute o ponto de S mais proacuteximo a x um vetor ny normal a S em y e

orientado para fora de S temos que (x ndash y) ny gt 0 x notinV

A Figura 15 ilustra esta propriedade

Figura 15 Para verificar se o ponto x estaacute fora de um contorno C encontra-se o ponto y

de C Se o produto interno entre a normal em y e o vetor que liga y a x for maior que

zero entatildeo x estaacute fora de C senatildeo estaacute dentro de C

Pauly assume que tendo uma amostragem P da superfiacutecie S podemos

usar a Propriedade 1 substituindo y por p o surfel mais proacuteximo ao ponto x (x ndash

p) np gt 0 x notinV (Regra 2) Esta amostragem P em seu trabalho eacute

(aproximadamente) uma ldquoamostragem adequadardquo Tambeacutem seu tratamento de

interseccedilatildeo cria uma aproximaccedilatildeo dela (seccedilatildeo 43) Empiricamente a

ldquodiscretizaccedilatildeo da propriedaderdquo eacute vaacutelida a partir desta suposiccedilatildeo Mas isso natildeo foi

demonstrado teoricamente em seu trabalho

Pauly coloca em [16] que natildeo existe ainda uma teoria matemaacutetica rigorosa

de amostragem anaacuteloga a teoria de Fourier para superfiacutecies discretas

A melhor aproximaccedilatildeo teoacuterica para esta aacuterea eacute o uso do Eixo Medial que

foi colocado em [10] Vamos descrever este trabalho brevemente nesta seccedilatildeo

Este trabalho apresenta um algoritmo de reconstruccedilatildeo de superfiacutecie que parte de

uma amostragem adequada (abaixo definida) de pontos e obteacutem uma malha

que eacute topologicamente equivalente agrave superfiacutecie do objeto e agrave medida que a

densidade da amostragem cresce a saiacuteda converge para esta superfiacutecie

Para definir amostragem adequada o trabalho parte do conceito de Eixo

Medial

Operaccedilotildees Booleanas com Pontos 45

ldquoEixo Medialrdquo de uma superfiacutecie 2D posicionada no R3 eacute o conjunto

(fechado) de pontos pi para os quais buscando-se o ponto da superfiacutecie que

estaacute mais proacuteximo a pi mais de um ponto pertencentes a esta superfiacutecie satildeo

encontrados A Figura 16 abaixo ilustra o Eixo Medial em 2D

Figura 16 [10] As curvas de cor mais clara satildeo o Eixo Medial da curva em preto

Em duas dimensotildees os veacutertices de Voronoi de uma amostragem densa

aproximam o ldquoEixo Medialrdquo da amostragem (mas esta propriedade natildeo se

estende a 3D) A Figura 17 mostra o Eixo Medial em 3D

Figura 17 [10] Em 3D geralmente o Eixo Medial eacute uma superfiacutecie 2D (em cor mais

clara) Aqui o quadrado eacute o Eixo Medial da superfiacutecie transparente que o contorna

Podemos definir agora a amostragem adequada da seguinte forma

Supondo uma superfiacutecie suave que quer dizer uma 2-manifold duplamente

diferenciaacutevel posicionada no R3 uma ldquoamostragem adequadardquo desta superfiacutecie eacute

aquela na qual a densidade da amostragem eacute (pelo menos) inversamente

proporcional agrave distacircncia ao ldquoEixo Medialrdquo A Figura 18 mostra uma amostragem

adequada

Operaccedilotildees Booleanas com Pontos 46

Figura 18 [10] A figura mostra o diagrama de Voronoi de uma amostragem de pontos S

Da mesma forma que o a amostragem aproxima a curva os veacutertices de Voronoi

aproximam o Eixo Medial

Na praacutetica na reconstruccedilatildeo da superfiacutecie uma aproximaccedilatildeo deste ldquoEixo

Medialrdquo eacute computada (devido agrave dificuldade de computaacute-lo exatamente e em

alguns casos ateacute impossibilidade)

Melhorias Propostas 47

5 Melhorias Propostas

No capiacutetulo 4 apresentamos dois meacutetodos que realizam operaccedilotildees

booleanas em modelos por pontos o meacutetodo de Adams e Dutreacute [2] e o meacutetodo

de Pauly[3] Para esta dissertaccedilatildeo usamos o meacutetodo de Adams e Dutreacute [2] e

propomos as seguintes melhorias

- Alteramos o momento em que eacute feita a classificaccedilatildeo da octree Fazemos

esta classificaccedilatildeo durante a sua criaccedilatildeo Os noacutes filhos de um noacute pai P qualquer

satildeo classificados logo apoacutes a criaccedilatildeo de todos estes filhos de P

independentemente do restante da octree ter sido criada Isso pode ser feito

porque a octree eacute construiacuteda na ordem raiz-esquerda-direita (preorder

traversal) e portanto apoacutes todos os filhos de um noacute pai serem criados a parte

necessaacuteria da octree para a classificaccedilatildeo destes filhos jaacute estaacute criada

- A classificaccedilatildeo da octree eacute otimizada classificando-se os cantos dos seus

noacutes como dentro ou fora do modelo Na classificaccedilatildeo de um noacute n1 a partir de seu

vizinho n2 se os cantos que satildeo comuns a n1 e n2 tiverem a mesma

classificaccedilatildeo esta seraacute dada ao noacute Assim diminuiacutemos o nuacutemero de pesquisas

pelo surfel mais proacuteximo que eacute a parte criacutetica da classificaccedilatildeo dos noacutes da octree

em termos de tempo de processamento

- Acrescentamos um valor miacutenimo (maior que zero) para o nuacutemero de

surfels contidos em um noacute que eacute uma das condiccedilotildees de parada na criaccedilatildeo da

octree Verificamos que desta forma diminui-se a chance de erro na classificaccedilatildeo

de partes criacuteticas como ldquoarestas vivasrdquo

Uma comparaccedilatildeo entre a nossa implementaccedilatildeo e a de Pauly tambeacutem seraacute

feita no capiacutetulo 6

51 Descriccedilatildeo do algoritmo

O algoritmo implementado para esta dissertaccedilatildeo baseado no meacutetodo de

Adams e Dutreacute [2] pode ser dividido nas seguintes partes Criaccedilatildeo e

classificaccedilatildeo de uma octree para cada modelo Teste DentroFora Criaccedilatildeo do

modelo resultado Natildeo foi implementado tratamento especial algum de

interseccedilatildeo para o nosso plugin As proacuteximas seccedilotildees apresentam estas partes

Melhorias Propostas 48

511 Criaccedilatildeo e classificaccedilatildeo de uma octree para cada modelo

As ideacuteias do algoritmo satildeo aqui ilustradas em 2D mas a extensatildeo delas

para 3D eacute feita facilmente

Para cada modelo a octree eacute criada e classificada da seguinte forma

Figura 19-Quadtree classificada Os noacutes mais escuros estatildeo fora do modelo os mais claros dentro e os em tom intermediaacuterio satildeo noacutes de contorno

Gera-se uma ldquocaixa envolventerdquo do modelo contendo todos os surfels e

cria-se o noacute raiz da octree que corresponde a esta ldquocaixa envolventerdquo Este noacute

raiz eacute subdividido em oito filhos e seus surfels satildeo distribuiacutedos entre eles Ao

inveacutes de testarmos os valores de xy e z para cada surfel a fim de determinar

para qual filho ele iraacute utilizamos listas auxiliares Primeiro os surfels satildeo

subdivididos em dois grupos pelos valores de x e armazenados em uma lista

auxiliar Em seguida cada uma das listas eacute subdividida pelo valor de y e as

quatro listas obtidas seratildeo subdivididas pelo valor de z Ao final teremos 8 listas

de surfels cada uma delas pertencente a um filho

Cada noacute seraacute entatildeo novamente subdividido enquanto contiver um nuacutemero

de surfels gt nmin (valor preacute-definido) ou enquanto a profundidade da aacutervore lt pmax

(valor preacute-definido) Na figura 19 pmax = 3 e nmin = 3

Melhorias Propostas 49

Figura 20-O noacute cheio eacute dividido em trecircs partes agrave esquerda a regiatildeo estaacute dentro do modelo agrave direita estaacute fora e entre as duas linhas que dividem o noacute estaacute a regiatildeo que conteacutem os surfels

Os noacutes cheios recebem um tratamento especial Eles satildeo subdivididos em

trecircs partes da seguinte forma uma que estaacute fora do modelo outra que estaacute

dentro e uma que conteacutem os surfels Esta subdivisatildeo eacute feita por meio da criaccedilatildeo

de dois planos paralelos que dividem o noacute Para determinar estes planos

calcula-se o vetor nm igual agrave meacutedia das normais dos surfels do noacute nm = sum ns

sum ns onde ns eacute a normal de cada surfel do noacute Em seguida encontra-se o

surfel com maior produto interno entre a sua normal e a normal meacutedia

d1=Max(nm ٠ ns) Este surfel juntamente com a normal meacutedia define um dos

planos Encontra-se tambeacutem o surfel com menor produto interno entre a sua

normal e a normal meacutedia d2=Min (nm ٠ ns) Este surfel juntamente com a normal

meacutedia define o outro plano (Figura 20) Se o noacute conteacutem surfels de superfiacutecies de

orientaccedilotildees diferentes ele natildeo seraacute subdividido ou seja os planos coincidiratildeo

com os planos que delimitam o proacuteprio noacute Este teste foi implementado da

seguinte forma escolhe-se um surfel qualquer do noacute Calcula-se o produto

interno entre a normal deste surfel e as outras normais dos outros surfels deste

noacute Se algum produto interno for menor que zero este noacute natildeo seraacute subdividido

Apoacutes a etapa de subdivisatildeo classificam-se os oito cantos deste noacute como

dentro ou fora do modelo por meio da classificaccedilatildeo de um ponto que

descreveremos na sub-seccedilatildeo 5111

Melhorias Propostas 50

a b

c d

Figura 21-O noacute a eacute classificado pelo noacute c o noacute d tambeacutem eacute classificado pelo noacute c a classificaccedilatildeo do noacute a eacute propagada para o noacute b

Jaacute os noacutes vazios da octree seratildeo classificados como ldquodentrordquo ou ldquoforardquo do

modelo da seguinte forma cada noacute folha vazio eacute classificado a partir de um de

seus irmatildeos vizinhos adjacentes Se ele possuir um vizinho adjacente cheio ele

seraacute classificado por este vizinho se natildeo possuir os vizinhos adjacentes seratildeo

classificados primeiro e ele teraacute esta mesma classificaccedilatildeo (Figura 21) Como tem

que existir sempre pelo menos um noacute cheio entre os filhos de um noacute pai entatildeo

sempre esta classificaccedilatildeo poderaacute ser feita Com a classificaccedilatildeo de todos os

filhos tem-se tambeacutem a classificaccedilatildeo dos cantos do noacute pai

Mf03c003fmx a b

Figura 22-Os cantos a e b do noacute cheio possuem a mesma classificaccedilatildeo fora do modelo Esta classificaccedilatildeo foi dada ao noacute vazio adjacente

Melhorias Propostas 51

Para classificar um noacute vazio por meio de um noacute cheio verificam-se os

cantos comuns destes dois noacutes se todos os cantos tiverem a mesma

classificaccedilatildeo esta seraacute dada ao noacute vazio (Figura 22) Se houver classificaccedilotildees

diferentes escolhe-se o surfel do noacute cheio mais proacuteximo ao noacute vazio faz-se o

produto interno entre a normal deste surfel e o vetor que liga o centro do noacute

cheio ao centro do noacute vazio (ou o vetor que liga o surfel ao centro do noacute vazio)

Se o produto interno for maior que zero o noacute eacute classificado como ldquoforardquo senatildeo eacute

classificado como ldquodentrordquo Para encontrar o surfel (pertencente a um noacute cheio)

mais proacuteximo ao noacute vazio existem dois casos

- O noacute cheio eacute folha percorre-se toda a lista de surfels e escolhe o surfel

mais proacuteximo da fronteira entre o noacute cheio e o vazio

- O noacute cheio natildeo eacute um noacute folha percorrem-se os filhos do noacute cheio ou seja

esta pesquisa eacute feita descendo na octree a partir do noacute cheio procurando o

surfel mais proacuteximo agrave fronteira do pai com o noacute vazio a ser classificado

Classificando o centro do noacute vazio todo o noacute deve ter a mesma

classificaccedilatildeo pois este noacute natildeo conteacutem surfels Para encontrar o surfel do noacute

vazio mais proacuteximo da fronteira entre o noacute cheio e o vazio basta testar o valor da

coordenada se a fronteira eacute o lado direito do noacute cheio escolhe-se o surfel com

maior coordenada lsquoxrsquo se eacute o lado esquerdo escolhe-se o surfel com menor lsquoxrsquo

se lado superior surfel com maior lsquoyrsquo etc A seguir apresentamos a classificaccedilatildeo

de um ponto qualquer pertencente a um noacute cheio

Figura 23- Quadtree classificada

Melhorias Propostas 52

5111 Classificaccedilatildeo de um ponto de um noacute cheio

Figura 24 [2] A normal n eacute a normal meacutedia e os surfels s1 e s2 juntamente com a normal

n definem as retas que dividem o noacute O ponto a estaacute fora do modelo e o ponto b estaacute

dentro do modelo

Para um ponto localizado dentro do noacute faz-se o seguinte teste se o noacute foi

dividido testa-se de acordo com a divisatildeo do noacute se o ponto estaacute na parte do noacute

que estaacute dentro do modelo ele eacute classificado como ldquodentrordquo se o ponto estaacute na

parte que estaacute fora do modelo ele eacute classificado como ldquoforardquo (Figura 24) se o

ponto estaacute na parte que conteacutem os surfels encontra-se o surfel s pertencente ao

noacute mais proacuteximo do ponto e o classifica de acordo com s seja ns a normal em s

cs a coordenada de s cp a coordenada do ponto Se (cp - cs )٠ ns gt 0 o ponto

seraacute classificado como ldquoforardquo Senatildeo seraacute classificado como ldquodentrordquo

Se o noacute natildeo foi dividido em planos esta classificaccedilatildeo a partir do surfel

mais proacuteximo seraacute sempre feita

512 Teste DentroFora

Melhorias Propostas 53

Figura 25-Duas circunferecircncias e suas quadtrees correspondentes

O Teste DentroFora classifica os surfels de um modelo como dentro ou

fora de outro modelo ou na sua interseccedilatildeo Este teste foi aqui implementado

exatamente como foi proposto em Adams e Dutreacute [2] exceto que natildeo foi

implementado o meacutetodo TINN - Triangle Inequality Nearest Neighbour [19]

Cada octree eacute percorrida verificando-se se os seus noacutes ou surfels estatildeo dentro

fora ou no contorno do outro modelo (Figura 25) Sejam A e B duas octrees e

queremos classificar a octree A As duas octrees (AB) satildeo percorridas partindo

da raiz

Para cada noacute de A existem quatro casos (Figura 26) Para testar estas

situaccedilotildees os boxes dos noacutes satildeo aumentados de rmax o raio do maior surfel do

modelo Isto eacute feito para compensar o fato de que o surfel natildeo eacute apenas um

ponto mas sim considerado como um disco

Os quatro casos satildeo

Se o noacute de A natildeo intersecta B entatildeo todos os surfels deste noacute satildeo

classificados como fora

Se o noacute de A intersecta apenas noacutes de B que estatildeo fora do modelo

todos os surfels deste noacute satildeo fora

Se o noacute de A intersecta apenas noacutes de B que estatildeo dentro do modelo

todos os surfels deste noacute satildeo dentro

Melhorias Propostas 54

Se o noacute de A intersecta noacutes de B que estatildeo dentro e tambeacutem noacutes de B

que estatildeo fora testa-se se este noacute de A eacute ou natildeo folha Se natildeo for folha

percorre-se os filhos deste noacute de A ateacute encontrar um noacute folha cheio que

intersecta B Para cada surfel sa deste noacute folha de A encontra-se o surfel de B

mais proacuteximo e classifica-se a coordenada de sa da forma apresentada na seccedilatildeo

5111 Seja sb o surfel usado na classificaccedilatildeo de sa Se os discos de sb e sa

se intersectam sa eacute classificado como ldquointerseccedilatildeordquo

(a) (b)

(c) (d)

Figura 26- a modelos natildeo se intersectam b modelo intersecta noacutes fora c modelo intersecta apenas noacutes dentro d modelo intersecta noacutes dentro e noacutes fora

513 Criaccedilatildeo do modelo resultado

Um novo modelo eacute criado com os seguintes surfels (de acordo com a

operaccedilatildeo booleana escolhida pelo usuaacuterio - veja Regra 1 da seccedilatildeo 41)

Uniatildeo - surfels de A que estatildeo fora de B + surfels de B que estatildeo fora de A

Melhorias Propostas 55

Interseccedilatildeo - surfels de A que estatildeo dentro de B + surfels de B que estatildeo

dentro de A

Diferenccedila A-B - surfels de A que estatildeo fora de B + surfels de B que estatildeo

dentro de A (com orientaccedilatildeo invertida)

Como natildeo foi implementado tratamento especial algum de interseccedilatildeo para

o nosso plugin os surfels que se intersectam satildeo mantidos no modelo resultado

final sem modificaccedilotildees

Descrito o algoritmo vejamos a seguir a sua implementaccedilatildeo

52 Implementaccedilatildeo

Este algoritmo foi implementado na forma de um plugin para o software

PointShop 3D [11] Este plugin foi desenvolvido na linguagem C e no sistema

operacional Windows

A escolha deste tipo de implementaccedilatildeo permitiu-nos usar o software

PointShop para os testes do algoritmo Estes testes foram feitos com os modelos

disponibilizados para o PointShop [11] Nesta seccedilatildeo apresentaremos o software

PointShop e as principais estruturas de dados usadas em nosso plugin

O Pointshop eacute um software aberto com seu coacutedigo disponiacutevel e preparado

para trabalhar com plugins Eacute um software de ediccedilatildeo de modelos 3D por pontos

Ele permite aleacutem de visualizar o modelo alterar as suas caracteriacutesticas como

cor brilho e fazer mapeamento de textura iluminaccedilatildeo filtragem (Figura 27)

Melhorias Propostas 56

Figura 27-Software PointShop 3D com dois modelos carregados na sua cena

Aleacutem disso pode-se criar uma cena com vaacuterios modelos e visualizaacute-los de

qualquer ponto de vista Implementa o virtual trackball para rotacionaacute-los e

transladaacute-los Usa uma iluminaccedilatildeo simples direcional A sua arquitetura eacute

extensiacutevel permite que o usuaacuterio adicione seus proacuteprios componentes ao

sistema Possui trecircs tipos de componentes

ldquoToolsrdquo fornece funcionalidades para ediccedilatildeo interativa de superfiacutecie Satildeo

disponibilizados na ldquotoolbarrdquo

Plugins fornece funcionalidades para processar em um soacute passo

modelos ou partes deles selecionadas Satildeo disponibilizados no menu ldquoPluginsrdquo

Renderes fornece funcionalidades de display para os modelos

Para esta dissertaccedilatildeo foi escolhida a construccedilatildeo do componente Plugin

por adequar-se agrave nossa proposta e ser a mais simples de ser construiacuteda O

PointShop [11] jaacute conteacutem uma tool que executa operaccedilotildees booleanas e

deformaccedilatildeo free-form sobre os modelos carregados na cena usando o meacutetodo

de Pauly [3] apresentado no capiacutetulo 4 O nosso plugin Operaccedilotildees Booleanas

implementa o algoritmo descrito na seccedilatildeo anterior baseado na proposta de

Melhorias Propostas 57

Adams e Dutreacute [2] Uma comparaccedilatildeo entre o nosso plugin e a tool de Pauly [3] eacute

feita no capiacutetulo 6

Figura 28-Menu do PointShop com o plugin e as opccedilotildees para operaccedilotildees booleanas

Para se executar o plugin o usuaacuterio precisa carregar dois modelos na

cena do PointShop acionar o plugin informando a operaccedilatildeo que seraacute executada

O plugin executaraacute o algoritmo acima proposto e carregaraacute o resultado na cena

do Pointshop retirando os modelos anteriores

521 Estruturas de Dados

Como vimos o software PointShop [11] trabalha com modelos por pontos

Um modelo deste software descrito na seccedilatildeo 42 conteacutem todas as informaccedilotildees

que o algoritmo proposto em Bart [2] necessita Abaixo relacionamos as

Melhorias Propostas 58

principais estruturas de dados do PointShop usadas no plugin e as principais

estruturas de dados do nosso plugin

As principais classes do PointShop usadas no plugin satildeo

Classe Scene

Classe Objects

Classe SurfelColections

Classe Surfel

Classe StatusBar

Classe Transformer

A hierarquia de dados eacute a seguinte a Scene conteacutem vaacuterios Objects os

quais conteacutem SurfelColections Cada SurfelColections conteacutem Surfels que

suportam uma ou mais propriedades tais como cor difusa cor especular

Classe Scene Classe que representa uma cena que conteacutem modelos

Classe Object Um modelo eacute representado pela classe Object que

conteacutem uma SurfelCollection e as matrizes de transformaccedilatildeo para rotaccedilatildeo

escala e translaccedilatildeo Cada Object eacute identificado pelo seu nome que eacute uacutenico na

Scene O meacutetodo getUniqueName retorna um nome uacutenico Cada Object tem sua

proacutepria matriz de transformaccedilatildeo que pode ser modificada com setRotation

rotate setPosition translate setScale e scale Objects podem ser copiados com

copy Objects consiste em um conjunto de surfels os quais podem ser

recuperados pela getSurfelCollection O Object pode ser ativado com

setActiveObject e recuperado com getActiveObject

Objects podem ser adicionados ou removidos com addObject e

removeObject Os Objects podem ser obtidos pela getFirstObject e

getNextObject

Classe SurfelCollection representa o conjunto de surfels de um modelo

Cada surfelcollection consiste em um conjunto de surfels (SurfelInterface) de

tamanho obtido por getNofSurfels Os surfels podem ser recuperados com

getFirstSurfel getCurrentSurfel e getNextSurfel

A SurfelCollection conteacutem um PropertyDescriptor e uma SurfelList

A SurfelList eacute uma lista duplamente encadeada de surfels Possui os

atributos firstSurfel lastSurfel currentSurfel que satildeo ponteiros para uma

SurfelInterface nSurfels que eacute o nuacutemero de Surfels

A SurfelInterface define a API para os surfels que satildeo os menores

elementos que compotildeem um Object Podem ser considerados como pontos com

uma normal que define a orientaccedilatildeo do ciacuterculo (ou elipse) que seraacute desenhado

Melhorias Propostas 59

tatildeo logo o surfel seja renderizado Tem como atributos dois ponteiros (next e

prev) para SurfelInterface

PropertyDescriptor consiste em ateacute 32 valores descrevendo quais as

propriedades a SurfelInterface suporta

Classe Surfel classe que representa o surfel

Classe StatusBar classe que imprime mensagens na tela Os plugins

podem mandar mensagens para o usuaacuterio pela StatusBar

Mensagens texto podem ser impressas com showMessage O progresso

de uma operaccedilatildeo pode ser indicado com setProgress ou resetProgress

Classe Transformer representa a transformaccedilatildeo entre sistemas de

coordenadas Esta classe fornece meacutetodos para transformar pontos e vetores

entre os diferentes sistemas de coordenadas do Pointshop

A seguir apresentamos as principais estruturas de dados do plugin

Operaccedilotildees Booleanas

As principais estruturas de dados do plugin satildeo boundingbox tree no

lista_surfel surfel

Boundingbox conteacutem dois pontos 3D que definem uma caixa que conteacutem

o modelo um ponto com menores coordenadas xy e z e outro ponto com

maiores xyz

Tree representa a octree do modelo Cada registro conteacutem um ponteiro

para um noacute e oito ponteiros para as 8 octrees filhas

No representa um noacute da octree Conteacutem os seguintes dados

- localizaccedilatildeo do noacute que eacute o canto inferior esquerdo do noacute

- lista_surfel (preenchida apenas para noacutes folha cheios)

- quantidade de surfels do noacute

- classificaccedilatildeo do noacute como dentro fora ou contorno

- classificaccedilatildeo do noacute em relaccedilatildeo a outro modelo

- indica se o noacute eacute folha ou natildeo

- vetor que eacute a meacutedia das normais dos surfels do noacute

- ponto que eacute a meacutedia das localizaccedilotildees dos surfels do noacute

- surfel que tem (entre todos os surfels do noacute) o maior produto interno

entre a sua normal e a normal meacutedia

- surfel que tem (entre todos os surfels do noacute) o menor produto interno

entre a sua normal e a normal meacutedia

- produto interno maacuteximo e miacutenimo entre as normais dos surfels do noacute e a

normal meacutedia deste noacute

Melhorias Propostas 60

- indica se o noacute conteacutem surfels com normais em sentido oposto (produto

interno entre elas eacute menor que zero)

- classificaccedilatildeo dos oito cantos do noacute

lista_surfels lista em que cada registro conteacutem um apontador para um

surfel e um apontador para o proacuteximo registro

surfel representa o surfel da octree Conteacutem a classificaccedilatildeo em relaccedilatildeo a

outro modelo e um ponteiro para o surfel do Poinshop

Resultados 61

6 Resultados

Neste capiacutetulo apresentamos os testes realizados com o plugin para o

PointShop implementado para esta dissertaccedilatildeo a comparaccedilatildeo deste plugin com

o plugin de Pauly [3] e a comparaccedilatildeo entre o meacutetodo de Adams e Dutreacute [2] e o

meacutetodo de Pauly [3]

61 Testes

Os testes foram feitos em um PC x86 Family 6 261600 KB de RAM sem

placa graacutefica sistema operacional Windows 2000 O plugin foi implementado na

linguagem C

Os modelos usados para os testes satildeo modelos disponibilizados no

PointShop [11] Vale lembrar que o meacutetodo implementado em nosso plugin eacute

restrito a modelos soacutelidos e portanto foram usados apenas estes modelos

soacutelidos para os testes

O modelo na Figura 29 que eacute um dos modelos disponibilizados no

PointShop [11] foi usado para mostrar o resultado das operaccedilotildees realizadas

pelo plugin implementado nesta dissertaccedilatildeo O modelo Igea eacute um modelo soacutelido

que conteacutem 134345 surfels

Resultados 62

Figura 29-Modelo do PointShop Igea

Para realizar as operaccedilotildees este modelo foi carregado na cena do

PointShop duas vezes e um deles colorido de vermelho As Figuras 30 31 32

mostram o resultado da operaccedilatildeo de uniatildeo interseccedilatildeo e diferenccedila

respectivamente Os nuacutemeros de surfels dos modelos resultantes satildeo mostrados

na Tabela 2

Resultados 63

Figura 30-Resultado da uniatildeo de duas Igeas

Figura 31-Resultado da interseccedilatildeo de duas Igeas

Resultados 64

Figura 32-Resultado da diferenccedila entre duas Igeas

Tabela 2-Nuacutemero de surfels dos modelos resultantes

Observamos que o nuacutemero de surfels dos modelos resultantes estaacute

coerente com as figuras dos seus modelos

Para avaliar o tempo de processamento das operaccedilotildees foram realizados

vaacuterios testes com o objetivo de obter uma meacutedia dos tempos de realizaccedilatildeo de

cada operaccedilatildeo Tambeacutem foram armazenados os tempos da criaccedilatildeo das duas

octrees e da classificaccedilatildeo de todos os surfels dos dois objetos (como dentro ou

fora do outro modelo) Estes testes foram feitos usando o modelo Igea A meacutedia

dos tempos de processamento foi calculada e os resultados satildeo mostrados na

Tabela 3 Verificamos que o maior tempo gasto eacute para criaccedilatildeo das octrees

Verificamos tambeacutem que este resultado apresentado eacute similar ao resultado

verificado empiricamente com o plugin de Pauly [3] Os tempos gastos para

realizar as operaccedilotildees satildeo similares e o maior tempo gasto no plugin de Pauly

tambeacutem eacute para inicializaccedilatildeo de suas estruturas de dados que incluem a kd-tree

Operaccedilatildeo Nuacutemero de surfels do modelo resultado

Uniatildeo 189715

Interseccedilatildeo 72225

Diferenccedila 134552

Resultados 65

Operaccedilatildeo Criaccedilatildeo das

Octrees (seg)

Classificaccedilatildeo

(seg)

Criaccedilatildeo do

resultado (seg)

Total (seg)

Uniatildeo 39375 1324 18925 7154

Interseccedilatildeo 38585 1585 09547 63982

Diferenccedila 399875 1504 1729 729475

Tabela 3- Meacutedia dos tempos de processamento para as operaccedilotildees com duas Igeas

Com o objetivo de expor melhor os resultados deste trabalho

apresentamos abaixo mais um teste das operaccedilotildees booleanas usando o nosso

plugin Os modelos usados para este segundo teste satildeo o Max Planck e o Male

ambos modelos soacutelidos disponibilizados no PointShop Estes modelos satildeo

mostrados nas figura 33 e 34

O primeiro Max Planck conteacutem 52809 surfels

Figura 33-Modelo do PointShop MaxPlanck

O segundo modelo abaixo Male conteacutem 148138 surfels

Resultados 66

Figura 34-Modelo do PointShop Male

As Figuras 353637 mostram o resultado da operaccedilatildeo de uniatildeo interseccedilatildeo

e diferenccedila respectivamente usando os dois modelos acima Podemos observar

pela figura 35 que o resultado da operaccedilatildeo de diferenccedila neste caso gerou um

modelo resultado com trecircs partes desconexas Os nuacutemeros de surfels de cada

modelo resultado satildeo mostrados na Tabela 5

Figura 35- Resultado da Uniatildeo do modelo Male com MaxPlanck

Resultados 67

Figura 36-Resultado da interseccedilatildeo do modelo Male com o MaxPlanck

Figura 37-Resultado da diferenccedila do modelo Male do modelo MaxPlanck

As meacutedias de tempos de processamento foram calculadas da mesma

forma que o primeiro teste com o modelo Igea acima apresentado Os

resultados satildeo mostrados na Tabela 4 Podemos observar que este teste

Resultados 68

apresenta tempos um pouco menores que o teste com o modelo Igea Isto se

deve ao fato de que o modelo MaxPlanck ser significativamente menor que o

modelo Igea MaxPlanck possui 52809 surfels e Igea conteacutem 134345 surfels

Operaccedilatildeo Criaccedilatildeo das

Octrees (seg)

Classificaccedilatildeo

(seg)

Criaccedilatildeo do

resultado (seg)

Total

(seg)

Uniatildeo 3012 1254 102 5285

Interseccedilatildeo 2985 0901 0861 4747

Diferenccedila 2965 0911 0791 4667

Tabela 4-Tempo de processamento das operaccedilotildees com os modelos MaxPlanck e Male

Operaccedilatildeo Nuacutemero de surfels do resultado

Uniatildeo 126532

Interseccedilatildeo 88414

Diferenccedila 77635

Tabela 5-Nuacutemero de surfels dos modelos resultados das operaccedilotildees com os modelos MaxPlanck e Male

Em seguida apresentaremos uma comparaccedilatildeo entre o nosso plugin e o

plugin de Pauly[3] e tambeacutem uma comparaccedilatildeo entre o meacutetodo de Adams e Dutreacute

[2] e o meacutetodo de Pauly [3]

62 Comparaccedilatildeo entre os dois meacutetodos que realizam operaccedilotildees booleanas

A comparaccedilatildeo entre os meacutetodos de Pauly[3] e de Adams e Dutreacute foi feita

em termos de tempo de processamento e em termos conceituais Em termos de

tempo de processamento comparamos o plugin de Pauly[3] com o nosso plugin

Em termos de tempo de processamento verifica-se empiricamente que os

dois meacutetodos apresentam tempos bastante similares Entretanto o tempo de

processamento do algoritmo aqui implementado ainda pode ser melhorado com

Resultados 69

o uso do meacutetodo TINN [19] que foi proposto em Adams[2] - para otimizar a

pesquisa do surfel mais proacuteximo a um ponto que estaacute localizado na regiatildeo de um

noacute que conteacutem surfels - veja seccedilatildeo 42 O uso deste meacutetodo natildeo foi

implementado para este trabalho e a sua implementaccedilatildeo melhoraria o tempo de

resposta do algoritmo Aleacutem disso o trabalho de Sara F Frisken [12] citado no

capiacutetulo 2 apresenta uma otimizaccedilatildeo no uso de octrees que pode ser

incorporada no algoritmo implementado neste trabalho

Em termos conceituais vamos fazer a comparaccedilatildeo do uso do que

chamamos aqui de Regra 2 do tratamento de interseccedilatildeo e do tratamento de

ldquoarestas vivasrdquo

Como vimos na seccedilatildeo 41 tanto o algoritmo implementado nesta

dissertaccedilatildeo baseado no trabalho de Adams e Dutreacute como o meacutetodo de Pauly

[3] parte do que chamamos aqui de Regra 2 para realizar operaccedilotildees booleanas

com pontos Mas cada um destes meacutetodos daacute um tratamento diferente para o

uso desta regra

O meacutetodo de Pauly usa a Regra 2 para classificaccedilatildeo de cada ponto ou de

cada surfel Para classificar um surfel de B sb como dentro ou fora de A eacute

encontrado o surfel de A sa mais proacuteximo a sb e sb eacute classificado a partir de sa

Para encontrar sa Pauly utiliza uma kd-tree Como esta pesquisa para encontrar

sa eacute cara (mesmo usando uma kd-tree) Pauly utiliza uma esfera que conteacutem

pontos com a mesma classificaccedilatildeo (seccedilatildeo 432) e diminui em 90 este nuacutemero

de pesquisas Pauly utiliza tambeacutem a representaccedilatildeo impliacutecita MLS (Moving Least

Squares) para casos em que a Regra 2 poderia falhar e para tratamento de

interseccedilotildees Entretanto o nuacutemero destes casos em que a Regra 2 poderia falhar

eacute muito pequeno E a representaccedilatildeo MLS natildeo eacute uma estrutura simples de ser

implementada Portanto natildeo encontramos vantagens em usar MLS para estes

casos O meacutetodo de Adams e Dutreacute natildeo trata estes casos e na praacutetica

apresenta resultados bastante satisfatoacuterios como foi mostrado Portanto

consideramos que valeria a pena fazer algum tratamento especial para estes

casos se fosse um procedimento simples Para a execuccedilatildeo do algoritmo de

Pauly o uso de MLS natildeo interfere significativamente porque a construccedilatildeo desta

representaccedilatildeo natildeo eacute feita somente para realizar operaccedilotildees booleanas Os testes

empiacutericos que fizemos com o algoritmo de Pauly natildeo incluem a construccedilatildeo desta

representaccedilatildeo

Aparentemente os dois algoritmos satildeo bastante parecidos um usa octrees

e o outro usa kd-tree As duas estruturas de dados satildeo simples e otimizam a

classificaccedilatildeo dos surfels de um modelo como dentro ou fora do outro modelo

Resultados 70

Mas existe uma diferenccedila conceitual entre dois que merece ser destacada O

algoritmo aqui implementado usa a Regra 2 para classificaccedilatildeo dos noacutes de uma

octree e armazena esta octree classificada (ver capiacutetulo 5) Assim na maioria dos

casos natildeo seraacute necessaacuterio encontrar o surfel mais proacuteximo para classificar um

ponto (ou um surfel) como fora ou dentro de um modelo Caso o ponto esteja em

uma aacuterea da octree classificada ele teraacute a classificaccedilatildeo dada agravequela aacuterea A

pesquisa ao surfel mais proacuteximo seraacute feita apenas nos casos em que o ponto a

ser classificado estaacute localizado entre os planos que subdividem um noacute cheio

O uso desta octree classificada levanta uma questatildeo que natildeo foi citada no

trabalho de Adams e Dutreacute que eacute a proximidade desta estrutura (armazenada)

de octree classificada com uma representaccedilatildeo volumeacutetrica do objeto Sendo

assim esta estrutura pode ser aproveitada para outras funccedilotildees aleacutem da

classificaccedilatildeo dos surfels Por exemplo podemos ter uma aproximaccedilatildeo do

volume de uma cena somando os volumes aproximados dos modelos que a

compotildeem Como o enfoque deste trabalho eacute operaccedilatildeo booleana natildeo vamos nos

aprofundar nesta questatildeo

Outra importante diferenccedila entre os dois trabalhos que jaacute foi explicada na

seccedilatildeo 432 eacute que o meacutetodo de Pauly aplica-se a modelos soacutelidos ou natildeo

soacutelidos enquanto que o meacutetodo de Adams e Dutreacute aplica-se somente a modelos

soacutelidos

Quanto ao tratamento de interseccedilatildeo em termos de visualizaccedilatildeo todos os

dois resolvem bem o problema O tratamento de interseccedilatildeo nos dois trabalhos

tambeacutem resolve o problema da validade da Regra 2 (ver seccedilatildeo 44) Entretanto

o tratamento de Adams e Dutreacute natildeo depende da renderizaccedilatildeo sendo portanto

mais portaacutevel Aleacutem disso uma desvantagem do meacutetodo de Pauly eacute o uso da

representaccedilatildeo impliacutecita MLS (ldquoMoving Least Squaresrdquo) do objeto para obter os

pontos exatamente na curva de interseccedilatildeo Esta representaccedilatildeo torna o

tratamento de interseccedilatildeo mais complexo e a vantagem apresentada natildeo eacute tatildeo

significativa para este tratamento de interseccedilatildeo

Conclusatildeo 71

7 Conclusatildeo

Concluiacutemos entatildeo que as escolhas de Adams e Dutreacute por usar uma

octree classificada e pelo tratamento dado agrave interseccedilatildeo satildeo mais abrangentes

que a escolha de Pauly E consideramos que quanto mais abrangente for uma

escolha conceitual mais resultados poderemos tirar dela No caso de Adams e

Dutreacute eles estendem o problema de classificar um ponto para classificar todo o

modelo Como foi citado ele quase fornece uma representaccedilatildeo volumeacutetrica do

modelo Esta aproximada representaccedilatildeo volumeacutetrica pode nos fornecer outras

informaccedilotildees como por exemplo o volume aproximado do modelo

Aleacutem disso o uso da representaccedilatildeo impliacutecita MLS no meacutetodo de Pauly cria

uma complexidade a mais para o meacutetodo sem apresentar vantagens para a

realizaccedilatildeo de operaccedilotildees booleanas que eacute o nosso enfoque

Logo podemos dizer que o meacutetodo de Adams e Dutreacute apresenta as

seguintes vantagens em relaccedilatildeo ao de Pauly

- a estrutura de octree classificada aleacutem de ser usada para classificaccedilatildeo

fornece informaccedilotildees adicionais como volume aproximado do objeto

- o tempo de processamento no meacutetodo de Adams e Dutreacute tende a ser

melhor que no meacutetodo de Pauly se implementadas as melhorias acima citadas e

se colocaacutessemos em consideraccedilatildeo o uso da representaccedilatildeo impliacutecita MLS

(Moving Least Squares)

- o tratamento de interseccedilatildeo de Adams e Dutreacute apresenta a vantagem da

portabilidade ou seja iraacute funcionar independente do algoritmo de renderizaccedilatildeo

utilizado

E as vantagens do meacutetodo de Pauly em relaccedilatildeo ao de Adams e Dutreacute

- a colocaccedilatildeo de surfels exatamente na curva de interseccedilatildeo

- a possibilidade de trabalhar com modelos soacutelidos ou natildeo soacutelidos

E finalizando concluiacutemos que o estudo relatado nesta dissertaccedilatildeo foi

importante por

- fornecer um breve estudo sobre modelagem por pontos uma nova e

promissora aacuterea dentro da computaccedilatildeo graacutefica

Conclusatildeo 72

- por apresentar uma avaliaccedilatildeo dos dois trabalhos existentes sobre

operaccedilotildees booleanas com pontos encontrando as vantagens de cada um

e levantando questotildees que natildeo tinham sido citadas nos trabalhos originais

- por propor e implementar melhorias ao trabalho de Adams e Dutreacute

71 Trabalhos Futuros

Nossa implementaccedilatildeo pode ser ainda evoluiacuteda com as propostas

apresentadas na seccedilatildeo 62 Como observamos o tempo de processamento do

algoritmo aqui implementado ainda pode ser melhorado com o uso do meacutetodo

TINN [19] - que foi proposto em Adams[2] - para otimizar a pesquisa do surfel

mais proacuteximo a um ponto que estaacute localizado na regiatildeo de um noacute que conteacutem

surfels Aleacutem disso o trabalho Simple and Efficient Trasversal Methods for

Quadtrees and Octrees de Sara F Frisken [12] citado no capiacutetulo 2 apresenta

uma otimizaccedilatildeo no uso de octrees Outra proposta para melhorar o tempo de

processamento do algoritmo aqui implementado eacute usar a forma de trabalhar com

octrees apresentada neste trabalho

O trabalho de Adams e Dutreacute [2] eacute aplicado apenas a objetos soacutelidos O

nosso plugin portanto aplica-se somente a este tipo de objeto Jaacute o trabalho de

Pauly[3] eacute aplicado tambeacutem a modelos natildeo soacutelidos Apresentamos como

proposta a um trabalho futuro a extensatildeo do algoritmo aqui implementado para

modelos natildeo soacutelidos O surfel pode conter uma informaccedilatildeo adicional que indica

se ele estaacute delimitando um volume ou natildeo Assim pode-se ter um modelo com

ldquopartes soacutelidasrdquo e ldquopartes natildeo soacutelidasrdquo Por exemplo a uniatildeo de um plano com

uma esfera poderia resultar numa esfera com ldquoabasrdquo (seriam as partes do plano

que estariam fora da esfera) O modelo resultado teria uma parte correspondente

a um espaccedilo 3D (esfera) e outra parte que seria uma superfiacutecie 2D posicionada

no espaccedilo 3D sem delimitar algum volume (abas)

Muitos trabalhos podem ser desenvolvidos aplicando-se o modelo por

pontos em animaccedilatildeo jogos visualizaccedilatildeo de terrenos criaccedilatildeo de protoacutetipos etc

considerando-se a eficiecircncia e simplicidade do modelo E mais especificamente

as operaccedilotildees booleanas com pontos podem ser aplicadas para criaccedilatildeo de

cenaacuterios testes de colisotildees e nestes casos a representaccedilatildeo usando octrees

pode ser mais explorada considerando-se o seu potencial de representaccedilatildeo

volumeacutetrica de um objeto

Referecircncias Bibliograacuteficas 73

8 Referecircncias Bibliograacuteficas

[1] MAumlNTYLAuml M An Introduction to Solid Modeling Computer Science Press 1988

[2] ADAMS B DUTREacute P Interactive Boolean Operations on Surfel-

Bounded Solids Proceedings of SIGGRAPH 2003 San Diego USA 2003

[3] PAULY M KEISER R KOBBELT L GROSS M Shape Modeling

with Point-Sampled Geometry SIGGRAPH 2003 Computer Graphics

Proceedings Annual Conference Series ACM Press ACM SIGGRAPH 2003

[4] LEVOY M WHITTED T The Use of Points as Display Primitives

Technical Report TR 85-022 The University of North Carolina at Chapel Hill

Department of Computer Science 1985

[5] PFISTER H ZWICKER M VAN BAAR J GROSS M 2000 Surfels

Surface Elements as Rendering Primitives SIGGRAPH 2000 pp 335ndash342 New

Orleans LA July 23-28 2000

[6] ZWICKER M PFISTER H VAN BAAR J GROSS M Surface

Splatting SIGGRAPH 2001

[7] PAULY M KOBBELT L GROSS M Multiresolution Modeling of

Point-Sampled Geometry CS Techinical Report 378 September 16 2002

[8] CURLESS B New Methods for Surface Reconstruction from Range Images PhD thesis Stanford University 1997

[9] RUSINKIEWICZ S Real-time Acquisition and Rendering of Large 3D Models PhD thesis Stanford University 2001

Referecircncias Bibliograacuteficas 74

[10] AMENTA N BERN M KAMVYSSELIS M A new Voronoi-Based

Surface Reconstruction Algorithm SIGGRAPH 98 Conference proceedings pp

415-421 New York 1998

[11] ZWICKER M PAULY M KNOLL O GROSS M Pointshop 3D an

Interactive System for Point-Based Surface Editing Proceedings of SIGGRAPH 2002 San Antonio TX July 2002

[12] FRISKEN S PERRY R Simple and Efficient Traversal Methods for

Quadtrees and Octrees Journal of Graphics Tools Vol 7 Issue 3 May 2003

[13] CORREcircA W T OLIVEIRA M M Silva C T Wang J

Modeling and Rendering of Real Environments

Revista de Informaacutetica Teoacuterica e Aplicada (Brazilian Journal of Theoretic and Applied Computing) 9(2)127-156 2002

[14] DAVIS J MARSCHNER S GARR M LEVOY M Filling Holes in

Complex Surfaces Using Volumetric Diffusion First International Symposium on 3D Data Processing Visualization Transmission June 2002

[15] RAumlSAumlNEN J Surface Splatting Theory Extensions and Implementation Masterrsquos Thesis Dept of Computer Science Helsinki

University of Technology May 28 2002

[16] PAULY M Point Primitives for Interactive Modeling and Processing of 3D Geometry PhD thesis Federal Institute of Technology (ETH)

of Zurich 2003

[17] HOPPE H DEROSE T DUCHAMP T MCDONALD J

STUELZLE W Surface Reconstruction from Unorganized Points Computer Graphics 26(2)71ndash78 July 1992

[18] ALEXA M BEHR J COHEN-OR D FLEISHMAN S LEVIN D

SILVA C T Point Set Surfaces IEEE Visualization 2001 pp 21ndash28 October

2001

Referecircncias Bibliograacuteficas 75

[19] GREENSPAN M GODIN G TALBOT J Acceleration of Binning

Nearest Neighbor Methods Proceedings of Vision Interface 2000 pp 337-

344

[20] MENCL R Reconstruction of Surfaces from Unorganized Three-Dimensional Point Clouds Dissertation Dortmund Univ 2001

[21] KRIVANEK J Representing and Rendering Surfaces With Points

httpciteseernjneccomkrivanek03representinghtml Acesso em 30 jul

2003

[22] KRISTJANSSON ET AL Approximate Boolean Operations on Free-

form Solids Proceedings of SIGGRAPH 01 2001

Modelagem por Pontos 22

Figura 2 [5] A superfiacutecie modelada por surfels O surfel em destaque tem raio de alcance

rt e normal n

Como o modelo natildeo armazena qualquer informaccedilatildeo sobre a conexatildeo entre

os surfels a reconstruccedilatildeo da superfiacutecie contiacutenua a partir dele pode exigir

algumas restriccedilotildees na amostragem (seccedilatildeo 36)

32 Tipos de distribuiccedilatildeo dos surfels

Existem dois tipos de distribuiccedilatildeo dos surfels na modelagem por pontos

uniforme e natildeo uniforme Na distribuiccedilatildeo uniforme cada um deles descreve

partes de mesmo tamanho da superfiacutecie Na natildeo uniforme cada surfel armazena

a informaccedilatildeo de seu raio de alcance que eacute o raio do disco que este surfel

representa

A distribuiccedilatildeo uniforme tem a vantagem de ser mais simples e natildeo ser

necessaacuterio armazenar o raio de alcance do disco mas ela apresenta a seguinte

desvantagem se o modelo possui regiotildees com muito detalhe e regiotildees com

pouco detalhe ele teraacute que manter uma alta densidade mesmo nas regiotildees de

poucos detalhes

33 Estrutura de multi-resoluccedilatildeo

Um objeto pode ser representado em vaacuterios niacuteveis de detalhes Por

exemplo podemos representar um mesmo objeto com vaacuterias resoluccedilotildees

diferentes Este conceito pode ser aplicado ao modelo por pontos Desta forma

um modelo eacute representado por uma estrutura hieraacuterquica (uma aacutervore por

exemplo) onde em cada niacutevel temos uma representaccedilatildeo do objeto em uma

Modelagem por Pontos 23

determinada resoluccedilatildeo Em [7] Pauly et al propotildeem algoritmos para modelagem

multi-resoluccedilatildeo em modelos por pontos

34 Dados que um surfel pode conter

Cada surfel armazena sua localizaccedilatildeo e pode tambeacutem conter informaccedilotildees

como a cor ou coordenadas de textura Se a amostragem natildeo for uniforme o

surfel conteacutem a informaccedilatildeo do raio de alcance que eacute o raio de um disco cujo

centro eacute a posiccedilatildeo do surfel O surfel pode tambeacutem conter o vetor normal agrave

superfiacutecie e assim o surfel pode ser visto como um disco orientado A superfiacutecie

tambeacutem pode ser vista como uma superfiacutecie orientada

35 Aquisiccedilatildeo do modelo

Esta introduccedilatildeo sobre aquisiccedilatildeo do modelo aqui apresentada baseia-se no

tutorial de W T Correcirca [13]

O processo de aquisiccedilatildeo consiste em obter uma amostragem de pontos da

superfiacutecie do objeto real por meio de equipamentos como por exemplo o

scanner 3D Eacute uma aacuterea que tem progredido muito nos uacuteltimos anos A

resoluccedilatildeo e a precisatildeo dos equipamentos de aquisiccedilatildeo tecircm melhorado bastante

e o custo deles reduzido de forma significativa Isso possibilita que a aquisiccedilatildeo

de modelos 3D seja usada em aplicaccedilotildees de desenho industrial arte ou em

produtos para a aacuterea de entretenimento O consequumlente maior uso destes

equipamentos criou a necessidade de avanccedilos no tratamento dos seus dados de

saiacuteda que satildeo um conjunto de pontos

Este processo pode ser dividido em trecircs partes [13] aquisiccedilatildeo da

geometria aquisiccedilatildeo da textura e correccedilatildeo de falhas da aquisiccedilatildeo

351 Aquisiccedilatildeo da geometria

Existem vaacuterios meacutetodos de aquisiccedilatildeo da geometria Curless [8] e

Rusinkiewicz [9] classificaram estes meacutetodos em trecircs categorias meacutetodos por

contato transmissatildeo e reflexatildeo

O meacutetodo por contato toca a superfiacutecie do objeto com uma sonda e grava

a posiccedilatildeo Este meacutetodo do qual o Coordinate Measuring Machines (CMMs) eacute

Modelagem por Pontos 24

um exemplo eacute bastante preciso mas eacute muito lento e natildeo adequado a objetos

fraacutegeis

Meacutetodos por transmissatildeo projetam ondas de energia sobre o objeto e

gravam a energia transmitida Por exemplo tomografia computadorizada que

projeta ondas de raio-x sobre o objeto e mede a quantidade de radiaccedilatildeo que

passa atraveacutes dele O resultado eacute um modelo geomeacutetrico de alta resoluccedilatildeo Este

meacutetodo pode captar detalhes do objeto que natildeo satildeo visiacuteveis de fora do objeto

Por outro lado ele eacute caro e arriscado

Meacutetodos por reflexatildeo podem ser oacuteticos ou natildeo-oacuteticos Natildeo-oacuteticos incluem

radares que medem a distacircncia a um objeto enviando microondas ou ondas

sonoras para o objeto e gravando o tempo que a onda gasta para retornar Estes

meacutetodos natildeo satildeo muito precisos nem raacutepidos

Meacutetodos por reflexatildeo oacuteticos podem ser passivos ou ativos Meacutetodos oacuteticos

passivos natildeo interagem com o objeto e incluem teacutecnicas de visatildeo computacional

como shape-from-shading stereo triangulation optical flow e meacutetodos de

decomposiccedilatildeo para video streams Estes meacutetodos raramente constroem

modelos precisos e sua maior aplicaccedilatildeo eacute em reconhecimento de objetos

Meacutetodos oacuteticos ativos projetam luz sobre um objeto de maneira estruturada

e atraveacutes da reflexatildeo da luz determinam a forma do objeto Exemplos satildeo depth

from defocus photometric stereo projected-light triangulation time of flight

Meacutetodos por reflexatildeo oacuteticos ativos tecircm muitas vantagens sobre os passivos tecircm

um melhor desempenho quando natildeo existe textura satildeo mais baratos e mais

robustos e produzem uma amostragem precisa

352 Aquisiccedilatildeo da textura

Idealmente noacutes gostariacuteamos de ter uma completa descriccedilatildeo de como um

ponto da superfiacutecie reflete a luz dependendo do vetor normal a esta superfiacutecie

da direccedilatildeo do raio de luz incidente e do comprimento de onda Tal descriccedilatildeo eacute

conhecida como Bidirectional Reflectance Distribution Function (BRDF) Medir

BRDFs com precisatildeo eacute um problema difiacutecil

Pode-se ter uma aproximaccedilatildeo da aquisiccedilatildeo de cores do objeto tirando

fotos dele O objeto eacute fotografado e a cor de cada ponto da superfiacutecie eacute obtida a

partir de um mapeamento das fotos 2D para o modelo 3D Para mapear a

fotografia agrave geometria precisamos conhecer os paracircmetros de projeccedilatildeo da

cacircmera e a sua posiccedilatildeo no momento em que a foto foi batida Para cada ponto

Modelagem por Pontos 25

3D do modelo encontramos sua projeccedilatildeo 2D no plano da cacircmera e associamos

a cor do pixel nesta projeccedilatildeo agrave cor do ponto 3D

353 Correccedilatildeo das falhas da aquisiccedilatildeo

O processo de aquisiccedilatildeo deixa frequumlentemente buracos no modelo devido

a ruiacutedos no processo ou agrave impossibilidade de aquisiccedilatildeo de determinadas partes

de uma superfiacutecie Estes buracos devem ser corrigidos Pode-se usar por

exemplo um filtro de passa-baixa para remoccedilatildeo de ruiacutedos [14] Meacutetodos de

difusatildeo geomeacutetrica tecircm sido aplicados para preenchimento dos buracos [15] A

correccedilatildeo das falhas eacute tida como um preacute-processamento para o processo de

reconstruccedilatildeo da superfiacutecie contiacutenua (seccedilatildeo 36)

36 Reconstruccedilatildeo da superfiacutecie (contiacutenua) a partir do modelo (discreto)

A reconstruccedilatildeo da superfiacutecie contiacutenua consiste em a partir de um conjunto

natildeo estruturado de pontos obter um modelo contiacutenuo desta superfiacutecie Esta

reconstruccedilatildeo eacute frequumlentemente exigida para um modelo por pontos Na sua

visualizaccedilatildeo podemos desejar focar qualquer parte do modelo Para fazermos

operaccedilotildees booleanas com os modelos podemos querer determinar exatamente

onde eles se intersectam

No entanto natildeo precisamos ter necessariamente a representaccedilatildeo contiacutenua

de todo o objeto ao mesmo tempo A reconstruccedilatildeo desta superfiacutecie a partir dos

pontos amostrados pode ser feita no momento que for mais adequado agrave

aplicaccedilatildeo Na visualizaccedilatildeo a reconstruccedilatildeo pode ser feita na projeccedilatildeo 2D da

parte do modelo em foco (seccedilatildeo 37) Para operaccedilotildees booleanas pode-se

reconstruir apenas a aacuterea da interseccedilatildeo dos modelos

Este processo de reconstruccedilatildeo de superfiacutecie tem sido muito estudado em

modelagem geomeacutetrica e geometria computacional nos uacuteltimos anos O trabalho

mais importante desta aacuterea eacute o trabalho de Amenta et al [10] que foi a primeira

soluccedilatildeo com garantias demonstraacuteveis para este problema de reconstruccedilatildeo de

superfiacutecie A seccedilatildeo 44 explica estes conceitos e o trabalho [10] Este trabalho

demonstra que teoricamente para que a reconstruccedilatildeo da superfiacutecie (contiacutenua) a

partir das amostras seja correta a amostragem deve ser adequada Ele usa o

conceito de ldquoEixo Medialrdquo para definir o que eacute uma amostragem adequada

Modelagem por Pontos 26

(seccedilatildeo 44) Em duas dimensotildees os veacutertices de Voronoi de uma amostragem

densa aproximam o ldquoEixo Medialrdquo da amostragem

Por meio deste conceito de Eixo Medial [1016] obtecircm-se paracircmetros

teoacutericos para a definiccedilatildeo de amostragem adequada e baseado neste conceito

o algoritmo apresentado em [10] traz uma soluccedilatildeo praacutetica para o problema

obtendo uma malha poligonal a partir do modelo por pontos

O PointShop 3D [11] software de ediccedilatildeo de modelos por pontos utilizado

nesta pesquisa faz quando necessaacuterio a reconstruccedilatildeo da superfiacutecie Para isso

o PointShop 3D explora a vizinhanccedila local (surfels vizinhos de acordo com suas

posiccedilotildees) Ele usa o conceito de Eixo Medial para justificar seu meacutetodo de

reconstruccedilatildeo da superfiacutecie que na praacutetica apresenta resultados bastante

satisfatoacuterios apesar de teoricamente natildeo ter garantias [16]

37 Visualizaccedilatildeo do modelo

A primeira abordagem para visualizaccedilatildeo de um modelo por pontos foi

construir uma malha de poliacutegonos a partir dos surfels e renderizaacute-la Mas a

construccedilatildeo de malhas a partir dos surfels eacute um processo muito caro e lento

principalmente para modelos complexos Na tentativa de obter uma visualizaccedilatildeo

interativa do modelo por pontos estatildeo sendo estudadas teacutecnicas que utilizam

surfels como primitiva de visualizaccedilatildeo A ideacuteia foi apresentada inicialmente por

Levoy [4]

Figura 3 [21] -Modelo por pontos e sua renderizaccedilatildeo usando Surface Splatting

Modelagem por Pontos 27

O objetivo da renderizaccedilatildeo a partir dos surfels eacute projetaacute-los na tela e

reconstruir as superfiacutecies de forma contiacutenua sem buracos Para que esta

renderizaccedilatildeo seja amplamente utilizada deve-se ter cuidado com o uso de

memoacuteria e com a qualidade da imagem gerada Teacutecnicas recentes como Surface

Splatting [6] faz a renderizaccedilatildeo interativamente com qualidade (Figura 3)

comparada a outros meacutetodos de renderizaccedilatildeo como Image Based Rendering

Em geral a visualizaccedilatildeo do modelo por pontos pode ser dividida nas seguintes

etapas

- warping - projeccedilatildeo em perspectiva de cada ponto do modelo na tela

processo anaacutelogo agrave projeccedilatildeo de veacutertices dos triacircngulos na malha triangular Se

um pixel da tela estiver contido em mais de uma projeccedilatildeo de surfels (vizinhos)

ou seja mais de um ponto cobre este pixel os atributos destes pontos seratildeo

combinados

- shading por ponto - o processo de shading eacute realizado para cada ponto

visiacutevel (os pontos que natildeo satildeo vistos do ponto de vista em questatildeo devem ser

retirados) Qualquer modelo local de shading pode ser aplicado Uma nova

teacutecnica foi proposta em Surface Splatting [6]

- reconstruccedilatildeo da imagem ndash pixels que natildeo ldquoreceberamrdquo projeccedilatildeo de

nenhum ponto formam buracos na imagem Esta imagem deve ser reconstruiacuteda

sem buracos sem aliasing e as superfiacutecies devem ser reconstruiacutedas de forma

contiacutenua e devem ser ldquosuavizadasrdquo (smooth surface)

Os algoritmos de renderizaccedilatildeo por pontos podem tratar a questatildeo de

buracos na visualizaccedilatildeo de trecircs formas [17]

Detecccedilatildeo e preenchimento de buracos no espaccedilo da tela pontos satildeo

projetados na tela e pixels que natildeo receberam pontos satildeo detectados (buracos)

Para preencher estes buracos que natildeo receberam pontos eacute feita uma

interpolaccedilatildeo entre os vizinhos

Geraccedilatildeo de mais pontos a superfiacutecie eacute interpolada no espaccedilo do modelo

para garantir que todos os pixels recebam pelo menos a projeccedilatildeo de um ponto

Splatting um surfel eacute projetado na tela e sua contribuiccedilatildeo eacute espalhada de

forma diferenciada para os pixels vizinhos Agrave medida em que o vizinho se torna

mais distante a contribuiccedilatildeo do surfel diminui

Raumlsaumlnen faz uma analogia do processo de renderizaccedilatildeo proposto em [6]

com o mapeamento de textura [15] No mapeamento de textura para um

determinado pixel da tela satildeo encontrados os pontos da textura que afetam este

Modelagem por Pontos 28

pixel Num sentido inverso em splatting para um determinado surfel (que

representa a textura) satildeo encontrados os pixels da tela que este surfel afeta

38 Ediccedilatildeo do modelo

Ediccedilatildeo de um modelo 3D consiste em operaccedilotildees que modificam

caracteriacutesticas deste modelo como cor textura forma ou criam novos modelos

O software PointShop 3D [11] software de ediccedilatildeo de modelos por pontos 3D

implementa vaacuterias destas operaccedilotildees (ver seccedilatildeo 52)

Para modificar a forma de um modelo ou criar um novo satildeo muito usadas

as operaccedilotildees booleanas que eacute o nosso enfoque nesta dissertaccedilatildeo Na

modelagem CSG (Constructive Solid Geometry) as operaccedilotildees booleanas satildeo

usadas juntamente com primitivas soacutelidas para definir um modelo No entanto

em alguns tipos de modelos estas operaccedilotildees satildeo difiacuteceis como por exemplo

em malhas poligonais Com pontos elas podem ser feitas interativamente [32]

Operaccedilotildees Booleanas com Pontos 29

4 Operaccedilotildees Booleanas com Pontos

Operaccedilotildees booleanas satildeo as operaccedilotildees de uniatildeo interseccedilatildeo e diferenccedila

definidas na teoria matemaacutetica de conjuntos Estas operaccedilotildees satildeo aplicadas em

modelos soacutelidos para alteraacute-los ou para criar novos modelos A Figura 4 abaixo

mostra a criaccedilatildeo de trecircs novos modelos a partir de quatro modelos iniciais

Figura 4 [22] Trecircs modelos novos foram criados a partir dos quatro iniciais (esfera

cilindro dois cubos) O primeiro eacute a esfera menos um cubo em seguida retirou-se outro

cubo e por uacuteltimo retirou-se o cilindro

Estas operaccedilotildees satildeo aplicadas em objetos modelados por pontos em dois

trabalhos no trabalho de Bart Adams e Philip Dutreacute [2] e no trabalho de Pauly

et Al [3] Neste capiacutetulo a seccedilatildeo 41 apresenta a parte comum aos dois

trabalhos e as seccedilotildees 42 e 43 apresentam as particularidades de cada um A

seccedilatildeo 44 discute uma questatildeo natildeo explicitada em nenhum dos dois trabalhos

41 Meacutetodos para realizar operaccedilotildees booleanas em objetos modelados por pontos

A Figura 5 mostra o resultado do meacutetodo de Adams[2] operaccedilotildees de

uniatildeo diferenccedila e interseccedilatildeo de objetos soacutelidos 3D modelados por pontos

Operaccedilotildees Booleanas com Pontos 30

Figura 5 [2]-A partir de dois modelos por pontos uma heacutelice e uma cabeccedila as trecircs operaccedilotildees booleanas satildeo mostradas da esquerda para a direita uniatildeo diferenccedila e interseccedilatildeo

Sejam A e B objetos 3D soacutelidos modelados por pontos Definem-se os

seguintes elementos

Af ndash superfiacutecie (contorno) de A que estaacute fora de B

Ad ndash superfiacutecie (contorno) de A que estaacute dentro de B

Bf ndash superfiacutecie (contorno) de B que estaacute fora de A

Bd ndash superfiacutecie (contorno) de B que estaacute dentro de A

O resultado da operaccedilatildeo booleana entre A e B seraacute um modelo C cuja

superfiacutecie de contorno pode ser determinada pela seguinte regra [2] que aqui

chamamos de Regra 1

Regra 1 A U B Af + Bf

A cap B Ad + Bd

A ndash B Af + Bd (com a orientaccedilatildeo invertida)

B ndash A Ad (com a orientaccedilatildeo invertida) + Bf

A Figura 6 mostra as operaccedilotildees com dois modelos A e B

(a) (b)

Operaccedilotildees Booleanas com Pontos 31

(c) (d)

Figura 6 [22] (a) Dois modelos A e B (b) Posicionados de forma que A tem

uma parte dentro de B eacute mostrado o resultado A U B Af + Bf (c) Resultado de A ndash B Af

+ Bd (d) Resultado de A cap B Ad + Bd

Bart [2] e Pauly [3] apresentam dois meacutetodos para determinar os

elementos acima Estes dois meacutetodos satildeo construiacutedos a partir dos seguintes

conceitos os elementos Af Ad Bf Bd satildeo uma parte da superfiacutecie modelada por

pontos e portanto satildeo conjuntos de surfels Para determinaacute-los eacute necessaacuteria

entatildeo a classificaccedilatildeo de um surfel (que pode se resumir agrave classificaccedilatildeo de um

ponto que eacute o seu centro) de uma superfiacutecie como dentro ou fora de um outro

modelo Os dois meacutetodos utilizam a seguinte regra para esta classificaccedilatildeo aqui

denominada Regra 2

Regra 2 Dado um ponto x qualquer um volume V determinado por uma superfiacutecie

de contorno S uma amostragem P da superfiacutecie S um ponto p є P que eacute a

amostra mais proacutexima a x um vetor np normal agrave S em p e orientado para fora de

S temos que

(x ndash p) np gt 0 x notinV

Ou seja para classificar um ponto em relaccedilatildeo a um modelo verificamos o

produto interno entre a normal em p (surfel mais proacuteximo a x) e o vetor (x - p)

se este produto interno for maior que zero x natildeo pertence ao volume V e seraacute

classificado como fora senatildeo seraacute classificado como dentro De maneira

ainda mais informal se a normal em p apontar para a direccedilatildeo oposta a x x seraacute

classificado como dentro se apontar para x x seraacute classificado como fora

A Figura 7 mostra a Regra 2

Operaccedilotildees Booleanas com Pontos 32

Figura 7 Para classificar o ponto x encontra-se o surfel p (com normal np) mais proacuteximo

a x Se o produto interno entre np e (x ndash p) for maior que zero entatildeo x eacute classificado como

fora senatildeo seraacute classificado como dentro

A validade da Regra 2 eacute discutida na Seccedilatildeo 44 Uma das restriccedilotildees

teoacutericas para garantir-lhe a validade eacute que a superfiacutecie seja suave

Cada um dos dois meacutetodos daacute um tratamento diferente para o uso desta

regra Pauly usa a regra diretamente encontrando o surfel mais proacuteximo a um

ponto e classificando este ponto a partir deste surfel Ele utiliza tambeacutem a

representaccedilatildeo impliacutecita MLS (Moving Least Squares [18]) para casos em que a

Regra 2 poderia falhar e para tratamento de interseccedilotildees [3] Seu meacutetodo vale

para modelos soacutelidos ou natildeo soacutelidos O meacutetodo de Adams e Dutreacute [2] utiliza

octrees [1] criando uma classificaccedilatildeo dos noacutes da octree a partir desta Regra 2

Os pontos satildeo entatildeo classificados de acordo com o noacute da octree que o conteacutem

Este segundo meacutetodo aplica-se somente a modelos soacutelidos Os dois meacutetodos

seratildeo descritos em detalhes nas seccedilotildees abaixo

Como um surfel eacute considerado um disco podemos dizer que surfels de

dois modelos diferentes podem se intersectar A interseccedilatildeo destes dois surfels

corresponde agrave interseccedilatildeo destes dois discos Estes surfels geram problemas

para visualizaccedilatildeo se forem acrescentados ao resultado sem um tratamento

especiacutefico apresentaratildeo artefatos natildeo desejaacuteveis na renderizaccedilatildeo do modelo

resultado (Figura 8) se natildeo forem acrescentados ao resultado deixaratildeo buracos

no modelo

Operaccedilotildees Booleanas com Pontos 33

Figura 8 [2] -Interseccedilatildeo de duas esferas agrave esquerda sem nenhum tratamento de interseccedilatildeo agrave direita apoacutes o tratamento de interseccedilatildeo

Aleacutem disso nem sempre esta interseccedilatildeo forma uma superfiacutecie suave

Esta interseccedilatildeo pode formar uma aresta viva (seccedilatildeo 4223) gerando

problemas tambeacutem para o uso da Regra 2 que eacute vaacutelida apenas para superfiacutecies

suaves Eacute necessaacuterio entatildeo fazer um tratamento desta superfiacutecie de interseccedilatildeo

(formada por surfels originados de diferentes modelos) O tratamento de cada

um dos meacutetodos para este caso seraacute tambeacutem abaixo apresentado

42 Meacutetodo de Adams e Dutreacute

O meacutetodo aplica-se somente a modelos soacutelidos Para determinaccedilatildeo dos

elementos da aqui chamada Regra 1 (seccedilatildeo 41) este meacutetodo utiliza uma octree

[1] que subdivide o espaccedilo do modelo em trecircs fora dentro ou no contorno do

modelo Estes espaccedilos satildeo determinados pela classificaccedilatildeo dos noacutes da octree a

partir da Regra 2 Tambeacutem eacute usado o meacutetodo TINN - Triangle Inequality Nearest

Neighbour [19] - para otimizar a pesquisa dentro do noacute A seguir descrevemos o

modelo usado neste meacutetodo apresentando os dados associados aos pontos o

tipo de distribuiccedilatildeo e o algoritmo que realiza as operaccedilotildees

421 Modelo por Pontos em Adams e Dutreacute

Os surfels neste meacutetodo contecircm as seguintes informaccedilotildees posiccedilatildeo do

surfel xs orientaccedilatildeo do surfel ns e raio de alcance do surfel rs O surfel pode ser

pensado como um disco ortogonal a ns com centro xs e raio rs O raio eacute

escolhido de tal forma que a projeccedilatildeo dos discos no plano da imagem se

sobreponham

Operaccedilotildees Booleanas com Pontos 34

Os objetos representados satildeo soacutelidos A distribuiccedilatildeo dos surfels eacute

uniforme embora o algoritmo natildeo exija esta condiccedilatildeo Para cada soacutelido eacute

definido um rmax = Max rs o raio de alcance do maior surfel pertencente agrave

superfiacutecie do soacutelido Como o raio eacute escolhido de tal forma que a projeccedilatildeo dos

discos no plano da imagem se sobreponham o controle da amostragem eacute

entatildeo ligado agrave renderizaccedilatildeo

422 Algoritmo de Operaccedilotildees Booleanas

Utilizando objetos modelados da forma descrita acima o meacutetodo realiza

operaccedilotildees de uniatildeo interseccedilatildeo e diferenccedila com modelos soacutelidos Supondo dois

modelos soacutelidos S1 e S2 O algoritmo pode ser dividido nas seguintes etapas

Criaccedilatildeo de uma octree para cada modelo Teste Dentro-Fora Tratamento da

interseccedilatildeo Estas etapas satildeo apresentadas nas proacuteximas seccedilotildees

4221 Criaccedilatildeo de uma octree para cada modelo

Eacute criada uma octree [1] para cada modelo A criaccedilatildeo de uma octree eacute feita

da seguinte forma

Gera-se a ldquoCaixa envolventerdquo caixa alinhada com os eixos que conteacutem

todo o modelo A ldquoCaixa envolventerdquo corresponde ao noacute raiz da octree Este noacute

conteacutem inicialmente todos os surfels do modelo Em seguida o noacute raiz eacute

dividido em oito noacutes filhos Os surfels satildeo distribuiacutedos entre estes oito noacutes Cada

um deles caso contenha surfels eacute dividido novamente em 8 filhos e seus surfels

satildeo redistribuiacutedos entre eles Este processo eacute repetido recursivamente enquanto

o nuacutemero de surfels do noacute for maior que zero ou ateacute uma profundidade maacutexima

preacute-definida da octree ser alcanccedilada

Cada noacute da octree deve ser classificado O objetivo desta classificaccedilatildeo eacute

determinar que parte da octree estaacute dentro do modelo e que parte estaacute fora Os

noacutes da octree satildeo entatildeo classificados como ldquodentrordquo ldquoforardquo e ldquocontornordquo

Podemos ilustrar esta classificaccedilatildeo em 2D a Figura 9 mostra uma quadtree

classificada

Operaccedilotildees Booleanas com Pontos 35

Figura 9-Um objeto representado por pontos com suas normais e sua quadtree correspondente classificada os noacutes cinza claro estatildeo dentro do modelo noacutes cinza mais escuro estatildeo fora do modelo e noacutes com cinza intermediaacuterio satildeo noacutes cheios noacutes que conteacutem pontos

O noacutes que conteacutem surfels satildeo classificados como ldquocontornordquo Para

classificar um noacute vazio existem trecircs casos

o noacute vazio tem apenas um vizinho-irmatildeo natildeo vazio

o noacute vazio tem mais de um vizinho-irmatildeo natildeo vazio

o noacute vazio natildeo tem vizinhos-irmatildeos natildeo vazios

No primeiro caso o noacute vazio eacute classificado pelo seu vizinho natildeo vazio No

segundo caso considera-se qualquer um dos vizinhos natildeo vazios No terceiro

caso classifica-se primeiro os noacutes vizinhos e eacute dada a mesma classificaccedilatildeo para

o noacute vazio Como cada noacute natildeo folha de uma octree tem pelo menos um noacute filho

natildeo vazio sempre pode ser feita a classificaccedilatildeo dos noacutes vazios A classificaccedilatildeo

eacute feita da seguinte forma dentre os surfels do vizinho-irmatildeo escolhido encontra-

se o surfel mais proacuteximo ao noacute a ser classificado Se a normal deste surfel

aponta para o noacute vazio a ser classificado entatildeo ele eacute classificado como ldquoforardquo

Se a normal aponta no sentido contraacuterio entatildeo ele eacute classificado como ldquodentrordquo

De maneira mais formal sejam cv e cc coordenadas dos centros do noacute vazio e

do noacute contorno respectivamente Seja s o surfel mais proacuteximo ao noacute vazio e ns

a normal em s Se ( cv - cc )٠ ns gt 0 ( produto interno entre a normal em s e o

vetor cv - cc for maior que zero ) o noacute vazio seraacute classificado como ldquoforardquo

Senatildeo seraacute classificado como ldquodentrordquo

Em geral os noacutes ldquocontornordquo satildeo subdivididos em trecircs partes uma que estaacute

fora do modelo uma que estaacute dentro do modelo e uma terceira que conteacutem os

surfels Esta subdivisatildeo eacute feita por meio da criaccedilatildeo de dois planos paralelos que

Operaccedilotildees Booleanas com Pontos 36

dividem o noacute Para determinar estes planos calcula-se o vetor nm igual agrave

meacutedia das normais dos surfels do noacute nm = sum ns sum ns onde ns eacute a normal de

cada surfel do noacute

Em seguida encontra-se o surfel com maior produto interno entre a sua

normal e a normal meacutedia d1=Max(nm ٠ ns) Este surfel juntamente com a normal

meacutedia define um dos planos Encontra-se tambeacutem o surfel com menor produto

interno entre a sua normal e a normal meacutedia d2=Min(nm ٠ ns) Este surfel

juntamente com a normal meacutedia define o outro plano A Figura 10 mostra a

divisatildeo de um noacute de uma quadtree nas trecircs partes dentro do modelo fora do

modelo e no ldquocontornordquo

Esta subdivisatildeo aplica-se apenas a noacutes que conteacutem surfels cujas direccedilotildees

natildeo variem em mais de 90 graus Caso isso ocorra ele natildeo seraacute subdividido Ou

seja se um noacute possuir dois vetores normais (de dois surfels diferentes) que

formem um acircngulo maior que 90 graus ele natildeo seraacute subdividido

Figura 10 [2] -Divisatildeo de noacute de contorno a parte agrave esquerda estaacute fora do modelo a parte agrave direita estaacute dentro do modelo e a faixa intermediaacuteria conteacutem os surfels

4222 Teste Dentro-Fora

O Teste Dentro-Fora faz a classificaccedilatildeo dos surfels de um modelo como

ldquodentrordquo ou ldquoforardquo de outro modelo Portanto aplicaremos este mesmo teste duas

vezes uma para o modelo S1 em relaccedilatildeo ao modelo S2 e outra para S2 em

relaccedilatildeo a S1 Vamos mostrar o teste Dentro-Fora para o caso da classificaccedilatildeo

dos surfels do modelo S1 em relaccedilatildeo a S2

Operaccedilotildees Booleanas com Pontos 37

No item anterior foram criadas duas octrees uma para o modelo S1 e

outra para o modelo S2 Chamemos de A e B as octrees de S1 e S2

respectivamente Para classificar S1 em relaccedilatildeo a S2 inicialmente eacute feita uma

avaliaccedilatildeo da posiccedilatildeo de A em relaccedilatildeo a B A e B podem estar nas seguintes

situaccedilotildees

- A natildeo intersecta B

- A intersecta apenas noacutes ldquoforardquo de B

- A intersecta apenas noacutes ldquodentrordquo de B

- A intersecta noacutes ldquoforardquo e noacutes ldquodentrordquo de B

Para testar estas situaccedilotildees os noacutes satildeo aumentados de rmax o raio do

maior surfel do modelo soacutelido Isto eacute feito para compensar o fato de que o surfel

natildeo eacute apenas um ponto mas sim considerado como um disco

No primeiro e no segundo caso todos os surfels de A satildeo classificados

como ldquoforardquo No terceiro caso todos os surfels de A satildeo classificados como

ldquodentrordquo

No quarto caso temos que percorrer a octree A Comeccedilando pelo noacute raiz

percorre-se os filhos deste noacute Para cada filho os quatro testes acima satildeo feitos

Se o noacute filho encontra-se em um dos trecircs primeiros casos a classificaccedilatildeo eacute dada

como foi citada acima Se um filho estaacute no quarto caso e natildeo eacute um noacute folha

repete-se recursivamente o mesmo procedimento para seus filhos ateacute encontrar-

se um noacute folha Para um noacute que estaacute no quarto caso e eacute folha percorre-se a lista

de surfels que este noacute conteacutem classificando cada um destes surfels Seja sa um

surfel desta lista Para este caso percorre-se a octree B para classificar sa

Primeiramente encontramos o noacute de B que conteacutem sa Se este noacute de B foi

dividido testa-se de acordo com esta divisatildeo do noacute se o surfel sa estaacute na parte

do noacute que estaacute dentro do modelo ele eacute classificado como ldquodentrordquo se sa estaacute na

parte que estaacute fora do modelo ele eacute classificado como ldquoforardquo se sa estaacute na parte

intermediaacuteria ou se o noacute de B natildeo foi subdividido em planos encontra-se sb que

eacute o surfel pertencente a este noacute de B que estaacute mais proacuteximo de sa sa seraacute

entatildeo classificado de acordo com sb Se ( sa - sb )٠ nb gt 0 sa eacute classificado

como ldquoforardquo senatildeo eacute classificado como ldquodentrordquo Se os discos de sb e sa se

intersectam sa eacute marcado como interseccedilatildeo Para encontrar sb o algoritmo

implementa o meacutetodo TINN ndash Triangle Inequality Nearest Neighbour [19]

Operaccedilotildees Booleanas com Pontos 38

4223 Tratamento da interseccedilatildeo

Os surfels de A que intersectam surfels de B satildeo classificados como

ldquointerseccedilatildeordquo Se eles natildeo forem incluiacutedos no modelo resultado o soacutelido resultado

teraacute buracos Se eles forem incluiacutedos sem algum tratamento eles natildeo

representaratildeo adequadamente a regiatildeo Em geral o surfel sa (um surfel

ldquointerseccedilatildeordquo de A) eacute dividido em dois pelo plano que conteacutem o surfel sb (surfel de

B que sa intersecta) uma parte que estaacute fora de B e outra que estaacute dentro de B

Dependendo da operaccedilatildeo que estaacute sendo realizada vamos querer manter uma

destas partes do surfel sa no modelo resultado Seja xa a posiccedilatildeo do surfel sa e o

surfel sa uma circunferecircncia de centro xa e raio ra igual ao raio de alcance de sa

O plano que conteacutem o surfel sb define uma corda desta circunferecircncia como

mostra a Figura 11 O surfel sa seraacute substituiacutedo por um surfel menor que

ultrapassa esta corda de uma distacircncia e definida pelo usuaacuterio Para cobrir

completamente a interseccedilatildeo seratildeo adicionados surfels menores que cruzam a

corda de interseccedilatildeo

Figura 11 -Interseccedilatildeo do surfel s e do plano que passa pelo surfel t o surfel mais proacuteximo a s O surfel s eacute substituiacutedo por trecircs surfels menores

Operaccedilotildees Booleanas com Pontos 39

O tratamento de interseccedilatildeo proposto por Adams e Dutreacute [2] natildeo soacute evita

os buracos mas tambeacutem cria uma forma de renderizaccedilatildeo de arestas vivas A

colocaccedilatildeo de vaacuterios pequenos surfels na regiatildeo da interseccedilatildeo permite esta

correta renderizaccedilatildeo das ldquoarestas vivasrdquo Desta forma o problema das arestas

vivas eacute resolvido na modelagem (Figura 12) A vantagem de se resolver o caso

na modelagem eacute que natildeo eacute necessaacuterio fazer um tratamento especial na

renderizaccedilatildeo para que mostre esta aresta viva Diferente do tratamento feito

em Pauly (seccedilatildeo 431) que resolve esta questatildeo em tempo de renderizaccedilatildeo

Aleacutem disso o tratamento resolve alguns casos onde a Regra 2 poderia falhar

(veja em Validade da Regra 2-seccedilatildeo 44)

Figura 12 [2] -Agrave direita eacute mostrado o resultado do tratamento de interseccedilatildeo para o caso de Arestas Vivas do objeto agrave esquerda

43 Meacutetodo de Pauly

O meacutetodo aplica-se a objetos soacutelidos e natildeo soacutelidos Os modelos podem ser

obtidos a partir de diferentes entradas como nuvem de pontos irregulares ou por

meio de scanners 3D Cria um modelo hiacutebrido destes objetos usa o modelo por

pontos juntamente com a representaccedilatildeo impliacutecita Moving Least Squares - MLS

[18] Realiza operaccedilotildees booleanas com pontos e utiliza adicionalmente MLS

para alguns casos de classificaccedilatildeo de surfels e no tratamento de interseccedilatildeo A

seguir apresentamos as caracteriacutesticas do modelo por pontos deste meacutetodo e o

algoritmo que realiza as operaccedilotildees

Operaccedilotildees Booleanas com Pontos 40

431 Modelo em Pauly

O modelo eacute uma estrutura hiacutebrida de pontos com a representaccedilatildeo impliacutecita

Moving Least Squares - MLS [18] Esta estrutura eacute usada para fazer operaccedilotildees

booleanas e tambeacutem operaccedilotildees de free-form (natildeo abordadas nesta

dissertaccedilatildeo) Para operaccedilotildees booleanas a representaccedilatildeo MLS permite que a

curva de interseccedilatildeo entre os modelos seja reconstruiacuteda e surfels sejam

colocados nesta curva e em alguns casos de classificaccedilatildeo de surfels mostrados

na seccedilatildeo 432 Para este modelo natildeo existem restriccedilotildees quanto agrave forma do

objeto

Os surfels contecircm informaccedilotildees sobre sua posiccedilatildeo e sua normal Aleacutem

disso surfels podem conter informaccedilotildees adicionais como textura cor

propriedades de materiais

A distribuiccedilatildeo dos surfels eacute natildeo-uniforme e a amostragem eacute

aproximadamente adequada (Veja seccedilatildeo 44)

432 Algoritmo de Operaccedilotildees Booleanas

O algoritmo classifica surfels de um modelo como ldquodentrordquo ou ldquoforardquo de

outro modelo Antes de colocarmos como eacute feita esta classificaccedilatildeo devemos

acrescentar que Pauly estende esta classificaccedilatildeo para modelos que natildeo satildeo

soacutelidos Ou seja mesmo um modelo natildeo soacutelido divide o espaccedilo da cena (espaccedilo

em que se encontra o modelo) em dois sub-espaccedilos dentro ou fora do modelo

Pauly faz esta subdivisatildeo da seguinte forma

Como a superfiacutecie que determina o modelo eacute orientada (conteacutem vetores

normais agrave superfiacutecie que apontam para ldquoforardquo do modelo) Pauly considera que

um modelo natildeo soacutelido divide o espaccedilo em dois sub-espaccedilos um ldquoforardquo do

modelo (os vetores normais apontam para este sub-espaccedilo) e um que estaacute

ldquodentrordquo do modelo (os vetores normais apontam para direccedilatildeo oposta a este sub-

espaccedilo) Por exemplo um plano eacute representado como um conjunto de surfels

contidos num determinado espaccedilo geomeacutetrico plano π Cada surfel conteacutem um

vetor normal direcionado Este modelo divide entatildeo o espaccedilo em dois sub-

espaccedilos o sub-espaccedilo que eacute apontado por estes surfels (considerado ldquoforardquo do

modelo) e o sub-espaccedilo que estaacute na direccedilatildeo oposta (considerado ldquodentrordquo do

modelo) Desta forma ele aplica as classificaccedilotildees de ldquodentrordquo e ldquoforardquo de um

modelo tambeacutem a modelos natildeo soacutelidos A partir desta consideraccedilatildeo as

Operaccedilotildees Booleanas com Pontos 41

operaccedilotildees booleanas satildeo realizadas com os modelos natildeo soacutelidos da mesma

forma que com os modelos soacutelidos

Para determinar esta classificaccedilatildeo (dentro ou fora do modelo) Pauly utiliza

a Regra 2 Para pesquisa do surfel mais proacuteximo o meacutetodo usa a estrutura Kd-

tree [16] e tambeacutem o algoritmo ANN [16] No entanto o meacutetodo apresenta uma

restriccedilatildeo da Regra 2 ela soacute deve ser usada para classificaccedilotildees de pontos x se

a distacircncia x-p for maior que o espaccedilamento da amostragem local ηp em p

Este espaccedilamento da amostragem local ηp em p eacute um caacutelculo aproximado da

distacircncia meacutedia entre os surfels vizinhos a p Se x estaacute muito proacuteximo agrave

superfiacutecie a classificaccedilatildeo pode falhar Neste caso ele calcula o ponto exato de

S mais proacuteximo a x usando a projeccedilatildeo MLS (ldquoMoving Least Squaresrdquo)

Por questotildees de melhoria de desempenho utiliza-se o fato de que sendo

Ωp (x) a classificaccedilatildeo do ponto x em relaccedilatildeo agrave amostragem P tem-se que Ωp (x)

= Ωp (xrsquo) para todos os pontos de xrsquo que estatildeo dentro da esfera de centro x e

raio igual a x-p - ηp (onde p eacute o surfel mais proacuteximo e ηp eacute o espaccedilamento

local da amostragem em p acima citado) Ou seja sendo x um ponto qualquer p

o surfel mais proacuteximo a x ηp eacute o espaccedilamento local da amostragem em p se

desenharmos uma esfera com centro x e raio igual a x-p - ηp temos que

todos os pontos xrsquo que estatildeo dentro da esfera teratildeo a mesma classificaccedilatildeo de x

Desta forma o nuacutemero de vezes que a classificaccedilatildeo eacute feita (pesquisando-se o

surfel mais proacuteximo ao ponto e usando a Regra 2) diminui em ateacute 90 Assim

em geral a classificaccedilatildeo de um surfel eacute obtida a partir do seu surfel vizinho

Dados

S1 a superfiacutecie MLS de contorno que define o modelo A

S2 a superfiacutecie MLS de contorno que define o modelo B

P1 o conjunto de surfels que representa a superfiacutecie S1

P2 o conjunto de surfels que representa a superfiacutecie S2

Ωp1 (x) a classificaccedilatildeo do ponto p em relaccedilatildeo a uma amostragem P1

Q1 o subconjunto de P1 que vai compor o resultado

Ωp2 (x) a classificaccedilatildeo do ponto p em relaccedilatildeo a uma amostragem P2

Q2 o subconjunto de P2 que vai compor o resultado

Os conjuntos Q1 e Q2 satildeo obtidos por meio da Tabela 1 mostrada abaixo

Operaccedilotildees Booleanas com Pontos 42

Tabela 1 Classificaccedilatildeo para operaccedilotildees booleanas

Para o tratamento de interseccedilatildeo neste meacutetodo satildeo computados pontos

que caem exatamente na curva de interseccedilatildeo e estes satildeo acrescentados ao

modelo resultado Estes pontos satildeo determinados de forma que a densidade da

amostragem vai crescendo agrave medida que os surfels se aproximam da curva de

interseccedilatildeo e convergem para este ponto de interseccedilatildeo como mostra a Figura

13

(a) (b) (c)

Figura 13 - Os novos surfels satildeo colocados exatamente na curva de interseccedilatildeo

e convergem para o ponto de interseccedilatildeo

A Figura 14 mostra o processo de encontrar os surfels que caem nesta

curva de interseccedilatildeo Inicialmente satildeo encontrados todos os pontos de Q1 e Q2

que estatildeo proacuteximos agrave curva de interseccedilatildeo por meio da funccedilatildeo de distacircncia do

operador de projeccedilatildeo MLS Em seguida procura-se todos os pares mais

proacuteximos (q1 є Q1 q2 є Q2 ) e computa-se o ponto q na curva de interseccedilatildeo da

seguinte forma (veja a Figura 14)Seja r o ponto na linha de interseccedilatildeo dos dois

planos tangentes em q1 e q2 e que estaacute mais proacuteximo a estes dois pontos isto eacute

que minimiza a distacircncia ||r-q1|| + ||r-q2|| r eacute a primeira aproximaccedilatildeo de q e agora

pode ser projetado sobre S1 e S2 para obter dois novos pontos de partida q1rsquo e q2

rsquo

para a iteraccedilatildeo Este procedimento pode ser repetido iterativamente ateacute que os

pontos q1 e q2 convirjam ao ponto q na curva de interseccedilatildeo Normalmente este

processo requer menos de trecircs iteraccedilotildees

Operaccedilotildees Booleanas com Pontos 43

(a) (b)

(c)

Figura 14 (a) Suponhamos a reta que eacute a interseccedilatildeo do plano tangente a S1 em q1 e o

plano tangente a S2 em q2 O ponto r eacute o ponto desta reta que estaacute mais proacuteximo a q1 e

q2 (b) r eacute projetado sobre S1 e S2 obtendo-se q1acute e q2acute dois novos pontos de partida

para nova iteraccedilatildeo (c) A nova iteraccedilatildeo gera r que eacute uma aproximaccedilatildeo melhor de q

Pauly faz o tratamento de arestas vivas em tempo de renderizaccedilatildeo Ele

faz uma alteraccedilatildeo no renderizador Marca os surfels de interseccedilatildeo e ao

renderizaacute-los satildeo cortados para gerar uma aresta viva

44 Validade da Regra 2

Os dois meacutetodos analisados nesta dissertaccedilatildeo utilizam a seguinte regra

para a classificaccedilatildeo de um surfel

Regra 2 dado um volume V determinado por uma superfiacutecie de contorno

S uma amostragem P da superfiacutecie S um ponto x qualquer um ponto p є P que

eacute a amostra mais proacutexima a x um vetor ny normal a S em p e orientado para

fora de S temos que (x ndash p) np gt 0 x notinV

Em [16] eacute colocado que esta regra eacute tirada da seguinte propriedade da

geometria diferencial (aqui chamada Propriedade 1)

Propriedade 1 Dado um volume V determinado por uma superfiacutecie de

contorno S contiacutenua e duplamente diferenciaacutevel um ponto x qualquer um ponto

Operaccedilotildees Booleanas com Pontos 44

y є S que eacute o ponto de S mais proacuteximo a x um vetor ny normal a S em y e

orientado para fora de S temos que (x ndash y) ny gt 0 x notinV

A Figura 15 ilustra esta propriedade

Figura 15 Para verificar se o ponto x estaacute fora de um contorno C encontra-se o ponto y

de C Se o produto interno entre a normal em y e o vetor que liga y a x for maior que

zero entatildeo x estaacute fora de C senatildeo estaacute dentro de C

Pauly assume que tendo uma amostragem P da superfiacutecie S podemos

usar a Propriedade 1 substituindo y por p o surfel mais proacuteximo ao ponto x (x ndash

p) np gt 0 x notinV (Regra 2) Esta amostragem P em seu trabalho eacute

(aproximadamente) uma ldquoamostragem adequadardquo Tambeacutem seu tratamento de

interseccedilatildeo cria uma aproximaccedilatildeo dela (seccedilatildeo 43) Empiricamente a

ldquodiscretizaccedilatildeo da propriedaderdquo eacute vaacutelida a partir desta suposiccedilatildeo Mas isso natildeo foi

demonstrado teoricamente em seu trabalho

Pauly coloca em [16] que natildeo existe ainda uma teoria matemaacutetica rigorosa

de amostragem anaacuteloga a teoria de Fourier para superfiacutecies discretas

A melhor aproximaccedilatildeo teoacuterica para esta aacuterea eacute o uso do Eixo Medial que

foi colocado em [10] Vamos descrever este trabalho brevemente nesta seccedilatildeo

Este trabalho apresenta um algoritmo de reconstruccedilatildeo de superfiacutecie que parte de

uma amostragem adequada (abaixo definida) de pontos e obteacutem uma malha

que eacute topologicamente equivalente agrave superfiacutecie do objeto e agrave medida que a

densidade da amostragem cresce a saiacuteda converge para esta superfiacutecie

Para definir amostragem adequada o trabalho parte do conceito de Eixo

Medial

Operaccedilotildees Booleanas com Pontos 45

ldquoEixo Medialrdquo de uma superfiacutecie 2D posicionada no R3 eacute o conjunto

(fechado) de pontos pi para os quais buscando-se o ponto da superfiacutecie que

estaacute mais proacuteximo a pi mais de um ponto pertencentes a esta superfiacutecie satildeo

encontrados A Figura 16 abaixo ilustra o Eixo Medial em 2D

Figura 16 [10] As curvas de cor mais clara satildeo o Eixo Medial da curva em preto

Em duas dimensotildees os veacutertices de Voronoi de uma amostragem densa

aproximam o ldquoEixo Medialrdquo da amostragem (mas esta propriedade natildeo se

estende a 3D) A Figura 17 mostra o Eixo Medial em 3D

Figura 17 [10] Em 3D geralmente o Eixo Medial eacute uma superfiacutecie 2D (em cor mais

clara) Aqui o quadrado eacute o Eixo Medial da superfiacutecie transparente que o contorna

Podemos definir agora a amostragem adequada da seguinte forma

Supondo uma superfiacutecie suave que quer dizer uma 2-manifold duplamente

diferenciaacutevel posicionada no R3 uma ldquoamostragem adequadardquo desta superfiacutecie eacute

aquela na qual a densidade da amostragem eacute (pelo menos) inversamente

proporcional agrave distacircncia ao ldquoEixo Medialrdquo A Figura 18 mostra uma amostragem

adequada

Operaccedilotildees Booleanas com Pontos 46

Figura 18 [10] A figura mostra o diagrama de Voronoi de uma amostragem de pontos S

Da mesma forma que o a amostragem aproxima a curva os veacutertices de Voronoi

aproximam o Eixo Medial

Na praacutetica na reconstruccedilatildeo da superfiacutecie uma aproximaccedilatildeo deste ldquoEixo

Medialrdquo eacute computada (devido agrave dificuldade de computaacute-lo exatamente e em

alguns casos ateacute impossibilidade)

Melhorias Propostas 47

5 Melhorias Propostas

No capiacutetulo 4 apresentamos dois meacutetodos que realizam operaccedilotildees

booleanas em modelos por pontos o meacutetodo de Adams e Dutreacute [2] e o meacutetodo

de Pauly[3] Para esta dissertaccedilatildeo usamos o meacutetodo de Adams e Dutreacute [2] e

propomos as seguintes melhorias

- Alteramos o momento em que eacute feita a classificaccedilatildeo da octree Fazemos

esta classificaccedilatildeo durante a sua criaccedilatildeo Os noacutes filhos de um noacute pai P qualquer

satildeo classificados logo apoacutes a criaccedilatildeo de todos estes filhos de P

independentemente do restante da octree ter sido criada Isso pode ser feito

porque a octree eacute construiacuteda na ordem raiz-esquerda-direita (preorder

traversal) e portanto apoacutes todos os filhos de um noacute pai serem criados a parte

necessaacuteria da octree para a classificaccedilatildeo destes filhos jaacute estaacute criada

- A classificaccedilatildeo da octree eacute otimizada classificando-se os cantos dos seus

noacutes como dentro ou fora do modelo Na classificaccedilatildeo de um noacute n1 a partir de seu

vizinho n2 se os cantos que satildeo comuns a n1 e n2 tiverem a mesma

classificaccedilatildeo esta seraacute dada ao noacute Assim diminuiacutemos o nuacutemero de pesquisas

pelo surfel mais proacuteximo que eacute a parte criacutetica da classificaccedilatildeo dos noacutes da octree

em termos de tempo de processamento

- Acrescentamos um valor miacutenimo (maior que zero) para o nuacutemero de

surfels contidos em um noacute que eacute uma das condiccedilotildees de parada na criaccedilatildeo da

octree Verificamos que desta forma diminui-se a chance de erro na classificaccedilatildeo

de partes criacuteticas como ldquoarestas vivasrdquo

Uma comparaccedilatildeo entre a nossa implementaccedilatildeo e a de Pauly tambeacutem seraacute

feita no capiacutetulo 6

51 Descriccedilatildeo do algoritmo

O algoritmo implementado para esta dissertaccedilatildeo baseado no meacutetodo de

Adams e Dutreacute [2] pode ser dividido nas seguintes partes Criaccedilatildeo e

classificaccedilatildeo de uma octree para cada modelo Teste DentroFora Criaccedilatildeo do

modelo resultado Natildeo foi implementado tratamento especial algum de

interseccedilatildeo para o nosso plugin As proacuteximas seccedilotildees apresentam estas partes

Melhorias Propostas 48

511 Criaccedilatildeo e classificaccedilatildeo de uma octree para cada modelo

As ideacuteias do algoritmo satildeo aqui ilustradas em 2D mas a extensatildeo delas

para 3D eacute feita facilmente

Para cada modelo a octree eacute criada e classificada da seguinte forma

Figura 19-Quadtree classificada Os noacutes mais escuros estatildeo fora do modelo os mais claros dentro e os em tom intermediaacuterio satildeo noacutes de contorno

Gera-se uma ldquocaixa envolventerdquo do modelo contendo todos os surfels e

cria-se o noacute raiz da octree que corresponde a esta ldquocaixa envolventerdquo Este noacute

raiz eacute subdividido em oito filhos e seus surfels satildeo distribuiacutedos entre eles Ao

inveacutes de testarmos os valores de xy e z para cada surfel a fim de determinar

para qual filho ele iraacute utilizamos listas auxiliares Primeiro os surfels satildeo

subdivididos em dois grupos pelos valores de x e armazenados em uma lista

auxiliar Em seguida cada uma das listas eacute subdividida pelo valor de y e as

quatro listas obtidas seratildeo subdivididas pelo valor de z Ao final teremos 8 listas

de surfels cada uma delas pertencente a um filho

Cada noacute seraacute entatildeo novamente subdividido enquanto contiver um nuacutemero

de surfels gt nmin (valor preacute-definido) ou enquanto a profundidade da aacutervore lt pmax

(valor preacute-definido) Na figura 19 pmax = 3 e nmin = 3

Melhorias Propostas 49

Figura 20-O noacute cheio eacute dividido em trecircs partes agrave esquerda a regiatildeo estaacute dentro do modelo agrave direita estaacute fora e entre as duas linhas que dividem o noacute estaacute a regiatildeo que conteacutem os surfels

Os noacutes cheios recebem um tratamento especial Eles satildeo subdivididos em

trecircs partes da seguinte forma uma que estaacute fora do modelo outra que estaacute

dentro e uma que conteacutem os surfels Esta subdivisatildeo eacute feita por meio da criaccedilatildeo

de dois planos paralelos que dividem o noacute Para determinar estes planos

calcula-se o vetor nm igual agrave meacutedia das normais dos surfels do noacute nm = sum ns

sum ns onde ns eacute a normal de cada surfel do noacute Em seguida encontra-se o

surfel com maior produto interno entre a sua normal e a normal meacutedia

d1=Max(nm ٠ ns) Este surfel juntamente com a normal meacutedia define um dos

planos Encontra-se tambeacutem o surfel com menor produto interno entre a sua

normal e a normal meacutedia d2=Min (nm ٠ ns) Este surfel juntamente com a normal

meacutedia define o outro plano (Figura 20) Se o noacute conteacutem surfels de superfiacutecies de

orientaccedilotildees diferentes ele natildeo seraacute subdividido ou seja os planos coincidiratildeo

com os planos que delimitam o proacuteprio noacute Este teste foi implementado da

seguinte forma escolhe-se um surfel qualquer do noacute Calcula-se o produto

interno entre a normal deste surfel e as outras normais dos outros surfels deste

noacute Se algum produto interno for menor que zero este noacute natildeo seraacute subdividido

Apoacutes a etapa de subdivisatildeo classificam-se os oito cantos deste noacute como

dentro ou fora do modelo por meio da classificaccedilatildeo de um ponto que

descreveremos na sub-seccedilatildeo 5111

Melhorias Propostas 50

a b

c d

Figura 21-O noacute a eacute classificado pelo noacute c o noacute d tambeacutem eacute classificado pelo noacute c a classificaccedilatildeo do noacute a eacute propagada para o noacute b

Jaacute os noacutes vazios da octree seratildeo classificados como ldquodentrordquo ou ldquoforardquo do

modelo da seguinte forma cada noacute folha vazio eacute classificado a partir de um de

seus irmatildeos vizinhos adjacentes Se ele possuir um vizinho adjacente cheio ele

seraacute classificado por este vizinho se natildeo possuir os vizinhos adjacentes seratildeo

classificados primeiro e ele teraacute esta mesma classificaccedilatildeo (Figura 21) Como tem

que existir sempre pelo menos um noacute cheio entre os filhos de um noacute pai entatildeo

sempre esta classificaccedilatildeo poderaacute ser feita Com a classificaccedilatildeo de todos os

filhos tem-se tambeacutem a classificaccedilatildeo dos cantos do noacute pai

Mf03c003fmx a b

Figura 22-Os cantos a e b do noacute cheio possuem a mesma classificaccedilatildeo fora do modelo Esta classificaccedilatildeo foi dada ao noacute vazio adjacente

Melhorias Propostas 51

Para classificar um noacute vazio por meio de um noacute cheio verificam-se os

cantos comuns destes dois noacutes se todos os cantos tiverem a mesma

classificaccedilatildeo esta seraacute dada ao noacute vazio (Figura 22) Se houver classificaccedilotildees

diferentes escolhe-se o surfel do noacute cheio mais proacuteximo ao noacute vazio faz-se o

produto interno entre a normal deste surfel e o vetor que liga o centro do noacute

cheio ao centro do noacute vazio (ou o vetor que liga o surfel ao centro do noacute vazio)

Se o produto interno for maior que zero o noacute eacute classificado como ldquoforardquo senatildeo eacute

classificado como ldquodentrordquo Para encontrar o surfel (pertencente a um noacute cheio)

mais proacuteximo ao noacute vazio existem dois casos

- O noacute cheio eacute folha percorre-se toda a lista de surfels e escolhe o surfel

mais proacuteximo da fronteira entre o noacute cheio e o vazio

- O noacute cheio natildeo eacute um noacute folha percorrem-se os filhos do noacute cheio ou seja

esta pesquisa eacute feita descendo na octree a partir do noacute cheio procurando o

surfel mais proacuteximo agrave fronteira do pai com o noacute vazio a ser classificado

Classificando o centro do noacute vazio todo o noacute deve ter a mesma

classificaccedilatildeo pois este noacute natildeo conteacutem surfels Para encontrar o surfel do noacute

vazio mais proacuteximo da fronteira entre o noacute cheio e o vazio basta testar o valor da

coordenada se a fronteira eacute o lado direito do noacute cheio escolhe-se o surfel com

maior coordenada lsquoxrsquo se eacute o lado esquerdo escolhe-se o surfel com menor lsquoxrsquo

se lado superior surfel com maior lsquoyrsquo etc A seguir apresentamos a classificaccedilatildeo

de um ponto qualquer pertencente a um noacute cheio

Figura 23- Quadtree classificada

Melhorias Propostas 52

5111 Classificaccedilatildeo de um ponto de um noacute cheio

Figura 24 [2] A normal n eacute a normal meacutedia e os surfels s1 e s2 juntamente com a normal

n definem as retas que dividem o noacute O ponto a estaacute fora do modelo e o ponto b estaacute

dentro do modelo

Para um ponto localizado dentro do noacute faz-se o seguinte teste se o noacute foi

dividido testa-se de acordo com a divisatildeo do noacute se o ponto estaacute na parte do noacute

que estaacute dentro do modelo ele eacute classificado como ldquodentrordquo se o ponto estaacute na

parte que estaacute fora do modelo ele eacute classificado como ldquoforardquo (Figura 24) se o

ponto estaacute na parte que conteacutem os surfels encontra-se o surfel s pertencente ao

noacute mais proacuteximo do ponto e o classifica de acordo com s seja ns a normal em s

cs a coordenada de s cp a coordenada do ponto Se (cp - cs )٠ ns gt 0 o ponto

seraacute classificado como ldquoforardquo Senatildeo seraacute classificado como ldquodentrordquo

Se o noacute natildeo foi dividido em planos esta classificaccedilatildeo a partir do surfel

mais proacuteximo seraacute sempre feita

512 Teste DentroFora

Melhorias Propostas 53

Figura 25-Duas circunferecircncias e suas quadtrees correspondentes

O Teste DentroFora classifica os surfels de um modelo como dentro ou

fora de outro modelo ou na sua interseccedilatildeo Este teste foi aqui implementado

exatamente como foi proposto em Adams e Dutreacute [2] exceto que natildeo foi

implementado o meacutetodo TINN - Triangle Inequality Nearest Neighbour [19]

Cada octree eacute percorrida verificando-se se os seus noacutes ou surfels estatildeo dentro

fora ou no contorno do outro modelo (Figura 25) Sejam A e B duas octrees e

queremos classificar a octree A As duas octrees (AB) satildeo percorridas partindo

da raiz

Para cada noacute de A existem quatro casos (Figura 26) Para testar estas

situaccedilotildees os boxes dos noacutes satildeo aumentados de rmax o raio do maior surfel do

modelo Isto eacute feito para compensar o fato de que o surfel natildeo eacute apenas um

ponto mas sim considerado como um disco

Os quatro casos satildeo

Se o noacute de A natildeo intersecta B entatildeo todos os surfels deste noacute satildeo

classificados como fora

Se o noacute de A intersecta apenas noacutes de B que estatildeo fora do modelo

todos os surfels deste noacute satildeo fora

Se o noacute de A intersecta apenas noacutes de B que estatildeo dentro do modelo

todos os surfels deste noacute satildeo dentro

Melhorias Propostas 54

Se o noacute de A intersecta noacutes de B que estatildeo dentro e tambeacutem noacutes de B

que estatildeo fora testa-se se este noacute de A eacute ou natildeo folha Se natildeo for folha

percorre-se os filhos deste noacute de A ateacute encontrar um noacute folha cheio que

intersecta B Para cada surfel sa deste noacute folha de A encontra-se o surfel de B

mais proacuteximo e classifica-se a coordenada de sa da forma apresentada na seccedilatildeo

5111 Seja sb o surfel usado na classificaccedilatildeo de sa Se os discos de sb e sa

se intersectam sa eacute classificado como ldquointerseccedilatildeordquo

(a) (b)

(c) (d)

Figura 26- a modelos natildeo se intersectam b modelo intersecta noacutes fora c modelo intersecta apenas noacutes dentro d modelo intersecta noacutes dentro e noacutes fora

513 Criaccedilatildeo do modelo resultado

Um novo modelo eacute criado com os seguintes surfels (de acordo com a

operaccedilatildeo booleana escolhida pelo usuaacuterio - veja Regra 1 da seccedilatildeo 41)

Uniatildeo - surfels de A que estatildeo fora de B + surfels de B que estatildeo fora de A

Melhorias Propostas 55

Interseccedilatildeo - surfels de A que estatildeo dentro de B + surfels de B que estatildeo

dentro de A

Diferenccedila A-B - surfels de A que estatildeo fora de B + surfels de B que estatildeo

dentro de A (com orientaccedilatildeo invertida)

Como natildeo foi implementado tratamento especial algum de interseccedilatildeo para

o nosso plugin os surfels que se intersectam satildeo mantidos no modelo resultado

final sem modificaccedilotildees

Descrito o algoritmo vejamos a seguir a sua implementaccedilatildeo

52 Implementaccedilatildeo

Este algoritmo foi implementado na forma de um plugin para o software

PointShop 3D [11] Este plugin foi desenvolvido na linguagem C e no sistema

operacional Windows

A escolha deste tipo de implementaccedilatildeo permitiu-nos usar o software

PointShop para os testes do algoritmo Estes testes foram feitos com os modelos

disponibilizados para o PointShop [11] Nesta seccedilatildeo apresentaremos o software

PointShop e as principais estruturas de dados usadas em nosso plugin

O Pointshop eacute um software aberto com seu coacutedigo disponiacutevel e preparado

para trabalhar com plugins Eacute um software de ediccedilatildeo de modelos 3D por pontos

Ele permite aleacutem de visualizar o modelo alterar as suas caracteriacutesticas como

cor brilho e fazer mapeamento de textura iluminaccedilatildeo filtragem (Figura 27)

Melhorias Propostas 56

Figura 27-Software PointShop 3D com dois modelos carregados na sua cena

Aleacutem disso pode-se criar uma cena com vaacuterios modelos e visualizaacute-los de

qualquer ponto de vista Implementa o virtual trackball para rotacionaacute-los e

transladaacute-los Usa uma iluminaccedilatildeo simples direcional A sua arquitetura eacute

extensiacutevel permite que o usuaacuterio adicione seus proacuteprios componentes ao

sistema Possui trecircs tipos de componentes

ldquoToolsrdquo fornece funcionalidades para ediccedilatildeo interativa de superfiacutecie Satildeo

disponibilizados na ldquotoolbarrdquo

Plugins fornece funcionalidades para processar em um soacute passo

modelos ou partes deles selecionadas Satildeo disponibilizados no menu ldquoPluginsrdquo

Renderes fornece funcionalidades de display para os modelos

Para esta dissertaccedilatildeo foi escolhida a construccedilatildeo do componente Plugin

por adequar-se agrave nossa proposta e ser a mais simples de ser construiacuteda O

PointShop [11] jaacute conteacutem uma tool que executa operaccedilotildees booleanas e

deformaccedilatildeo free-form sobre os modelos carregados na cena usando o meacutetodo

de Pauly [3] apresentado no capiacutetulo 4 O nosso plugin Operaccedilotildees Booleanas

implementa o algoritmo descrito na seccedilatildeo anterior baseado na proposta de

Melhorias Propostas 57

Adams e Dutreacute [2] Uma comparaccedilatildeo entre o nosso plugin e a tool de Pauly [3] eacute

feita no capiacutetulo 6

Figura 28-Menu do PointShop com o plugin e as opccedilotildees para operaccedilotildees booleanas

Para se executar o plugin o usuaacuterio precisa carregar dois modelos na

cena do PointShop acionar o plugin informando a operaccedilatildeo que seraacute executada

O plugin executaraacute o algoritmo acima proposto e carregaraacute o resultado na cena

do Pointshop retirando os modelos anteriores

521 Estruturas de Dados

Como vimos o software PointShop [11] trabalha com modelos por pontos

Um modelo deste software descrito na seccedilatildeo 42 conteacutem todas as informaccedilotildees

que o algoritmo proposto em Bart [2] necessita Abaixo relacionamos as

Melhorias Propostas 58

principais estruturas de dados do PointShop usadas no plugin e as principais

estruturas de dados do nosso plugin

As principais classes do PointShop usadas no plugin satildeo

Classe Scene

Classe Objects

Classe SurfelColections

Classe Surfel

Classe StatusBar

Classe Transformer

A hierarquia de dados eacute a seguinte a Scene conteacutem vaacuterios Objects os

quais conteacutem SurfelColections Cada SurfelColections conteacutem Surfels que

suportam uma ou mais propriedades tais como cor difusa cor especular

Classe Scene Classe que representa uma cena que conteacutem modelos

Classe Object Um modelo eacute representado pela classe Object que

conteacutem uma SurfelCollection e as matrizes de transformaccedilatildeo para rotaccedilatildeo

escala e translaccedilatildeo Cada Object eacute identificado pelo seu nome que eacute uacutenico na

Scene O meacutetodo getUniqueName retorna um nome uacutenico Cada Object tem sua

proacutepria matriz de transformaccedilatildeo que pode ser modificada com setRotation

rotate setPosition translate setScale e scale Objects podem ser copiados com

copy Objects consiste em um conjunto de surfels os quais podem ser

recuperados pela getSurfelCollection O Object pode ser ativado com

setActiveObject e recuperado com getActiveObject

Objects podem ser adicionados ou removidos com addObject e

removeObject Os Objects podem ser obtidos pela getFirstObject e

getNextObject

Classe SurfelCollection representa o conjunto de surfels de um modelo

Cada surfelcollection consiste em um conjunto de surfels (SurfelInterface) de

tamanho obtido por getNofSurfels Os surfels podem ser recuperados com

getFirstSurfel getCurrentSurfel e getNextSurfel

A SurfelCollection conteacutem um PropertyDescriptor e uma SurfelList

A SurfelList eacute uma lista duplamente encadeada de surfels Possui os

atributos firstSurfel lastSurfel currentSurfel que satildeo ponteiros para uma

SurfelInterface nSurfels que eacute o nuacutemero de Surfels

A SurfelInterface define a API para os surfels que satildeo os menores

elementos que compotildeem um Object Podem ser considerados como pontos com

uma normal que define a orientaccedilatildeo do ciacuterculo (ou elipse) que seraacute desenhado

Melhorias Propostas 59

tatildeo logo o surfel seja renderizado Tem como atributos dois ponteiros (next e

prev) para SurfelInterface

PropertyDescriptor consiste em ateacute 32 valores descrevendo quais as

propriedades a SurfelInterface suporta

Classe Surfel classe que representa o surfel

Classe StatusBar classe que imprime mensagens na tela Os plugins

podem mandar mensagens para o usuaacuterio pela StatusBar

Mensagens texto podem ser impressas com showMessage O progresso

de uma operaccedilatildeo pode ser indicado com setProgress ou resetProgress

Classe Transformer representa a transformaccedilatildeo entre sistemas de

coordenadas Esta classe fornece meacutetodos para transformar pontos e vetores

entre os diferentes sistemas de coordenadas do Pointshop

A seguir apresentamos as principais estruturas de dados do plugin

Operaccedilotildees Booleanas

As principais estruturas de dados do plugin satildeo boundingbox tree no

lista_surfel surfel

Boundingbox conteacutem dois pontos 3D que definem uma caixa que conteacutem

o modelo um ponto com menores coordenadas xy e z e outro ponto com

maiores xyz

Tree representa a octree do modelo Cada registro conteacutem um ponteiro

para um noacute e oito ponteiros para as 8 octrees filhas

No representa um noacute da octree Conteacutem os seguintes dados

- localizaccedilatildeo do noacute que eacute o canto inferior esquerdo do noacute

- lista_surfel (preenchida apenas para noacutes folha cheios)

- quantidade de surfels do noacute

- classificaccedilatildeo do noacute como dentro fora ou contorno

- classificaccedilatildeo do noacute em relaccedilatildeo a outro modelo

- indica se o noacute eacute folha ou natildeo

- vetor que eacute a meacutedia das normais dos surfels do noacute

- ponto que eacute a meacutedia das localizaccedilotildees dos surfels do noacute

- surfel que tem (entre todos os surfels do noacute) o maior produto interno

entre a sua normal e a normal meacutedia

- surfel que tem (entre todos os surfels do noacute) o menor produto interno

entre a sua normal e a normal meacutedia

- produto interno maacuteximo e miacutenimo entre as normais dos surfels do noacute e a

normal meacutedia deste noacute

Melhorias Propostas 60

- indica se o noacute conteacutem surfels com normais em sentido oposto (produto

interno entre elas eacute menor que zero)

- classificaccedilatildeo dos oito cantos do noacute

lista_surfels lista em que cada registro conteacutem um apontador para um

surfel e um apontador para o proacuteximo registro

surfel representa o surfel da octree Conteacutem a classificaccedilatildeo em relaccedilatildeo a

outro modelo e um ponteiro para o surfel do Poinshop

Resultados 61

6 Resultados

Neste capiacutetulo apresentamos os testes realizados com o plugin para o

PointShop implementado para esta dissertaccedilatildeo a comparaccedilatildeo deste plugin com

o plugin de Pauly [3] e a comparaccedilatildeo entre o meacutetodo de Adams e Dutreacute [2] e o

meacutetodo de Pauly [3]

61 Testes

Os testes foram feitos em um PC x86 Family 6 261600 KB de RAM sem

placa graacutefica sistema operacional Windows 2000 O plugin foi implementado na

linguagem C

Os modelos usados para os testes satildeo modelos disponibilizados no

PointShop [11] Vale lembrar que o meacutetodo implementado em nosso plugin eacute

restrito a modelos soacutelidos e portanto foram usados apenas estes modelos

soacutelidos para os testes

O modelo na Figura 29 que eacute um dos modelos disponibilizados no

PointShop [11] foi usado para mostrar o resultado das operaccedilotildees realizadas

pelo plugin implementado nesta dissertaccedilatildeo O modelo Igea eacute um modelo soacutelido

que conteacutem 134345 surfels

Resultados 62

Figura 29-Modelo do PointShop Igea

Para realizar as operaccedilotildees este modelo foi carregado na cena do

PointShop duas vezes e um deles colorido de vermelho As Figuras 30 31 32

mostram o resultado da operaccedilatildeo de uniatildeo interseccedilatildeo e diferenccedila

respectivamente Os nuacutemeros de surfels dos modelos resultantes satildeo mostrados

na Tabela 2

Resultados 63

Figura 30-Resultado da uniatildeo de duas Igeas

Figura 31-Resultado da interseccedilatildeo de duas Igeas

Resultados 64

Figura 32-Resultado da diferenccedila entre duas Igeas

Tabela 2-Nuacutemero de surfels dos modelos resultantes

Observamos que o nuacutemero de surfels dos modelos resultantes estaacute

coerente com as figuras dos seus modelos

Para avaliar o tempo de processamento das operaccedilotildees foram realizados

vaacuterios testes com o objetivo de obter uma meacutedia dos tempos de realizaccedilatildeo de

cada operaccedilatildeo Tambeacutem foram armazenados os tempos da criaccedilatildeo das duas

octrees e da classificaccedilatildeo de todos os surfels dos dois objetos (como dentro ou

fora do outro modelo) Estes testes foram feitos usando o modelo Igea A meacutedia

dos tempos de processamento foi calculada e os resultados satildeo mostrados na

Tabela 3 Verificamos que o maior tempo gasto eacute para criaccedilatildeo das octrees

Verificamos tambeacutem que este resultado apresentado eacute similar ao resultado

verificado empiricamente com o plugin de Pauly [3] Os tempos gastos para

realizar as operaccedilotildees satildeo similares e o maior tempo gasto no plugin de Pauly

tambeacutem eacute para inicializaccedilatildeo de suas estruturas de dados que incluem a kd-tree

Operaccedilatildeo Nuacutemero de surfels do modelo resultado

Uniatildeo 189715

Interseccedilatildeo 72225

Diferenccedila 134552

Resultados 65

Operaccedilatildeo Criaccedilatildeo das

Octrees (seg)

Classificaccedilatildeo

(seg)

Criaccedilatildeo do

resultado (seg)

Total (seg)

Uniatildeo 39375 1324 18925 7154

Interseccedilatildeo 38585 1585 09547 63982

Diferenccedila 399875 1504 1729 729475

Tabela 3- Meacutedia dos tempos de processamento para as operaccedilotildees com duas Igeas

Com o objetivo de expor melhor os resultados deste trabalho

apresentamos abaixo mais um teste das operaccedilotildees booleanas usando o nosso

plugin Os modelos usados para este segundo teste satildeo o Max Planck e o Male

ambos modelos soacutelidos disponibilizados no PointShop Estes modelos satildeo

mostrados nas figura 33 e 34

O primeiro Max Planck conteacutem 52809 surfels

Figura 33-Modelo do PointShop MaxPlanck

O segundo modelo abaixo Male conteacutem 148138 surfels

Resultados 66

Figura 34-Modelo do PointShop Male

As Figuras 353637 mostram o resultado da operaccedilatildeo de uniatildeo interseccedilatildeo

e diferenccedila respectivamente usando os dois modelos acima Podemos observar

pela figura 35 que o resultado da operaccedilatildeo de diferenccedila neste caso gerou um

modelo resultado com trecircs partes desconexas Os nuacutemeros de surfels de cada

modelo resultado satildeo mostrados na Tabela 5

Figura 35- Resultado da Uniatildeo do modelo Male com MaxPlanck

Resultados 67

Figura 36-Resultado da interseccedilatildeo do modelo Male com o MaxPlanck

Figura 37-Resultado da diferenccedila do modelo Male do modelo MaxPlanck

As meacutedias de tempos de processamento foram calculadas da mesma

forma que o primeiro teste com o modelo Igea acima apresentado Os

resultados satildeo mostrados na Tabela 4 Podemos observar que este teste

Resultados 68

apresenta tempos um pouco menores que o teste com o modelo Igea Isto se

deve ao fato de que o modelo MaxPlanck ser significativamente menor que o

modelo Igea MaxPlanck possui 52809 surfels e Igea conteacutem 134345 surfels

Operaccedilatildeo Criaccedilatildeo das

Octrees (seg)

Classificaccedilatildeo

(seg)

Criaccedilatildeo do

resultado (seg)

Total

(seg)

Uniatildeo 3012 1254 102 5285

Interseccedilatildeo 2985 0901 0861 4747

Diferenccedila 2965 0911 0791 4667

Tabela 4-Tempo de processamento das operaccedilotildees com os modelos MaxPlanck e Male

Operaccedilatildeo Nuacutemero de surfels do resultado

Uniatildeo 126532

Interseccedilatildeo 88414

Diferenccedila 77635

Tabela 5-Nuacutemero de surfels dos modelos resultados das operaccedilotildees com os modelos MaxPlanck e Male

Em seguida apresentaremos uma comparaccedilatildeo entre o nosso plugin e o

plugin de Pauly[3] e tambeacutem uma comparaccedilatildeo entre o meacutetodo de Adams e Dutreacute

[2] e o meacutetodo de Pauly [3]

62 Comparaccedilatildeo entre os dois meacutetodos que realizam operaccedilotildees booleanas

A comparaccedilatildeo entre os meacutetodos de Pauly[3] e de Adams e Dutreacute foi feita

em termos de tempo de processamento e em termos conceituais Em termos de

tempo de processamento comparamos o plugin de Pauly[3] com o nosso plugin

Em termos de tempo de processamento verifica-se empiricamente que os

dois meacutetodos apresentam tempos bastante similares Entretanto o tempo de

processamento do algoritmo aqui implementado ainda pode ser melhorado com

Resultados 69

o uso do meacutetodo TINN [19] que foi proposto em Adams[2] - para otimizar a

pesquisa do surfel mais proacuteximo a um ponto que estaacute localizado na regiatildeo de um

noacute que conteacutem surfels - veja seccedilatildeo 42 O uso deste meacutetodo natildeo foi

implementado para este trabalho e a sua implementaccedilatildeo melhoraria o tempo de

resposta do algoritmo Aleacutem disso o trabalho de Sara F Frisken [12] citado no

capiacutetulo 2 apresenta uma otimizaccedilatildeo no uso de octrees que pode ser

incorporada no algoritmo implementado neste trabalho

Em termos conceituais vamos fazer a comparaccedilatildeo do uso do que

chamamos aqui de Regra 2 do tratamento de interseccedilatildeo e do tratamento de

ldquoarestas vivasrdquo

Como vimos na seccedilatildeo 41 tanto o algoritmo implementado nesta

dissertaccedilatildeo baseado no trabalho de Adams e Dutreacute como o meacutetodo de Pauly

[3] parte do que chamamos aqui de Regra 2 para realizar operaccedilotildees booleanas

com pontos Mas cada um destes meacutetodos daacute um tratamento diferente para o

uso desta regra

O meacutetodo de Pauly usa a Regra 2 para classificaccedilatildeo de cada ponto ou de

cada surfel Para classificar um surfel de B sb como dentro ou fora de A eacute

encontrado o surfel de A sa mais proacuteximo a sb e sb eacute classificado a partir de sa

Para encontrar sa Pauly utiliza uma kd-tree Como esta pesquisa para encontrar

sa eacute cara (mesmo usando uma kd-tree) Pauly utiliza uma esfera que conteacutem

pontos com a mesma classificaccedilatildeo (seccedilatildeo 432) e diminui em 90 este nuacutemero

de pesquisas Pauly utiliza tambeacutem a representaccedilatildeo impliacutecita MLS (Moving Least

Squares) para casos em que a Regra 2 poderia falhar e para tratamento de

interseccedilotildees Entretanto o nuacutemero destes casos em que a Regra 2 poderia falhar

eacute muito pequeno E a representaccedilatildeo MLS natildeo eacute uma estrutura simples de ser

implementada Portanto natildeo encontramos vantagens em usar MLS para estes

casos O meacutetodo de Adams e Dutreacute natildeo trata estes casos e na praacutetica

apresenta resultados bastante satisfatoacuterios como foi mostrado Portanto

consideramos que valeria a pena fazer algum tratamento especial para estes

casos se fosse um procedimento simples Para a execuccedilatildeo do algoritmo de

Pauly o uso de MLS natildeo interfere significativamente porque a construccedilatildeo desta

representaccedilatildeo natildeo eacute feita somente para realizar operaccedilotildees booleanas Os testes

empiacutericos que fizemos com o algoritmo de Pauly natildeo incluem a construccedilatildeo desta

representaccedilatildeo

Aparentemente os dois algoritmos satildeo bastante parecidos um usa octrees

e o outro usa kd-tree As duas estruturas de dados satildeo simples e otimizam a

classificaccedilatildeo dos surfels de um modelo como dentro ou fora do outro modelo

Resultados 70

Mas existe uma diferenccedila conceitual entre dois que merece ser destacada O

algoritmo aqui implementado usa a Regra 2 para classificaccedilatildeo dos noacutes de uma

octree e armazena esta octree classificada (ver capiacutetulo 5) Assim na maioria dos

casos natildeo seraacute necessaacuterio encontrar o surfel mais proacuteximo para classificar um

ponto (ou um surfel) como fora ou dentro de um modelo Caso o ponto esteja em

uma aacuterea da octree classificada ele teraacute a classificaccedilatildeo dada agravequela aacuterea A

pesquisa ao surfel mais proacuteximo seraacute feita apenas nos casos em que o ponto a

ser classificado estaacute localizado entre os planos que subdividem um noacute cheio

O uso desta octree classificada levanta uma questatildeo que natildeo foi citada no

trabalho de Adams e Dutreacute que eacute a proximidade desta estrutura (armazenada)

de octree classificada com uma representaccedilatildeo volumeacutetrica do objeto Sendo

assim esta estrutura pode ser aproveitada para outras funccedilotildees aleacutem da

classificaccedilatildeo dos surfels Por exemplo podemos ter uma aproximaccedilatildeo do

volume de uma cena somando os volumes aproximados dos modelos que a

compotildeem Como o enfoque deste trabalho eacute operaccedilatildeo booleana natildeo vamos nos

aprofundar nesta questatildeo

Outra importante diferenccedila entre os dois trabalhos que jaacute foi explicada na

seccedilatildeo 432 eacute que o meacutetodo de Pauly aplica-se a modelos soacutelidos ou natildeo

soacutelidos enquanto que o meacutetodo de Adams e Dutreacute aplica-se somente a modelos

soacutelidos

Quanto ao tratamento de interseccedilatildeo em termos de visualizaccedilatildeo todos os

dois resolvem bem o problema O tratamento de interseccedilatildeo nos dois trabalhos

tambeacutem resolve o problema da validade da Regra 2 (ver seccedilatildeo 44) Entretanto

o tratamento de Adams e Dutreacute natildeo depende da renderizaccedilatildeo sendo portanto

mais portaacutevel Aleacutem disso uma desvantagem do meacutetodo de Pauly eacute o uso da

representaccedilatildeo impliacutecita MLS (ldquoMoving Least Squaresrdquo) do objeto para obter os

pontos exatamente na curva de interseccedilatildeo Esta representaccedilatildeo torna o

tratamento de interseccedilatildeo mais complexo e a vantagem apresentada natildeo eacute tatildeo

significativa para este tratamento de interseccedilatildeo

Conclusatildeo 71

7 Conclusatildeo

Concluiacutemos entatildeo que as escolhas de Adams e Dutreacute por usar uma

octree classificada e pelo tratamento dado agrave interseccedilatildeo satildeo mais abrangentes

que a escolha de Pauly E consideramos que quanto mais abrangente for uma

escolha conceitual mais resultados poderemos tirar dela No caso de Adams e

Dutreacute eles estendem o problema de classificar um ponto para classificar todo o

modelo Como foi citado ele quase fornece uma representaccedilatildeo volumeacutetrica do

modelo Esta aproximada representaccedilatildeo volumeacutetrica pode nos fornecer outras

informaccedilotildees como por exemplo o volume aproximado do modelo

Aleacutem disso o uso da representaccedilatildeo impliacutecita MLS no meacutetodo de Pauly cria

uma complexidade a mais para o meacutetodo sem apresentar vantagens para a

realizaccedilatildeo de operaccedilotildees booleanas que eacute o nosso enfoque

Logo podemos dizer que o meacutetodo de Adams e Dutreacute apresenta as

seguintes vantagens em relaccedilatildeo ao de Pauly

- a estrutura de octree classificada aleacutem de ser usada para classificaccedilatildeo

fornece informaccedilotildees adicionais como volume aproximado do objeto

- o tempo de processamento no meacutetodo de Adams e Dutreacute tende a ser

melhor que no meacutetodo de Pauly se implementadas as melhorias acima citadas e

se colocaacutessemos em consideraccedilatildeo o uso da representaccedilatildeo impliacutecita MLS

(Moving Least Squares)

- o tratamento de interseccedilatildeo de Adams e Dutreacute apresenta a vantagem da

portabilidade ou seja iraacute funcionar independente do algoritmo de renderizaccedilatildeo

utilizado

E as vantagens do meacutetodo de Pauly em relaccedilatildeo ao de Adams e Dutreacute

- a colocaccedilatildeo de surfels exatamente na curva de interseccedilatildeo

- a possibilidade de trabalhar com modelos soacutelidos ou natildeo soacutelidos

E finalizando concluiacutemos que o estudo relatado nesta dissertaccedilatildeo foi

importante por

- fornecer um breve estudo sobre modelagem por pontos uma nova e

promissora aacuterea dentro da computaccedilatildeo graacutefica

Conclusatildeo 72

- por apresentar uma avaliaccedilatildeo dos dois trabalhos existentes sobre

operaccedilotildees booleanas com pontos encontrando as vantagens de cada um

e levantando questotildees que natildeo tinham sido citadas nos trabalhos originais

- por propor e implementar melhorias ao trabalho de Adams e Dutreacute

71 Trabalhos Futuros

Nossa implementaccedilatildeo pode ser ainda evoluiacuteda com as propostas

apresentadas na seccedilatildeo 62 Como observamos o tempo de processamento do

algoritmo aqui implementado ainda pode ser melhorado com o uso do meacutetodo

TINN [19] - que foi proposto em Adams[2] - para otimizar a pesquisa do surfel

mais proacuteximo a um ponto que estaacute localizado na regiatildeo de um noacute que conteacutem

surfels Aleacutem disso o trabalho Simple and Efficient Trasversal Methods for

Quadtrees and Octrees de Sara F Frisken [12] citado no capiacutetulo 2 apresenta

uma otimizaccedilatildeo no uso de octrees Outra proposta para melhorar o tempo de

processamento do algoritmo aqui implementado eacute usar a forma de trabalhar com

octrees apresentada neste trabalho

O trabalho de Adams e Dutreacute [2] eacute aplicado apenas a objetos soacutelidos O

nosso plugin portanto aplica-se somente a este tipo de objeto Jaacute o trabalho de

Pauly[3] eacute aplicado tambeacutem a modelos natildeo soacutelidos Apresentamos como

proposta a um trabalho futuro a extensatildeo do algoritmo aqui implementado para

modelos natildeo soacutelidos O surfel pode conter uma informaccedilatildeo adicional que indica

se ele estaacute delimitando um volume ou natildeo Assim pode-se ter um modelo com

ldquopartes soacutelidasrdquo e ldquopartes natildeo soacutelidasrdquo Por exemplo a uniatildeo de um plano com

uma esfera poderia resultar numa esfera com ldquoabasrdquo (seriam as partes do plano

que estariam fora da esfera) O modelo resultado teria uma parte correspondente

a um espaccedilo 3D (esfera) e outra parte que seria uma superfiacutecie 2D posicionada

no espaccedilo 3D sem delimitar algum volume (abas)

Muitos trabalhos podem ser desenvolvidos aplicando-se o modelo por

pontos em animaccedilatildeo jogos visualizaccedilatildeo de terrenos criaccedilatildeo de protoacutetipos etc

considerando-se a eficiecircncia e simplicidade do modelo E mais especificamente

as operaccedilotildees booleanas com pontos podem ser aplicadas para criaccedilatildeo de

cenaacuterios testes de colisotildees e nestes casos a representaccedilatildeo usando octrees

pode ser mais explorada considerando-se o seu potencial de representaccedilatildeo

volumeacutetrica de um objeto

Referecircncias Bibliograacuteficas 73

8 Referecircncias Bibliograacuteficas

[1] MAumlNTYLAuml M An Introduction to Solid Modeling Computer Science Press 1988

[2] ADAMS B DUTREacute P Interactive Boolean Operations on Surfel-

Bounded Solids Proceedings of SIGGRAPH 2003 San Diego USA 2003

[3] PAULY M KEISER R KOBBELT L GROSS M Shape Modeling

with Point-Sampled Geometry SIGGRAPH 2003 Computer Graphics

Proceedings Annual Conference Series ACM Press ACM SIGGRAPH 2003

[4] LEVOY M WHITTED T The Use of Points as Display Primitives

Technical Report TR 85-022 The University of North Carolina at Chapel Hill

Department of Computer Science 1985

[5] PFISTER H ZWICKER M VAN BAAR J GROSS M 2000 Surfels

Surface Elements as Rendering Primitives SIGGRAPH 2000 pp 335ndash342 New

Orleans LA July 23-28 2000

[6] ZWICKER M PFISTER H VAN BAAR J GROSS M Surface

Splatting SIGGRAPH 2001

[7] PAULY M KOBBELT L GROSS M Multiresolution Modeling of

Point-Sampled Geometry CS Techinical Report 378 September 16 2002

[8] CURLESS B New Methods for Surface Reconstruction from Range Images PhD thesis Stanford University 1997

[9] RUSINKIEWICZ S Real-time Acquisition and Rendering of Large 3D Models PhD thesis Stanford University 2001

Referecircncias Bibliograacuteficas 74

[10] AMENTA N BERN M KAMVYSSELIS M A new Voronoi-Based

Surface Reconstruction Algorithm SIGGRAPH 98 Conference proceedings pp

415-421 New York 1998

[11] ZWICKER M PAULY M KNOLL O GROSS M Pointshop 3D an

Interactive System for Point-Based Surface Editing Proceedings of SIGGRAPH 2002 San Antonio TX July 2002

[12] FRISKEN S PERRY R Simple and Efficient Traversal Methods for

Quadtrees and Octrees Journal of Graphics Tools Vol 7 Issue 3 May 2003

[13] CORREcircA W T OLIVEIRA M M Silva C T Wang J

Modeling and Rendering of Real Environments

Revista de Informaacutetica Teoacuterica e Aplicada (Brazilian Journal of Theoretic and Applied Computing) 9(2)127-156 2002

[14] DAVIS J MARSCHNER S GARR M LEVOY M Filling Holes in

Complex Surfaces Using Volumetric Diffusion First International Symposium on 3D Data Processing Visualization Transmission June 2002

[15] RAumlSAumlNEN J Surface Splatting Theory Extensions and Implementation Masterrsquos Thesis Dept of Computer Science Helsinki

University of Technology May 28 2002

[16] PAULY M Point Primitives for Interactive Modeling and Processing of 3D Geometry PhD thesis Federal Institute of Technology (ETH)

of Zurich 2003

[17] HOPPE H DEROSE T DUCHAMP T MCDONALD J

STUELZLE W Surface Reconstruction from Unorganized Points Computer Graphics 26(2)71ndash78 July 1992

[18] ALEXA M BEHR J COHEN-OR D FLEISHMAN S LEVIN D

SILVA C T Point Set Surfaces IEEE Visualization 2001 pp 21ndash28 October

2001

Referecircncias Bibliograacuteficas 75

[19] GREENSPAN M GODIN G TALBOT J Acceleration of Binning

Nearest Neighbor Methods Proceedings of Vision Interface 2000 pp 337-

344

[20] MENCL R Reconstruction of Surfaces from Unorganized Three-Dimensional Point Clouds Dissertation Dortmund Univ 2001

[21] KRIVANEK J Representing and Rendering Surfaces With Points

httpciteseernjneccomkrivanek03representinghtml Acesso em 30 jul

2003

[22] KRISTJANSSON ET AL Approximate Boolean Operations on Free-

form Solids Proceedings of SIGGRAPH 01 2001

Modelagem por Pontos 23

determinada resoluccedilatildeo Em [7] Pauly et al propotildeem algoritmos para modelagem

multi-resoluccedilatildeo em modelos por pontos

34 Dados que um surfel pode conter

Cada surfel armazena sua localizaccedilatildeo e pode tambeacutem conter informaccedilotildees

como a cor ou coordenadas de textura Se a amostragem natildeo for uniforme o

surfel conteacutem a informaccedilatildeo do raio de alcance que eacute o raio de um disco cujo

centro eacute a posiccedilatildeo do surfel O surfel pode tambeacutem conter o vetor normal agrave

superfiacutecie e assim o surfel pode ser visto como um disco orientado A superfiacutecie

tambeacutem pode ser vista como uma superfiacutecie orientada

35 Aquisiccedilatildeo do modelo

Esta introduccedilatildeo sobre aquisiccedilatildeo do modelo aqui apresentada baseia-se no

tutorial de W T Correcirca [13]

O processo de aquisiccedilatildeo consiste em obter uma amostragem de pontos da

superfiacutecie do objeto real por meio de equipamentos como por exemplo o

scanner 3D Eacute uma aacuterea que tem progredido muito nos uacuteltimos anos A

resoluccedilatildeo e a precisatildeo dos equipamentos de aquisiccedilatildeo tecircm melhorado bastante

e o custo deles reduzido de forma significativa Isso possibilita que a aquisiccedilatildeo

de modelos 3D seja usada em aplicaccedilotildees de desenho industrial arte ou em

produtos para a aacuterea de entretenimento O consequumlente maior uso destes

equipamentos criou a necessidade de avanccedilos no tratamento dos seus dados de

saiacuteda que satildeo um conjunto de pontos

Este processo pode ser dividido em trecircs partes [13] aquisiccedilatildeo da

geometria aquisiccedilatildeo da textura e correccedilatildeo de falhas da aquisiccedilatildeo

351 Aquisiccedilatildeo da geometria

Existem vaacuterios meacutetodos de aquisiccedilatildeo da geometria Curless [8] e

Rusinkiewicz [9] classificaram estes meacutetodos em trecircs categorias meacutetodos por

contato transmissatildeo e reflexatildeo

O meacutetodo por contato toca a superfiacutecie do objeto com uma sonda e grava

a posiccedilatildeo Este meacutetodo do qual o Coordinate Measuring Machines (CMMs) eacute

Modelagem por Pontos 24

um exemplo eacute bastante preciso mas eacute muito lento e natildeo adequado a objetos

fraacutegeis

Meacutetodos por transmissatildeo projetam ondas de energia sobre o objeto e

gravam a energia transmitida Por exemplo tomografia computadorizada que

projeta ondas de raio-x sobre o objeto e mede a quantidade de radiaccedilatildeo que

passa atraveacutes dele O resultado eacute um modelo geomeacutetrico de alta resoluccedilatildeo Este

meacutetodo pode captar detalhes do objeto que natildeo satildeo visiacuteveis de fora do objeto

Por outro lado ele eacute caro e arriscado

Meacutetodos por reflexatildeo podem ser oacuteticos ou natildeo-oacuteticos Natildeo-oacuteticos incluem

radares que medem a distacircncia a um objeto enviando microondas ou ondas

sonoras para o objeto e gravando o tempo que a onda gasta para retornar Estes

meacutetodos natildeo satildeo muito precisos nem raacutepidos

Meacutetodos por reflexatildeo oacuteticos podem ser passivos ou ativos Meacutetodos oacuteticos

passivos natildeo interagem com o objeto e incluem teacutecnicas de visatildeo computacional

como shape-from-shading stereo triangulation optical flow e meacutetodos de

decomposiccedilatildeo para video streams Estes meacutetodos raramente constroem

modelos precisos e sua maior aplicaccedilatildeo eacute em reconhecimento de objetos

Meacutetodos oacuteticos ativos projetam luz sobre um objeto de maneira estruturada

e atraveacutes da reflexatildeo da luz determinam a forma do objeto Exemplos satildeo depth

from defocus photometric stereo projected-light triangulation time of flight

Meacutetodos por reflexatildeo oacuteticos ativos tecircm muitas vantagens sobre os passivos tecircm

um melhor desempenho quando natildeo existe textura satildeo mais baratos e mais

robustos e produzem uma amostragem precisa

352 Aquisiccedilatildeo da textura

Idealmente noacutes gostariacuteamos de ter uma completa descriccedilatildeo de como um

ponto da superfiacutecie reflete a luz dependendo do vetor normal a esta superfiacutecie

da direccedilatildeo do raio de luz incidente e do comprimento de onda Tal descriccedilatildeo eacute

conhecida como Bidirectional Reflectance Distribution Function (BRDF) Medir

BRDFs com precisatildeo eacute um problema difiacutecil

Pode-se ter uma aproximaccedilatildeo da aquisiccedilatildeo de cores do objeto tirando

fotos dele O objeto eacute fotografado e a cor de cada ponto da superfiacutecie eacute obtida a

partir de um mapeamento das fotos 2D para o modelo 3D Para mapear a

fotografia agrave geometria precisamos conhecer os paracircmetros de projeccedilatildeo da

cacircmera e a sua posiccedilatildeo no momento em que a foto foi batida Para cada ponto

Modelagem por Pontos 25

3D do modelo encontramos sua projeccedilatildeo 2D no plano da cacircmera e associamos

a cor do pixel nesta projeccedilatildeo agrave cor do ponto 3D

353 Correccedilatildeo das falhas da aquisiccedilatildeo

O processo de aquisiccedilatildeo deixa frequumlentemente buracos no modelo devido

a ruiacutedos no processo ou agrave impossibilidade de aquisiccedilatildeo de determinadas partes

de uma superfiacutecie Estes buracos devem ser corrigidos Pode-se usar por

exemplo um filtro de passa-baixa para remoccedilatildeo de ruiacutedos [14] Meacutetodos de

difusatildeo geomeacutetrica tecircm sido aplicados para preenchimento dos buracos [15] A

correccedilatildeo das falhas eacute tida como um preacute-processamento para o processo de

reconstruccedilatildeo da superfiacutecie contiacutenua (seccedilatildeo 36)

36 Reconstruccedilatildeo da superfiacutecie (contiacutenua) a partir do modelo (discreto)

A reconstruccedilatildeo da superfiacutecie contiacutenua consiste em a partir de um conjunto

natildeo estruturado de pontos obter um modelo contiacutenuo desta superfiacutecie Esta

reconstruccedilatildeo eacute frequumlentemente exigida para um modelo por pontos Na sua

visualizaccedilatildeo podemos desejar focar qualquer parte do modelo Para fazermos

operaccedilotildees booleanas com os modelos podemos querer determinar exatamente

onde eles se intersectam

No entanto natildeo precisamos ter necessariamente a representaccedilatildeo contiacutenua

de todo o objeto ao mesmo tempo A reconstruccedilatildeo desta superfiacutecie a partir dos

pontos amostrados pode ser feita no momento que for mais adequado agrave

aplicaccedilatildeo Na visualizaccedilatildeo a reconstruccedilatildeo pode ser feita na projeccedilatildeo 2D da

parte do modelo em foco (seccedilatildeo 37) Para operaccedilotildees booleanas pode-se

reconstruir apenas a aacuterea da interseccedilatildeo dos modelos

Este processo de reconstruccedilatildeo de superfiacutecie tem sido muito estudado em

modelagem geomeacutetrica e geometria computacional nos uacuteltimos anos O trabalho

mais importante desta aacuterea eacute o trabalho de Amenta et al [10] que foi a primeira

soluccedilatildeo com garantias demonstraacuteveis para este problema de reconstruccedilatildeo de

superfiacutecie A seccedilatildeo 44 explica estes conceitos e o trabalho [10] Este trabalho

demonstra que teoricamente para que a reconstruccedilatildeo da superfiacutecie (contiacutenua) a

partir das amostras seja correta a amostragem deve ser adequada Ele usa o

conceito de ldquoEixo Medialrdquo para definir o que eacute uma amostragem adequada

Modelagem por Pontos 26

(seccedilatildeo 44) Em duas dimensotildees os veacutertices de Voronoi de uma amostragem

densa aproximam o ldquoEixo Medialrdquo da amostragem

Por meio deste conceito de Eixo Medial [1016] obtecircm-se paracircmetros

teoacutericos para a definiccedilatildeo de amostragem adequada e baseado neste conceito

o algoritmo apresentado em [10] traz uma soluccedilatildeo praacutetica para o problema

obtendo uma malha poligonal a partir do modelo por pontos

O PointShop 3D [11] software de ediccedilatildeo de modelos por pontos utilizado

nesta pesquisa faz quando necessaacuterio a reconstruccedilatildeo da superfiacutecie Para isso

o PointShop 3D explora a vizinhanccedila local (surfels vizinhos de acordo com suas

posiccedilotildees) Ele usa o conceito de Eixo Medial para justificar seu meacutetodo de

reconstruccedilatildeo da superfiacutecie que na praacutetica apresenta resultados bastante

satisfatoacuterios apesar de teoricamente natildeo ter garantias [16]

37 Visualizaccedilatildeo do modelo

A primeira abordagem para visualizaccedilatildeo de um modelo por pontos foi

construir uma malha de poliacutegonos a partir dos surfels e renderizaacute-la Mas a

construccedilatildeo de malhas a partir dos surfels eacute um processo muito caro e lento

principalmente para modelos complexos Na tentativa de obter uma visualizaccedilatildeo

interativa do modelo por pontos estatildeo sendo estudadas teacutecnicas que utilizam

surfels como primitiva de visualizaccedilatildeo A ideacuteia foi apresentada inicialmente por

Levoy [4]

Figura 3 [21] -Modelo por pontos e sua renderizaccedilatildeo usando Surface Splatting

Modelagem por Pontos 27

O objetivo da renderizaccedilatildeo a partir dos surfels eacute projetaacute-los na tela e

reconstruir as superfiacutecies de forma contiacutenua sem buracos Para que esta

renderizaccedilatildeo seja amplamente utilizada deve-se ter cuidado com o uso de

memoacuteria e com a qualidade da imagem gerada Teacutecnicas recentes como Surface

Splatting [6] faz a renderizaccedilatildeo interativamente com qualidade (Figura 3)

comparada a outros meacutetodos de renderizaccedilatildeo como Image Based Rendering

Em geral a visualizaccedilatildeo do modelo por pontos pode ser dividida nas seguintes

etapas

- warping - projeccedilatildeo em perspectiva de cada ponto do modelo na tela

processo anaacutelogo agrave projeccedilatildeo de veacutertices dos triacircngulos na malha triangular Se

um pixel da tela estiver contido em mais de uma projeccedilatildeo de surfels (vizinhos)

ou seja mais de um ponto cobre este pixel os atributos destes pontos seratildeo

combinados

- shading por ponto - o processo de shading eacute realizado para cada ponto

visiacutevel (os pontos que natildeo satildeo vistos do ponto de vista em questatildeo devem ser

retirados) Qualquer modelo local de shading pode ser aplicado Uma nova

teacutecnica foi proposta em Surface Splatting [6]

- reconstruccedilatildeo da imagem ndash pixels que natildeo ldquoreceberamrdquo projeccedilatildeo de

nenhum ponto formam buracos na imagem Esta imagem deve ser reconstruiacuteda

sem buracos sem aliasing e as superfiacutecies devem ser reconstruiacutedas de forma

contiacutenua e devem ser ldquosuavizadasrdquo (smooth surface)

Os algoritmos de renderizaccedilatildeo por pontos podem tratar a questatildeo de

buracos na visualizaccedilatildeo de trecircs formas [17]

Detecccedilatildeo e preenchimento de buracos no espaccedilo da tela pontos satildeo

projetados na tela e pixels que natildeo receberam pontos satildeo detectados (buracos)

Para preencher estes buracos que natildeo receberam pontos eacute feita uma

interpolaccedilatildeo entre os vizinhos

Geraccedilatildeo de mais pontos a superfiacutecie eacute interpolada no espaccedilo do modelo

para garantir que todos os pixels recebam pelo menos a projeccedilatildeo de um ponto

Splatting um surfel eacute projetado na tela e sua contribuiccedilatildeo eacute espalhada de

forma diferenciada para os pixels vizinhos Agrave medida em que o vizinho se torna

mais distante a contribuiccedilatildeo do surfel diminui

Raumlsaumlnen faz uma analogia do processo de renderizaccedilatildeo proposto em [6]

com o mapeamento de textura [15] No mapeamento de textura para um

determinado pixel da tela satildeo encontrados os pontos da textura que afetam este

Modelagem por Pontos 28

pixel Num sentido inverso em splatting para um determinado surfel (que

representa a textura) satildeo encontrados os pixels da tela que este surfel afeta

38 Ediccedilatildeo do modelo

Ediccedilatildeo de um modelo 3D consiste em operaccedilotildees que modificam

caracteriacutesticas deste modelo como cor textura forma ou criam novos modelos

O software PointShop 3D [11] software de ediccedilatildeo de modelos por pontos 3D

implementa vaacuterias destas operaccedilotildees (ver seccedilatildeo 52)

Para modificar a forma de um modelo ou criar um novo satildeo muito usadas

as operaccedilotildees booleanas que eacute o nosso enfoque nesta dissertaccedilatildeo Na

modelagem CSG (Constructive Solid Geometry) as operaccedilotildees booleanas satildeo

usadas juntamente com primitivas soacutelidas para definir um modelo No entanto

em alguns tipos de modelos estas operaccedilotildees satildeo difiacuteceis como por exemplo

em malhas poligonais Com pontos elas podem ser feitas interativamente [32]

Operaccedilotildees Booleanas com Pontos 29

4 Operaccedilotildees Booleanas com Pontos

Operaccedilotildees booleanas satildeo as operaccedilotildees de uniatildeo interseccedilatildeo e diferenccedila

definidas na teoria matemaacutetica de conjuntos Estas operaccedilotildees satildeo aplicadas em

modelos soacutelidos para alteraacute-los ou para criar novos modelos A Figura 4 abaixo

mostra a criaccedilatildeo de trecircs novos modelos a partir de quatro modelos iniciais

Figura 4 [22] Trecircs modelos novos foram criados a partir dos quatro iniciais (esfera

cilindro dois cubos) O primeiro eacute a esfera menos um cubo em seguida retirou-se outro

cubo e por uacuteltimo retirou-se o cilindro

Estas operaccedilotildees satildeo aplicadas em objetos modelados por pontos em dois

trabalhos no trabalho de Bart Adams e Philip Dutreacute [2] e no trabalho de Pauly

et Al [3] Neste capiacutetulo a seccedilatildeo 41 apresenta a parte comum aos dois

trabalhos e as seccedilotildees 42 e 43 apresentam as particularidades de cada um A

seccedilatildeo 44 discute uma questatildeo natildeo explicitada em nenhum dos dois trabalhos

41 Meacutetodos para realizar operaccedilotildees booleanas em objetos modelados por pontos

A Figura 5 mostra o resultado do meacutetodo de Adams[2] operaccedilotildees de

uniatildeo diferenccedila e interseccedilatildeo de objetos soacutelidos 3D modelados por pontos

Operaccedilotildees Booleanas com Pontos 30

Figura 5 [2]-A partir de dois modelos por pontos uma heacutelice e uma cabeccedila as trecircs operaccedilotildees booleanas satildeo mostradas da esquerda para a direita uniatildeo diferenccedila e interseccedilatildeo

Sejam A e B objetos 3D soacutelidos modelados por pontos Definem-se os

seguintes elementos

Af ndash superfiacutecie (contorno) de A que estaacute fora de B

Ad ndash superfiacutecie (contorno) de A que estaacute dentro de B

Bf ndash superfiacutecie (contorno) de B que estaacute fora de A

Bd ndash superfiacutecie (contorno) de B que estaacute dentro de A

O resultado da operaccedilatildeo booleana entre A e B seraacute um modelo C cuja

superfiacutecie de contorno pode ser determinada pela seguinte regra [2] que aqui

chamamos de Regra 1

Regra 1 A U B Af + Bf

A cap B Ad + Bd

A ndash B Af + Bd (com a orientaccedilatildeo invertida)

B ndash A Ad (com a orientaccedilatildeo invertida) + Bf

A Figura 6 mostra as operaccedilotildees com dois modelos A e B

(a) (b)

Operaccedilotildees Booleanas com Pontos 31

(c) (d)

Figura 6 [22] (a) Dois modelos A e B (b) Posicionados de forma que A tem

uma parte dentro de B eacute mostrado o resultado A U B Af + Bf (c) Resultado de A ndash B Af

+ Bd (d) Resultado de A cap B Ad + Bd

Bart [2] e Pauly [3] apresentam dois meacutetodos para determinar os

elementos acima Estes dois meacutetodos satildeo construiacutedos a partir dos seguintes

conceitos os elementos Af Ad Bf Bd satildeo uma parte da superfiacutecie modelada por

pontos e portanto satildeo conjuntos de surfels Para determinaacute-los eacute necessaacuteria

entatildeo a classificaccedilatildeo de um surfel (que pode se resumir agrave classificaccedilatildeo de um

ponto que eacute o seu centro) de uma superfiacutecie como dentro ou fora de um outro

modelo Os dois meacutetodos utilizam a seguinte regra para esta classificaccedilatildeo aqui

denominada Regra 2

Regra 2 Dado um ponto x qualquer um volume V determinado por uma superfiacutecie

de contorno S uma amostragem P da superfiacutecie S um ponto p є P que eacute a

amostra mais proacutexima a x um vetor np normal agrave S em p e orientado para fora de

S temos que

(x ndash p) np gt 0 x notinV

Ou seja para classificar um ponto em relaccedilatildeo a um modelo verificamos o

produto interno entre a normal em p (surfel mais proacuteximo a x) e o vetor (x - p)

se este produto interno for maior que zero x natildeo pertence ao volume V e seraacute

classificado como fora senatildeo seraacute classificado como dentro De maneira

ainda mais informal se a normal em p apontar para a direccedilatildeo oposta a x x seraacute

classificado como dentro se apontar para x x seraacute classificado como fora

A Figura 7 mostra a Regra 2

Operaccedilotildees Booleanas com Pontos 32

Figura 7 Para classificar o ponto x encontra-se o surfel p (com normal np) mais proacuteximo

a x Se o produto interno entre np e (x ndash p) for maior que zero entatildeo x eacute classificado como

fora senatildeo seraacute classificado como dentro

A validade da Regra 2 eacute discutida na Seccedilatildeo 44 Uma das restriccedilotildees

teoacutericas para garantir-lhe a validade eacute que a superfiacutecie seja suave

Cada um dos dois meacutetodos daacute um tratamento diferente para o uso desta

regra Pauly usa a regra diretamente encontrando o surfel mais proacuteximo a um

ponto e classificando este ponto a partir deste surfel Ele utiliza tambeacutem a

representaccedilatildeo impliacutecita MLS (Moving Least Squares [18]) para casos em que a

Regra 2 poderia falhar e para tratamento de interseccedilotildees [3] Seu meacutetodo vale

para modelos soacutelidos ou natildeo soacutelidos O meacutetodo de Adams e Dutreacute [2] utiliza

octrees [1] criando uma classificaccedilatildeo dos noacutes da octree a partir desta Regra 2

Os pontos satildeo entatildeo classificados de acordo com o noacute da octree que o conteacutem

Este segundo meacutetodo aplica-se somente a modelos soacutelidos Os dois meacutetodos

seratildeo descritos em detalhes nas seccedilotildees abaixo

Como um surfel eacute considerado um disco podemos dizer que surfels de

dois modelos diferentes podem se intersectar A interseccedilatildeo destes dois surfels

corresponde agrave interseccedilatildeo destes dois discos Estes surfels geram problemas

para visualizaccedilatildeo se forem acrescentados ao resultado sem um tratamento

especiacutefico apresentaratildeo artefatos natildeo desejaacuteveis na renderizaccedilatildeo do modelo

resultado (Figura 8) se natildeo forem acrescentados ao resultado deixaratildeo buracos

no modelo

Operaccedilotildees Booleanas com Pontos 33

Figura 8 [2] -Interseccedilatildeo de duas esferas agrave esquerda sem nenhum tratamento de interseccedilatildeo agrave direita apoacutes o tratamento de interseccedilatildeo

Aleacutem disso nem sempre esta interseccedilatildeo forma uma superfiacutecie suave

Esta interseccedilatildeo pode formar uma aresta viva (seccedilatildeo 4223) gerando

problemas tambeacutem para o uso da Regra 2 que eacute vaacutelida apenas para superfiacutecies

suaves Eacute necessaacuterio entatildeo fazer um tratamento desta superfiacutecie de interseccedilatildeo

(formada por surfels originados de diferentes modelos) O tratamento de cada

um dos meacutetodos para este caso seraacute tambeacutem abaixo apresentado

42 Meacutetodo de Adams e Dutreacute

O meacutetodo aplica-se somente a modelos soacutelidos Para determinaccedilatildeo dos

elementos da aqui chamada Regra 1 (seccedilatildeo 41) este meacutetodo utiliza uma octree

[1] que subdivide o espaccedilo do modelo em trecircs fora dentro ou no contorno do

modelo Estes espaccedilos satildeo determinados pela classificaccedilatildeo dos noacutes da octree a

partir da Regra 2 Tambeacutem eacute usado o meacutetodo TINN - Triangle Inequality Nearest

Neighbour [19] - para otimizar a pesquisa dentro do noacute A seguir descrevemos o

modelo usado neste meacutetodo apresentando os dados associados aos pontos o

tipo de distribuiccedilatildeo e o algoritmo que realiza as operaccedilotildees

421 Modelo por Pontos em Adams e Dutreacute

Os surfels neste meacutetodo contecircm as seguintes informaccedilotildees posiccedilatildeo do

surfel xs orientaccedilatildeo do surfel ns e raio de alcance do surfel rs O surfel pode ser

pensado como um disco ortogonal a ns com centro xs e raio rs O raio eacute

escolhido de tal forma que a projeccedilatildeo dos discos no plano da imagem se

sobreponham

Operaccedilotildees Booleanas com Pontos 34

Os objetos representados satildeo soacutelidos A distribuiccedilatildeo dos surfels eacute

uniforme embora o algoritmo natildeo exija esta condiccedilatildeo Para cada soacutelido eacute

definido um rmax = Max rs o raio de alcance do maior surfel pertencente agrave

superfiacutecie do soacutelido Como o raio eacute escolhido de tal forma que a projeccedilatildeo dos

discos no plano da imagem se sobreponham o controle da amostragem eacute

entatildeo ligado agrave renderizaccedilatildeo

422 Algoritmo de Operaccedilotildees Booleanas

Utilizando objetos modelados da forma descrita acima o meacutetodo realiza

operaccedilotildees de uniatildeo interseccedilatildeo e diferenccedila com modelos soacutelidos Supondo dois

modelos soacutelidos S1 e S2 O algoritmo pode ser dividido nas seguintes etapas

Criaccedilatildeo de uma octree para cada modelo Teste Dentro-Fora Tratamento da

interseccedilatildeo Estas etapas satildeo apresentadas nas proacuteximas seccedilotildees

4221 Criaccedilatildeo de uma octree para cada modelo

Eacute criada uma octree [1] para cada modelo A criaccedilatildeo de uma octree eacute feita

da seguinte forma

Gera-se a ldquoCaixa envolventerdquo caixa alinhada com os eixos que conteacutem

todo o modelo A ldquoCaixa envolventerdquo corresponde ao noacute raiz da octree Este noacute

conteacutem inicialmente todos os surfels do modelo Em seguida o noacute raiz eacute

dividido em oito noacutes filhos Os surfels satildeo distribuiacutedos entre estes oito noacutes Cada

um deles caso contenha surfels eacute dividido novamente em 8 filhos e seus surfels

satildeo redistribuiacutedos entre eles Este processo eacute repetido recursivamente enquanto

o nuacutemero de surfels do noacute for maior que zero ou ateacute uma profundidade maacutexima

preacute-definida da octree ser alcanccedilada

Cada noacute da octree deve ser classificado O objetivo desta classificaccedilatildeo eacute

determinar que parte da octree estaacute dentro do modelo e que parte estaacute fora Os

noacutes da octree satildeo entatildeo classificados como ldquodentrordquo ldquoforardquo e ldquocontornordquo

Podemos ilustrar esta classificaccedilatildeo em 2D a Figura 9 mostra uma quadtree

classificada

Operaccedilotildees Booleanas com Pontos 35

Figura 9-Um objeto representado por pontos com suas normais e sua quadtree correspondente classificada os noacutes cinza claro estatildeo dentro do modelo noacutes cinza mais escuro estatildeo fora do modelo e noacutes com cinza intermediaacuterio satildeo noacutes cheios noacutes que conteacutem pontos

O noacutes que conteacutem surfels satildeo classificados como ldquocontornordquo Para

classificar um noacute vazio existem trecircs casos

o noacute vazio tem apenas um vizinho-irmatildeo natildeo vazio

o noacute vazio tem mais de um vizinho-irmatildeo natildeo vazio

o noacute vazio natildeo tem vizinhos-irmatildeos natildeo vazios

No primeiro caso o noacute vazio eacute classificado pelo seu vizinho natildeo vazio No

segundo caso considera-se qualquer um dos vizinhos natildeo vazios No terceiro

caso classifica-se primeiro os noacutes vizinhos e eacute dada a mesma classificaccedilatildeo para

o noacute vazio Como cada noacute natildeo folha de uma octree tem pelo menos um noacute filho

natildeo vazio sempre pode ser feita a classificaccedilatildeo dos noacutes vazios A classificaccedilatildeo

eacute feita da seguinte forma dentre os surfels do vizinho-irmatildeo escolhido encontra-

se o surfel mais proacuteximo ao noacute a ser classificado Se a normal deste surfel

aponta para o noacute vazio a ser classificado entatildeo ele eacute classificado como ldquoforardquo

Se a normal aponta no sentido contraacuterio entatildeo ele eacute classificado como ldquodentrordquo

De maneira mais formal sejam cv e cc coordenadas dos centros do noacute vazio e

do noacute contorno respectivamente Seja s o surfel mais proacuteximo ao noacute vazio e ns

a normal em s Se ( cv - cc )٠ ns gt 0 ( produto interno entre a normal em s e o

vetor cv - cc for maior que zero ) o noacute vazio seraacute classificado como ldquoforardquo

Senatildeo seraacute classificado como ldquodentrordquo

Em geral os noacutes ldquocontornordquo satildeo subdivididos em trecircs partes uma que estaacute

fora do modelo uma que estaacute dentro do modelo e uma terceira que conteacutem os

surfels Esta subdivisatildeo eacute feita por meio da criaccedilatildeo de dois planos paralelos que

Operaccedilotildees Booleanas com Pontos 36

dividem o noacute Para determinar estes planos calcula-se o vetor nm igual agrave

meacutedia das normais dos surfels do noacute nm = sum ns sum ns onde ns eacute a normal de

cada surfel do noacute

Em seguida encontra-se o surfel com maior produto interno entre a sua

normal e a normal meacutedia d1=Max(nm ٠ ns) Este surfel juntamente com a normal

meacutedia define um dos planos Encontra-se tambeacutem o surfel com menor produto

interno entre a sua normal e a normal meacutedia d2=Min(nm ٠ ns) Este surfel

juntamente com a normal meacutedia define o outro plano A Figura 10 mostra a

divisatildeo de um noacute de uma quadtree nas trecircs partes dentro do modelo fora do

modelo e no ldquocontornordquo

Esta subdivisatildeo aplica-se apenas a noacutes que conteacutem surfels cujas direccedilotildees

natildeo variem em mais de 90 graus Caso isso ocorra ele natildeo seraacute subdividido Ou

seja se um noacute possuir dois vetores normais (de dois surfels diferentes) que

formem um acircngulo maior que 90 graus ele natildeo seraacute subdividido

Figura 10 [2] -Divisatildeo de noacute de contorno a parte agrave esquerda estaacute fora do modelo a parte agrave direita estaacute dentro do modelo e a faixa intermediaacuteria conteacutem os surfels

4222 Teste Dentro-Fora

O Teste Dentro-Fora faz a classificaccedilatildeo dos surfels de um modelo como

ldquodentrordquo ou ldquoforardquo de outro modelo Portanto aplicaremos este mesmo teste duas

vezes uma para o modelo S1 em relaccedilatildeo ao modelo S2 e outra para S2 em

relaccedilatildeo a S1 Vamos mostrar o teste Dentro-Fora para o caso da classificaccedilatildeo

dos surfels do modelo S1 em relaccedilatildeo a S2

Operaccedilotildees Booleanas com Pontos 37

No item anterior foram criadas duas octrees uma para o modelo S1 e

outra para o modelo S2 Chamemos de A e B as octrees de S1 e S2

respectivamente Para classificar S1 em relaccedilatildeo a S2 inicialmente eacute feita uma

avaliaccedilatildeo da posiccedilatildeo de A em relaccedilatildeo a B A e B podem estar nas seguintes

situaccedilotildees

- A natildeo intersecta B

- A intersecta apenas noacutes ldquoforardquo de B

- A intersecta apenas noacutes ldquodentrordquo de B

- A intersecta noacutes ldquoforardquo e noacutes ldquodentrordquo de B

Para testar estas situaccedilotildees os noacutes satildeo aumentados de rmax o raio do

maior surfel do modelo soacutelido Isto eacute feito para compensar o fato de que o surfel

natildeo eacute apenas um ponto mas sim considerado como um disco

No primeiro e no segundo caso todos os surfels de A satildeo classificados

como ldquoforardquo No terceiro caso todos os surfels de A satildeo classificados como

ldquodentrordquo

No quarto caso temos que percorrer a octree A Comeccedilando pelo noacute raiz

percorre-se os filhos deste noacute Para cada filho os quatro testes acima satildeo feitos

Se o noacute filho encontra-se em um dos trecircs primeiros casos a classificaccedilatildeo eacute dada

como foi citada acima Se um filho estaacute no quarto caso e natildeo eacute um noacute folha

repete-se recursivamente o mesmo procedimento para seus filhos ateacute encontrar-

se um noacute folha Para um noacute que estaacute no quarto caso e eacute folha percorre-se a lista

de surfels que este noacute conteacutem classificando cada um destes surfels Seja sa um

surfel desta lista Para este caso percorre-se a octree B para classificar sa

Primeiramente encontramos o noacute de B que conteacutem sa Se este noacute de B foi

dividido testa-se de acordo com esta divisatildeo do noacute se o surfel sa estaacute na parte

do noacute que estaacute dentro do modelo ele eacute classificado como ldquodentrordquo se sa estaacute na

parte que estaacute fora do modelo ele eacute classificado como ldquoforardquo se sa estaacute na parte

intermediaacuteria ou se o noacute de B natildeo foi subdividido em planos encontra-se sb que

eacute o surfel pertencente a este noacute de B que estaacute mais proacuteximo de sa sa seraacute

entatildeo classificado de acordo com sb Se ( sa - sb )٠ nb gt 0 sa eacute classificado

como ldquoforardquo senatildeo eacute classificado como ldquodentrordquo Se os discos de sb e sa se

intersectam sa eacute marcado como interseccedilatildeo Para encontrar sb o algoritmo

implementa o meacutetodo TINN ndash Triangle Inequality Nearest Neighbour [19]

Operaccedilotildees Booleanas com Pontos 38

4223 Tratamento da interseccedilatildeo

Os surfels de A que intersectam surfels de B satildeo classificados como

ldquointerseccedilatildeordquo Se eles natildeo forem incluiacutedos no modelo resultado o soacutelido resultado

teraacute buracos Se eles forem incluiacutedos sem algum tratamento eles natildeo

representaratildeo adequadamente a regiatildeo Em geral o surfel sa (um surfel

ldquointerseccedilatildeordquo de A) eacute dividido em dois pelo plano que conteacutem o surfel sb (surfel de

B que sa intersecta) uma parte que estaacute fora de B e outra que estaacute dentro de B

Dependendo da operaccedilatildeo que estaacute sendo realizada vamos querer manter uma

destas partes do surfel sa no modelo resultado Seja xa a posiccedilatildeo do surfel sa e o

surfel sa uma circunferecircncia de centro xa e raio ra igual ao raio de alcance de sa

O plano que conteacutem o surfel sb define uma corda desta circunferecircncia como

mostra a Figura 11 O surfel sa seraacute substituiacutedo por um surfel menor que

ultrapassa esta corda de uma distacircncia e definida pelo usuaacuterio Para cobrir

completamente a interseccedilatildeo seratildeo adicionados surfels menores que cruzam a

corda de interseccedilatildeo

Figura 11 -Interseccedilatildeo do surfel s e do plano que passa pelo surfel t o surfel mais proacuteximo a s O surfel s eacute substituiacutedo por trecircs surfels menores

Operaccedilotildees Booleanas com Pontos 39

O tratamento de interseccedilatildeo proposto por Adams e Dutreacute [2] natildeo soacute evita

os buracos mas tambeacutem cria uma forma de renderizaccedilatildeo de arestas vivas A

colocaccedilatildeo de vaacuterios pequenos surfels na regiatildeo da interseccedilatildeo permite esta

correta renderizaccedilatildeo das ldquoarestas vivasrdquo Desta forma o problema das arestas

vivas eacute resolvido na modelagem (Figura 12) A vantagem de se resolver o caso

na modelagem eacute que natildeo eacute necessaacuterio fazer um tratamento especial na

renderizaccedilatildeo para que mostre esta aresta viva Diferente do tratamento feito

em Pauly (seccedilatildeo 431) que resolve esta questatildeo em tempo de renderizaccedilatildeo

Aleacutem disso o tratamento resolve alguns casos onde a Regra 2 poderia falhar

(veja em Validade da Regra 2-seccedilatildeo 44)

Figura 12 [2] -Agrave direita eacute mostrado o resultado do tratamento de interseccedilatildeo para o caso de Arestas Vivas do objeto agrave esquerda

43 Meacutetodo de Pauly

O meacutetodo aplica-se a objetos soacutelidos e natildeo soacutelidos Os modelos podem ser

obtidos a partir de diferentes entradas como nuvem de pontos irregulares ou por

meio de scanners 3D Cria um modelo hiacutebrido destes objetos usa o modelo por

pontos juntamente com a representaccedilatildeo impliacutecita Moving Least Squares - MLS

[18] Realiza operaccedilotildees booleanas com pontos e utiliza adicionalmente MLS

para alguns casos de classificaccedilatildeo de surfels e no tratamento de interseccedilatildeo A

seguir apresentamos as caracteriacutesticas do modelo por pontos deste meacutetodo e o

algoritmo que realiza as operaccedilotildees

Operaccedilotildees Booleanas com Pontos 40

431 Modelo em Pauly

O modelo eacute uma estrutura hiacutebrida de pontos com a representaccedilatildeo impliacutecita

Moving Least Squares - MLS [18] Esta estrutura eacute usada para fazer operaccedilotildees

booleanas e tambeacutem operaccedilotildees de free-form (natildeo abordadas nesta

dissertaccedilatildeo) Para operaccedilotildees booleanas a representaccedilatildeo MLS permite que a

curva de interseccedilatildeo entre os modelos seja reconstruiacuteda e surfels sejam

colocados nesta curva e em alguns casos de classificaccedilatildeo de surfels mostrados

na seccedilatildeo 432 Para este modelo natildeo existem restriccedilotildees quanto agrave forma do

objeto

Os surfels contecircm informaccedilotildees sobre sua posiccedilatildeo e sua normal Aleacutem

disso surfels podem conter informaccedilotildees adicionais como textura cor

propriedades de materiais

A distribuiccedilatildeo dos surfels eacute natildeo-uniforme e a amostragem eacute

aproximadamente adequada (Veja seccedilatildeo 44)

432 Algoritmo de Operaccedilotildees Booleanas

O algoritmo classifica surfels de um modelo como ldquodentrordquo ou ldquoforardquo de

outro modelo Antes de colocarmos como eacute feita esta classificaccedilatildeo devemos

acrescentar que Pauly estende esta classificaccedilatildeo para modelos que natildeo satildeo

soacutelidos Ou seja mesmo um modelo natildeo soacutelido divide o espaccedilo da cena (espaccedilo

em que se encontra o modelo) em dois sub-espaccedilos dentro ou fora do modelo

Pauly faz esta subdivisatildeo da seguinte forma

Como a superfiacutecie que determina o modelo eacute orientada (conteacutem vetores

normais agrave superfiacutecie que apontam para ldquoforardquo do modelo) Pauly considera que

um modelo natildeo soacutelido divide o espaccedilo em dois sub-espaccedilos um ldquoforardquo do

modelo (os vetores normais apontam para este sub-espaccedilo) e um que estaacute

ldquodentrordquo do modelo (os vetores normais apontam para direccedilatildeo oposta a este sub-

espaccedilo) Por exemplo um plano eacute representado como um conjunto de surfels

contidos num determinado espaccedilo geomeacutetrico plano π Cada surfel conteacutem um

vetor normal direcionado Este modelo divide entatildeo o espaccedilo em dois sub-

espaccedilos o sub-espaccedilo que eacute apontado por estes surfels (considerado ldquoforardquo do

modelo) e o sub-espaccedilo que estaacute na direccedilatildeo oposta (considerado ldquodentrordquo do

modelo) Desta forma ele aplica as classificaccedilotildees de ldquodentrordquo e ldquoforardquo de um

modelo tambeacutem a modelos natildeo soacutelidos A partir desta consideraccedilatildeo as

Operaccedilotildees Booleanas com Pontos 41

operaccedilotildees booleanas satildeo realizadas com os modelos natildeo soacutelidos da mesma

forma que com os modelos soacutelidos

Para determinar esta classificaccedilatildeo (dentro ou fora do modelo) Pauly utiliza

a Regra 2 Para pesquisa do surfel mais proacuteximo o meacutetodo usa a estrutura Kd-

tree [16] e tambeacutem o algoritmo ANN [16] No entanto o meacutetodo apresenta uma

restriccedilatildeo da Regra 2 ela soacute deve ser usada para classificaccedilotildees de pontos x se

a distacircncia x-p for maior que o espaccedilamento da amostragem local ηp em p

Este espaccedilamento da amostragem local ηp em p eacute um caacutelculo aproximado da

distacircncia meacutedia entre os surfels vizinhos a p Se x estaacute muito proacuteximo agrave

superfiacutecie a classificaccedilatildeo pode falhar Neste caso ele calcula o ponto exato de

S mais proacuteximo a x usando a projeccedilatildeo MLS (ldquoMoving Least Squaresrdquo)

Por questotildees de melhoria de desempenho utiliza-se o fato de que sendo

Ωp (x) a classificaccedilatildeo do ponto x em relaccedilatildeo agrave amostragem P tem-se que Ωp (x)

= Ωp (xrsquo) para todos os pontos de xrsquo que estatildeo dentro da esfera de centro x e

raio igual a x-p - ηp (onde p eacute o surfel mais proacuteximo e ηp eacute o espaccedilamento

local da amostragem em p acima citado) Ou seja sendo x um ponto qualquer p

o surfel mais proacuteximo a x ηp eacute o espaccedilamento local da amostragem em p se

desenharmos uma esfera com centro x e raio igual a x-p - ηp temos que

todos os pontos xrsquo que estatildeo dentro da esfera teratildeo a mesma classificaccedilatildeo de x

Desta forma o nuacutemero de vezes que a classificaccedilatildeo eacute feita (pesquisando-se o

surfel mais proacuteximo ao ponto e usando a Regra 2) diminui em ateacute 90 Assim

em geral a classificaccedilatildeo de um surfel eacute obtida a partir do seu surfel vizinho

Dados

S1 a superfiacutecie MLS de contorno que define o modelo A

S2 a superfiacutecie MLS de contorno que define o modelo B

P1 o conjunto de surfels que representa a superfiacutecie S1

P2 o conjunto de surfels que representa a superfiacutecie S2

Ωp1 (x) a classificaccedilatildeo do ponto p em relaccedilatildeo a uma amostragem P1

Q1 o subconjunto de P1 que vai compor o resultado

Ωp2 (x) a classificaccedilatildeo do ponto p em relaccedilatildeo a uma amostragem P2

Q2 o subconjunto de P2 que vai compor o resultado

Os conjuntos Q1 e Q2 satildeo obtidos por meio da Tabela 1 mostrada abaixo

Operaccedilotildees Booleanas com Pontos 42

Tabela 1 Classificaccedilatildeo para operaccedilotildees booleanas

Para o tratamento de interseccedilatildeo neste meacutetodo satildeo computados pontos

que caem exatamente na curva de interseccedilatildeo e estes satildeo acrescentados ao

modelo resultado Estes pontos satildeo determinados de forma que a densidade da

amostragem vai crescendo agrave medida que os surfels se aproximam da curva de

interseccedilatildeo e convergem para este ponto de interseccedilatildeo como mostra a Figura

13

(a) (b) (c)

Figura 13 - Os novos surfels satildeo colocados exatamente na curva de interseccedilatildeo

e convergem para o ponto de interseccedilatildeo

A Figura 14 mostra o processo de encontrar os surfels que caem nesta

curva de interseccedilatildeo Inicialmente satildeo encontrados todos os pontos de Q1 e Q2

que estatildeo proacuteximos agrave curva de interseccedilatildeo por meio da funccedilatildeo de distacircncia do

operador de projeccedilatildeo MLS Em seguida procura-se todos os pares mais

proacuteximos (q1 є Q1 q2 є Q2 ) e computa-se o ponto q na curva de interseccedilatildeo da

seguinte forma (veja a Figura 14)Seja r o ponto na linha de interseccedilatildeo dos dois

planos tangentes em q1 e q2 e que estaacute mais proacuteximo a estes dois pontos isto eacute

que minimiza a distacircncia ||r-q1|| + ||r-q2|| r eacute a primeira aproximaccedilatildeo de q e agora

pode ser projetado sobre S1 e S2 para obter dois novos pontos de partida q1rsquo e q2

rsquo

para a iteraccedilatildeo Este procedimento pode ser repetido iterativamente ateacute que os

pontos q1 e q2 convirjam ao ponto q na curva de interseccedilatildeo Normalmente este

processo requer menos de trecircs iteraccedilotildees

Operaccedilotildees Booleanas com Pontos 43

(a) (b)

(c)

Figura 14 (a) Suponhamos a reta que eacute a interseccedilatildeo do plano tangente a S1 em q1 e o

plano tangente a S2 em q2 O ponto r eacute o ponto desta reta que estaacute mais proacuteximo a q1 e

q2 (b) r eacute projetado sobre S1 e S2 obtendo-se q1acute e q2acute dois novos pontos de partida

para nova iteraccedilatildeo (c) A nova iteraccedilatildeo gera r que eacute uma aproximaccedilatildeo melhor de q

Pauly faz o tratamento de arestas vivas em tempo de renderizaccedilatildeo Ele

faz uma alteraccedilatildeo no renderizador Marca os surfels de interseccedilatildeo e ao

renderizaacute-los satildeo cortados para gerar uma aresta viva

44 Validade da Regra 2

Os dois meacutetodos analisados nesta dissertaccedilatildeo utilizam a seguinte regra

para a classificaccedilatildeo de um surfel

Regra 2 dado um volume V determinado por uma superfiacutecie de contorno

S uma amostragem P da superfiacutecie S um ponto x qualquer um ponto p є P que

eacute a amostra mais proacutexima a x um vetor ny normal a S em p e orientado para

fora de S temos que (x ndash p) np gt 0 x notinV

Em [16] eacute colocado que esta regra eacute tirada da seguinte propriedade da

geometria diferencial (aqui chamada Propriedade 1)

Propriedade 1 Dado um volume V determinado por uma superfiacutecie de

contorno S contiacutenua e duplamente diferenciaacutevel um ponto x qualquer um ponto

Operaccedilotildees Booleanas com Pontos 44

y є S que eacute o ponto de S mais proacuteximo a x um vetor ny normal a S em y e

orientado para fora de S temos que (x ndash y) ny gt 0 x notinV

A Figura 15 ilustra esta propriedade

Figura 15 Para verificar se o ponto x estaacute fora de um contorno C encontra-se o ponto y

de C Se o produto interno entre a normal em y e o vetor que liga y a x for maior que

zero entatildeo x estaacute fora de C senatildeo estaacute dentro de C

Pauly assume que tendo uma amostragem P da superfiacutecie S podemos

usar a Propriedade 1 substituindo y por p o surfel mais proacuteximo ao ponto x (x ndash

p) np gt 0 x notinV (Regra 2) Esta amostragem P em seu trabalho eacute

(aproximadamente) uma ldquoamostragem adequadardquo Tambeacutem seu tratamento de

interseccedilatildeo cria uma aproximaccedilatildeo dela (seccedilatildeo 43) Empiricamente a

ldquodiscretizaccedilatildeo da propriedaderdquo eacute vaacutelida a partir desta suposiccedilatildeo Mas isso natildeo foi

demonstrado teoricamente em seu trabalho

Pauly coloca em [16] que natildeo existe ainda uma teoria matemaacutetica rigorosa

de amostragem anaacuteloga a teoria de Fourier para superfiacutecies discretas

A melhor aproximaccedilatildeo teoacuterica para esta aacuterea eacute o uso do Eixo Medial que

foi colocado em [10] Vamos descrever este trabalho brevemente nesta seccedilatildeo

Este trabalho apresenta um algoritmo de reconstruccedilatildeo de superfiacutecie que parte de

uma amostragem adequada (abaixo definida) de pontos e obteacutem uma malha

que eacute topologicamente equivalente agrave superfiacutecie do objeto e agrave medida que a

densidade da amostragem cresce a saiacuteda converge para esta superfiacutecie

Para definir amostragem adequada o trabalho parte do conceito de Eixo

Medial

Operaccedilotildees Booleanas com Pontos 45

ldquoEixo Medialrdquo de uma superfiacutecie 2D posicionada no R3 eacute o conjunto

(fechado) de pontos pi para os quais buscando-se o ponto da superfiacutecie que

estaacute mais proacuteximo a pi mais de um ponto pertencentes a esta superfiacutecie satildeo

encontrados A Figura 16 abaixo ilustra o Eixo Medial em 2D

Figura 16 [10] As curvas de cor mais clara satildeo o Eixo Medial da curva em preto

Em duas dimensotildees os veacutertices de Voronoi de uma amostragem densa

aproximam o ldquoEixo Medialrdquo da amostragem (mas esta propriedade natildeo se

estende a 3D) A Figura 17 mostra o Eixo Medial em 3D

Figura 17 [10] Em 3D geralmente o Eixo Medial eacute uma superfiacutecie 2D (em cor mais

clara) Aqui o quadrado eacute o Eixo Medial da superfiacutecie transparente que o contorna

Podemos definir agora a amostragem adequada da seguinte forma

Supondo uma superfiacutecie suave que quer dizer uma 2-manifold duplamente

diferenciaacutevel posicionada no R3 uma ldquoamostragem adequadardquo desta superfiacutecie eacute

aquela na qual a densidade da amostragem eacute (pelo menos) inversamente

proporcional agrave distacircncia ao ldquoEixo Medialrdquo A Figura 18 mostra uma amostragem

adequada

Operaccedilotildees Booleanas com Pontos 46

Figura 18 [10] A figura mostra o diagrama de Voronoi de uma amostragem de pontos S

Da mesma forma que o a amostragem aproxima a curva os veacutertices de Voronoi

aproximam o Eixo Medial

Na praacutetica na reconstruccedilatildeo da superfiacutecie uma aproximaccedilatildeo deste ldquoEixo

Medialrdquo eacute computada (devido agrave dificuldade de computaacute-lo exatamente e em

alguns casos ateacute impossibilidade)

Melhorias Propostas 47

5 Melhorias Propostas

No capiacutetulo 4 apresentamos dois meacutetodos que realizam operaccedilotildees

booleanas em modelos por pontos o meacutetodo de Adams e Dutreacute [2] e o meacutetodo

de Pauly[3] Para esta dissertaccedilatildeo usamos o meacutetodo de Adams e Dutreacute [2] e

propomos as seguintes melhorias

- Alteramos o momento em que eacute feita a classificaccedilatildeo da octree Fazemos

esta classificaccedilatildeo durante a sua criaccedilatildeo Os noacutes filhos de um noacute pai P qualquer

satildeo classificados logo apoacutes a criaccedilatildeo de todos estes filhos de P

independentemente do restante da octree ter sido criada Isso pode ser feito

porque a octree eacute construiacuteda na ordem raiz-esquerda-direita (preorder

traversal) e portanto apoacutes todos os filhos de um noacute pai serem criados a parte

necessaacuteria da octree para a classificaccedilatildeo destes filhos jaacute estaacute criada

- A classificaccedilatildeo da octree eacute otimizada classificando-se os cantos dos seus

noacutes como dentro ou fora do modelo Na classificaccedilatildeo de um noacute n1 a partir de seu

vizinho n2 se os cantos que satildeo comuns a n1 e n2 tiverem a mesma

classificaccedilatildeo esta seraacute dada ao noacute Assim diminuiacutemos o nuacutemero de pesquisas

pelo surfel mais proacuteximo que eacute a parte criacutetica da classificaccedilatildeo dos noacutes da octree

em termos de tempo de processamento

- Acrescentamos um valor miacutenimo (maior que zero) para o nuacutemero de

surfels contidos em um noacute que eacute uma das condiccedilotildees de parada na criaccedilatildeo da

octree Verificamos que desta forma diminui-se a chance de erro na classificaccedilatildeo

de partes criacuteticas como ldquoarestas vivasrdquo

Uma comparaccedilatildeo entre a nossa implementaccedilatildeo e a de Pauly tambeacutem seraacute

feita no capiacutetulo 6

51 Descriccedilatildeo do algoritmo

O algoritmo implementado para esta dissertaccedilatildeo baseado no meacutetodo de

Adams e Dutreacute [2] pode ser dividido nas seguintes partes Criaccedilatildeo e

classificaccedilatildeo de uma octree para cada modelo Teste DentroFora Criaccedilatildeo do

modelo resultado Natildeo foi implementado tratamento especial algum de

interseccedilatildeo para o nosso plugin As proacuteximas seccedilotildees apresentam estas partes

Melhorias Propostas 48

511 Criaccedilatildeo e classificaccedilatildeo de uma octree para cada modelo

As ideacuteias do algoritmo satildeo aqui ilustradas em 2D mas a extensatildeo delas

para 3D eacute feita facilmente

Para cada modelo a octree eacute criada e classificada da seguinte forma

Figura 19-Quadtree classificada Os noacutes mais escuros estatildeo fora do modelo os mais claros dentro e os em tom intermediaacuterio satildeo noacutes de contorno

Gera-se uma ldquocaixa envolventerdquo do modelo contendo todos os surfels e

cria-se o noacute raiz da octree que corresponde a esta ldquocaixa envolventerdquo Este noacute

raiz eacute subdividido em oito filhos e seus surfels satildeo distribuiacutedos entre eles Ao

inveacutes de testarmos os valores de xy e z para cada surfel a fim de determinar

para qual filho ele iraacute utilizamos listas auxiliares Primeiro os surfels satildeo

subdivididos em dois grupos pelos valores de x e armazenados em uma lista

auxiliar Em seguida cada uma das listas eacute subdividida pelo valor de y e as

quatro listas obtidas seratildeo subdivididas pelo valor de z Ao final teremos 8 listas

de surfels cada uma delas pertencente a um filho

Cada noacute seraacute entatildeo novamente subdividido enquanto contiver um nuacutemero

de surfels gt nmin (valor preacute-definido) ou enquanto a profundidade da aacutervore lt pmax

(valor preacute-definido) Na figura 19 pmax = 3 e nmin = 3

Melhorias Propostas 49

Figura 20-O noacute cheio eacute dividido em trecircs partes agrave esquerda a regiatildeo estaacute dentro do modelo agrave direita estaacute fora e entre as duas linhas que dividem o noacute estaacute a regiatildeo que conteacutem os surfels

Os noacutes cheios recebem um tratamento especial Eles satildeo subdivididos em

trecircs partes da seguinte forma uma que estaacute fora do modelo outra que estaacute

dentro e uma que conteacutem os surfels Esta subdivisatildeo eacute feita por meio da criaccedilatildeo

de dois planos paralelos que dividem o noacute Para determinar estes planos

calcula-se o vetor nm igual agrave meacutedia das normais dos surfels do noacute nm = sum ns

sum ns onde ns eacute a normal de cada surfel do noacute Em seguida encontra-se o

surfel com maior produto interno entre a sua normal e a normal meacutedia

d1=Max(nm ٠ ns) Este surfel juntamente com a normal meacutedia define um dos

planos Encontra-se tambeacutem o surfel com menor produto interno entre a sua

normal e a normal meacutedia d2=Min (nm ٠ ns) Este surfel juntamente com a normal

meacutedia define o outro plano (Figura 20) Se o noacute conteacutem surfels de superfiacutecies de

orientaccedilotildees diferentes ele natildeo seraacute subdividido ou seja os planos coincidiratildeo

com os planos que delimitam o proacuteprio noacute Este teste foi implementado da

seguinte forma escolhe-se um surfel qualquer do noacute Calcula-se o produto

interno entre a normal deste surfel e as outras normais dos outros surfels deste

noacute Se algum produto interno for menor que zero este noacute natildeo seraacute subdividido

Apoacutes a etapa de subdivisatildeo classificam-se os oito cantos deste noacute como

dentro ou fora do modelo por meio da classificaccedilatildeo de um ponto que

descreveremos na sub-seccedilatildeo 5111

Melhorias Propostas 50

a b

c d

Figura 21-O noacute a eacute classificado pelo noacute c o noacute d tambeacutem eacute classificado pelo noacute c a classificaccedilatildeo do noacute a eacute propagada para o noacute b

Jaacute os noacutes vazios da octree seratildeo classificados como ldquodentrordquo ou ldquoforardquo do

modelo da seguinte forma cada noacute folha vazio eacute classificado a partir de um de

seus irmatildeos vizinhos adjacentes Se ele possuir um vizinho adjacente cheio ele

seraacute classificado por este vizinho se natildeo possuir os vizinhos adjacentes seratildeo

classificados primeiro e ele teraacute esta mesma classificaccedilatildeo (Figura 21) Como tem

que existir sempre pelo menos um noacute cheio entre os filhos de um noacute pai entatildeo

sempre esta classificaccedilatildeo poderaacute ser feita Com a classificaccedilatildeo de todos os

filhos tem-se tambeacutem a classificaccedilatildeo dos cantos do noacute pai

Mf03c003fmx a b

Figura 22-Os cantos a e b do noacute cheio possuem a mesma classificaccedilatildeo fora do modelo Esta classificaccedilatildeo foi dada ao noacute vazio adjacente

Melhorias Propostas 51

Para classificar um noacute vazio por meio de um noacute cheio verificam-se os

cantos comuns destes dois noacutes se todos os cantos tiverem a mesma

classificaccedilatildeo esta seraacute dada ao noacute vazio (Figura 22) Se houver classificaccedilotildees

diferentes escolhe-se o surfel do noacute cheio mais proacuteximo ao noacute vazio faz-se o

produto interno entre a normal deste surfel e o vetor que liga o centro do noacute

cheio ao centro do noacute vazio (ou o vetor que liga o surfel ao centro do noacute vazio)

Se o produto interno for maior que zero o noacute eacute classificado como ldquoforardquo senatildeo eacute

classificado como ldquodentrordquo Para encontrar o surfel (pertencente a um noacute cheio)

mais proacuteximo ao noacute vazio existem dois casos

- O noacute cheio eacute folha percorre-se toda a lista de surfels e escolhe o surfel

mais proacuteximo da fronteira entre o noacute cheio e o vazio

- O noacute cheio natildeo eacute um noacute folha percorrem-se os filhos do noacute cheio ou seja

esta pesquisa eacute feita descendo na octree a partir do noacute cheio procurando o

surfel mais proacuteximo agrave fronteira do pai com o noacute vazio a ser classificado

Classificando o centro do noacute vazio todo o noacute deve ter a mesma

classificaccedilatildeo pois este noacute natildeo conteacutem surfels Para encontrar o surfel do noacute

vazio mais proacuteximo da fronteira entre o noacute cheio e o vazio basta testar o valor da

coordenada se a fronteira eacute o lado direito do noacute cheio escolhe-se o surfel com

maior coordenada lsquoxrsquo se eacute o lado esquerdo escolhe-se o surfel com menor lsquoxrsquo

se lado superior surfel com maior lsquoyrsquo etc A seguir apresentamos a classificaccedilatildeo

de um ponto qualquer pertencente a um noacute cheio

Figura 23- Quadtree classificada

Melhorias Propostas 52

5111 Classificaccedilatildeo de um ponto de um noacute cheio

Figura 24 [2] A normal n eacute a normal meacutedia e os surfels s1 e s2 juntamente com a normal

n definem as retas que dividem o noacute O ponto a estaacute fora do modelo e o ponto b estaacute

dentro do modelo

Para um ponto localizado dentro do noacute faz-se o seguinte teste se o noacute foi

dividido testa-se de acordo com a divisatildeo do noacute se o ponto estaacute na parte do noacute

que estaacute dentro do modelo ele eacute classificado como ldquodentrordquo se o ponto estaacute na

parte que estaacute fora do modelo ele eacute classificado como ldquoforardquo (Figura 24) se o

ponto estaacute na parte que conteacutem os surfels encontra-se o surfel s pertencente ao

noacute mais proacuteximo do ponto e o classifica de acordo com s seja ns a normal em s

cs a coordenada de s cp a coordenada do ponto Se (cp - cs )٠ ns gt 0 o ponto

seraacute classificado como ldquoforardquo Senatildeo seraacute classificado como ldquodentrordquo

Se o noacute natildeo foi dividido em planos esta classificaccedilatildeo a partir do surfel

mais proacuteximo seraacute sempre feita

512 Teste DentroFora

Melhorias Propostas 53

Figura 25-Duas circunferecircncias e suas quadtrees correspondentes

O Teste DentroFora classifica os surfels de um modelo como dentro ou

fora de outro modelo ou na sua interseccedilatildeo Este teste foi aqui implementado

exatamente como foi proposto em Adams e Dutreacute [2] exceto que natildeo foi

implementado o meacutetodo TINN - Triangle Inequality Nearest Neighbour [19]

Cada octree eacute percorrida verificando-se se os seus noacutes ou surfels estatildeo dentro

fora ou no contorno do outro modelo (Figura 25) Sejam A e B duas octrees e

queremos classificar a octree A As duas octrees (AB) satildeo percorridas partindo

da raiz

Para cada noacute de A existem quatro casos (Figura 26) Para testar estas

situaccedilotildees os boxes dos noacutes satildeo aumentados de rmax o raio do maior surfel do

modelo Isto eacute feito para compensar o fato de que o surfel natildeo eacute apenas um

ponto mas sim considerado como um disco

Os quatro casos satildeo

Se o noacute de A natildeo intersecta B entatildeo todos os surfels deste noacute satildeo

classificados como fora

Se o noacute de A intersecta apenas noacutes de B que estatildeo fora do modelo

todos os surfels deste noacute satildeo fora

Se o noacute de A intersecta apenas noacutes de B que estatildeo dentro do modelo

todos os surfels deste noacute satildeo dentro

Melhorias Propostas 54

Se o noacute de A intersecta noacutes de B que estatildeo dentro e tambeacutem noacutes de B

que estatildeo fora testa-se se este noacute de A eacute ou natildeo folha Se natildeo for folha

percorre-se os filhos deste noacute de A ateacute encontrar um noacute folha cheio que

intersecta B Para cada surfel sa deste noacute folha de A encontra-se o surfel de B

mais proacuteximo e classifica-se a coordenada de sa da forma apresentada na seccedilatildeo

5111 Seja sb o surfel usado na classificaccedilatildeo de sa Se os discos de sb e sa

se intersectam sa eacute classificado como ldquointerseccedilatildeordquo

(a) (b)

(c) (d)

Figura 26- a modelos natildeo se intersectam b modelo intersecta noacutes fora c modelo intersecta apenas noacutes dentro d modelo intersecta noacutes dentro e noacutes fora

513 Criaccedilatildeo do modelo resultado

Um novo modelo eacute criado com os seguintes surfels (de acordo com a

operaccedilatildeo booleana escolhida pelo usuaacuterio - veja Regra 1 da seccedilatildeo 41)

Uniatildeo - surfels de A que estatildeo fora de B + surfels de B que estatildeo fora de A

Melhorias Propostas 55

Interseccedilatildeo - surfels de A que estatildeo dentro de B + surfels de B que estatildeo

dentro de A

Diferenccedila A-B - surfels de A que estatildeo fora de B + surfels de B que estatildeo

dentro de A (com orientaccedilatildeo invertida)

Como natildeo foi implementado tratamento especial algum de interseccedilatildeo para

o nosso plugin os surfels que se intersectam satildeo mantidos no modelo resultado

final sem modificaccedilotildees

Descrito o algoritmo vejamos a seguir a sua implementaccedilatildeo

52 Implementaccedilatildeo

Este algoritmo foi implementado na forma de um plugin para o software

PointShop 3D [11] Este plugin foi desenvolvido na linguagem C e no sistema

operacional Windows

A escolha deste tipo de implementaccedilatildeo permitiu-nos usar o software

PointShop para os testes do algoritmo Estes testes foram feitos com os modelos

disponibilizados para o PointShop [11] Nesta seccedilatildeo apresentaremos o software

PointShop e as principais estruturas de dados usadas em nosso plugin

O Pointshop eacute um software aberto com seu coacutedigo disponiacutevel e preparado

para trabalhar com plugins Eacute um software de ediccedilatildeo de modelos 3D por pontos

Ele permite aleacutem de visualizar o modelo alterar as suas caracteriacutesticas como

cor brilho e fazer mapeamento de textura iluminaccedilatildeo filtragem (Figura 27)

Melhorias Propostas 56

Figura 27-Software PointShop 3D com dois modelos carregados na sua cena

Aleacutem disso pode-se criar uma cena com vaacuterios modelos e visualizaacute-los de

qualquer ponto de vista Implementa o virtual trackball para rotacionaacute-los e

transladaacute-los Usa uma iluminaccedilatildeo simples direcional A sua arquitetura eacute

extensiacutevel permite que o usuaacuterio adicione seus proacuteprios componentes ao

sistema Possui trecircs tipos de componentes

ldquoToolsrdquo fornece funcionalidades para ediccedilatildeo interativa de superfiacutecie Satildeo

disponibilizados na ldquotoolbarrdquo

Plugins fornece funcionalidades para processar em um soacute passo

modelos ou partes deles selecionadas Satildeo disponibilizados no menu ldquoPluginsrdquo

Renderes fornece funcionalidades de display para os modelos

Para esta dissertaccedilatildeo foi escolhida a construccedilatildeo do componente Plugin

por adequar-se agrave nossa proposta e ser a mais simples de ser construiacuteda O

PointShop [11] jaacute conteacutem uma tool que executa operaccedilotildees booleanas e

deformaccedilatildeo free-form sobre os modelos carregados na cena usando o meacutetodo

de Pauly [3] apresentado no capiacutetulo 4 O nosso plugin Operaccedilotildees Booleanas

implementa o algoritmo descrito na seccedilatildeo anterior baseado na proposta de

Melhorias Propostas 57

Adams e Dutreacute [2] Uma comparaccedilatildeo entre o nosso plugin e a tool de Pauly [3] eacute

feita no capiacutetulo 6

Figura 28-Menu do PointShop com o plugin e as opccedilotildees para operaccedilotildees booleanas

Para se executar o plugin o usuaacuterio precisa carregar dois modelos na

cena do PointShop acionar o plugin informando a operaccedilatildeo que seraacute executada

O plugin executaraacute o algoritmo acima proposto e carregaraacute o resultado na cena

do Pointshop retirando os modelos anteriores

521 Estruturas de Dados

Como vimos o software PointShop [11] trabalha com modelos por pontos

Um modelo deste software descrito na seccedilatildeo 42 conteacutem todas as informaccedilotildees

que o algoritmo proposto em Bart [2] necessita Abaixo relacionamos as

Melhorias Propostas 58

principais estruturas de dados do PointShop usadas no plugin e as principais

estruturas de dados do nosso plugin

As principais classes do PointShop usadas no plugin satildeo

Classe Scene

Classe Objects

Classe SurfelColections

Classe Surfel

Classe StatusBar

Classe Transformer

A hierarquia de dados eacute a seguinte a Scene conteacutem vaacuterios Objects os

quais conteacutem SurfelColections Cada SurfelColections conteacutem Surfels que

suportam uma ou mais propriedades tais como cor difusa cor especular

Classe Scene Classe que representa uma cena que conteacutem modelos

Classe Object Um modelo eacute representado pela classe Object que

conteacutem uma SurfelCollection e as matrizes de transformaccedilatildeo para rotaccedilatildeo

escala e translaccedilatildeo Cada Object eacute identificado pelo seu nome que eacute uacutenico na

Scene O meacutetodo getUniqueName retorna um nome uacutenico Cada Object tem sua

proacutepria matriz de transformaccedilatildeo que pode ser modificada com setRotation

rotate setPosition translate setScale e scale Objects podem ser copiados com

copy Objects consiste em um conjunto de surfels os quais podem ser

recuperados pela getSurfelCollection O Object pode ser ativado com

setActiveObject e recuperado com getActiveObject

Objects podem ser adicionados ou removidos com addObject e

removeObject Os Objects podem ser obtidos pela getFirstObject e

getNextObject

Classe SurfelCollection representa o conjunto de surfels de um modelo

Cada surfelcollection consiste em um conjunto de surfels (SurfelInterface) de

tamanho obtido por getNofSurfels Os surfels podem ser recuperados com

getFirstSurfel getCurrentSurfel e getNextSurfel

A SurfelCollection conteacutem um PropertyDescriptor e uma SurfelList

A SurfelList eacute uma lista duplamente encadeada de surfels Possui os

atributos firstSurfel lastSurfel currentSurfel que satildeo ponteiros para uma

SurfelInterface nSurfels que eacute o nuacutemero de Surfels

A SurfelInterface define a API para os surfels que satildeo os menores

elementos que compotildeem um Object Podem ser considerados como pontos com

uma normal que define a orientaccedilatildeo do ciacuterculo (ou elipse) que seraacute desenhado

Melhorias Propostas 59

tatildeo logo o surfel seja renderizado Tem como atributos dois ponteiros (next e

prev) para SurfelInterface

PropertyDescriptor consiste em ateacute 32 valores descrevendo quais as

propriedades a SurfelInterface suporta

Classe Surfel classe que representa o surfel

Classe StatusBar classe que imprime mensagens na tela Os plugins

podem mandar mensagens para o usuaacuterio pela StatusBar

Mensagens texto podem ser impressas com showMessage O progresso

de uma operaccedilatildeo pode ser indicado com setProgress ou resetProgress

Classe Transformer representa a transformaccedilatildeo entre sistemas de

coordenadas Esta classe fornece meacutetodos para transformar pontos e vetores

entre os diferentes sistemas de coordenadas do Pointshop

A seguir apresentamos as principais estruturas de dados do plugin

Operaccedilotildees Booleanas

As principais estruturas de dados do plugin satildeo boundingbox tree no

lista_surfel surfel

Boundingbox conteacutem dois pontos 3D que definem uma caixa que conteacutem

o modelo um ponto com menores coordenadas xy e z e outro ponto com

maiores xyz

Tree representa a octree do modelo Cada registro conteacutem um ponteiro

para um noacute e oito ponteiros para as 8 octrees filhas

No representa um noacute da octree Conteacutem os seguintes dados

- localizaccedilatildeo do noacute que eacute o canto inferior esquerdo do noacute

- lista_surfel (preenchida apenas para noacutes folha cheios)

- quantidade de surfels do noacute

- classificaccedilatildeo do noacute como dentro fora ou contorno

- classificaccedilatildeo do noacute em relaccedilatildeo a outro modelo

- indica se o noacute eacute folha ou natildeo

- vetor que eacute a meacutedia das normais dos surfels do noacute

- ponto que eacute a meacutedia das localizaccedilotildees dos surfels do noacute

- surfel que tem (entre todos os surfels do noacute) o maior produto interno

entre a sua normal e a normal meacutedia

- surfel que tem (entre todos os surfels do noacute) o menor produto interno

entre a sua normal e a normal meacutedia

- produto interno maacuteximo e miacutenimo entre as normais dos surfels do noacute e a

normal meacutedia deste noacute

Melhorias Propostas 60

- indica se o noacute conteacutem surfels com normais em sentido oposto (produto

interno entre elas eacute menor que zero)

- classificaccedilatildeo dos oito cantos do noacute

lista_surfels lista em que cada registro conteacutem um apontador para um

surfel e um apontador para o proacuteximo registro

surfel representa o surfel da octree Conteacutem a classificaccedilatildeo em relaccedilatildeo a

outro modelo e um ponteiro para o surfel do Poinshop

Resultados 61

6 Resultados

Neste capiacutetulo apresentamos os testes realizados com o plugin para o

PointShop implementado para esta dissertaccedilatildeo a comparaccedilatildeo deste plugin com

o plugin de Pauly [3] e a comparaccedilatildeo entre o meacutetodo de Adams e Dutreacute [2] e o

meacutetodo de Pauly [3]

61 Testes

Os testes foram feitos em um PC x86 Family 6 261600 KB de RAM sem

placa graacutefica sistema operacional Windows 2000 O plugin foi implementado na

linguagem C

Os modelos usados para os testes satildeo modelos disponibilizados no

PointShop [11] Vale lembrar que o meacutetodo implementado em nosso plugin eacute

restrito a modelos soacutelidos e portanto foram usados apenas estes modelos

soacutelidos para os testes

O modelo na Figura 29 que eacute um dos modelos disponibilizados no

PointShop [11] foi usado para mostrar o resultado das operaccedilotildees realizadas

pelo plugin implementado nesta dissertaccedilatildeo O modelo Igea eacute um modelo soacutelido

que conteacutem 134345 surfels

Resultados 62

Figura 29-Modelo do PointShop Igea

Para realizar as operaccedilotildees este modelo foi carregado na cena do

PointShop duas vezes e um deles colorido de vermelho As Figuras 30 31 32

mostram o resultado da operaccedilatildeo de uniatildeo interseccedilatildeo e diferenccedila

respectivamente Os nuacutemeros de surfels dos modelos resultantes satildeo mostrados

na Tabela 2

Resultados 63

Figura 30-Resultado da uniatildeo de duas Igeas

Figura 31-Resultado da interseccedilatildeo de duas Igeas

Resultados 64

Figura 32-Resultado da diferenccedila entre duas Igeas

Tabela 2-Nuacutemero de surfels dos modelos resultantes

Observamos que o nuacutemero de surfels dos modelos resultantes estaacute

coerente com as figuras dos seus modelos

Para avaliar o tempo de processamento das operaccedilotildees foram realizados

vaacuterios testes com o objetivo de obter uma meacutedia dos tempos de realizaccedilatildeo de

cada operaccedilatildeo Tambeacutem foram armazenados os tempos da criaccedilatildeo das duas

octrees e da classificaccedilatildeo de todos os surfels dos dois objetos (como dentro ou

fora do outro modelo) Estes testes foram feitos usando o modelo Igea A meacutedia

dos tempos de processamento foi calculada e os resultados satildeo mostrados na

Tabela 3 Verificamos que o maior tempo gasto eacute para criaccedilatildeo das octrees

Verificamos tambeacutem que este resultado apresentado eacute similar ao resultado

verificado empiricamente com o plugin de Pauly [3] Os tempos gastos para

realizar as operaccedilotildees satildeo similares e o maior tempo gasto no plugin de Pauly

tambeacutem eacute para inicializaccedilatildeo de suas estruturas de dados que incluem a kd-tree

Operaccedilatildeo Nuacutemero de surfels do modelo resultado

Uniatildeo 189715

Interseccedilatildeo 72225

Diferenccedila 134552

Resultados 65

Operaccedilatildeo Criaccedilatildeo das

Octrees (seg)

Classificaccedilatildeo

(seg)

Criaccedilatildeo do

resultado (seg)

Total (seg)

Uniatildeo 39375 1324 18925 7154

Interseccedilatildeo 38585 1585 09547 63982

Diferenccedila 399875 1504 1729 729475

Tabela 3- Meacutedia dos tempos de processamento para as operaccedilotildees com duas Igeas

Com o objetivo de expor melhor os resultados deste trabalho

apresentamos abaixo mais um teste das operaccedilotildees booleanas usando o nosso

plugin Os modelos usados para este segundo teste satildeo o Max Planck e o Male

ambos modelos soacutelidos disponibilizados no PointShop Estes modelos satildeo

mostrados nas figura 33 e 34

O primeiro Max Planck conteacutem 52809 surfels

Figura 33-Modelo do PointShop MaxPlanck

O segundo modelo abaixo Male conteacutem 148138 surfels

Resultados 66

Figura 34-Modelo do PointShop Male

As Figuras 353637 mostram o resultado da operaccedilatildeo de uniatildeo interseccedilatildeo

e diferenccedila respectivamente usando os dois modelos acima Podemos observar

pela figura 35 que o resultado da operaccedilatildeo de diferenccedila neste caso gerou um

modelo resultado com trecircs partes desconexas Os nuacutemeros de surfels de cada

modelo resultado satildeo mostrados na Tabela 5

Figura 35- Resultado da Uniatildeo do modelo Male com MaxPlanck

Resultados 67

Figura 36-Resultado da interseccedilatildeo do modelo Male com o MaxPlanck

Figura 37-Resultado da diferenccedila do modelo Male do modelo MaxPlanck

As meacutedias de tempos de processamento foram calculadas da mesma

forma que o primeiro teste com o modelo Igea acima apresentado Os

resultados satildeo mostrados na Tabela 4 Podemos observar que este teste

Resultados 68

apresenta tempos um pouco menores que o teste com o modelo Igea Isto se

deve ao fato de que o modelo MaxPlanck ser significativamente menor que o

modelo Igea MaxPlanck possui 52809 surfels e Igea conteacutem 134345 surfels

Operaccedilatildeo Criaccedilatildeo das

Octrees (seg)

Classificaccedilatildeo

(seg)

Criaccedilatildeo do

resultado (seg)

Total

(seg)

Uniatildeo 3012 1254 102 5285

Interseccedilatildeo 2985 0901 0861 4747

Diferenccedila 2965 0911 0791 4667

Tabela 4-Tempo de processamento das operaccedilotildees com os modelos MaxPlanck e Male

Operaccedilatildeo Nuacutemero de surfels do resultado

Uniatildeo 126532

Interseccedilatildeo 88414

Diferenccedila 77635

Tabela 5-Nuacutemero de surfels dos modelos resultados das operaccedilotildees com os modelos MaxPlanck e Male

Em seguida apresentaremos uma comparaccedilatildeo entre o nosso plugin e o

plugin de Pauly[3] e tambeacutem uma comparaccedilatildeo entre o meacutetodo de Adams e Dutreacute

[2] e o meacutetodo de Pauly [3]

62 Comparaccedilatildeo entre os dois meacutetodos que realizam operaccedilotildees booleanas

A comparaccedilatildeo entre os meacutetodos de Pauly[3] e de Adams e Dutreacute foi feita

em termos de tempo de processamento e em termos conceituais Em termos de

tempo de processamento comparamos o plugin de Pauly[3] com o nosso plugin

Em termos de tempo de processamento verifica-se empiricamente que os

dois meacutetodos apresentam tempos bastante similares Entretanto o tempo de

processamento do algoritmo aqui implementado ainda pode ser melhorado com

Resultados 69

o uso do meacutetodo TINN [19] que foi proposto em Adams[2] - para otimizar a

pesquisa do surfel mais proacuteximo a um ponto que estaacute localizado na regiatildeo de um

noacute que conteacutem surfels - veja seccedilatildeo 42 O uso deste meacutetodo natildeo foi

implementado para este trabalho e a sua implementaccedilatildeo melhoraria o tempo de

resposta do algoritmo Aleacutem disso o trabalho de Sara F Frisken [12] citado no

capiacutetulo 2 apresenta uma otimizaccedilatildeo no uso de octrees que pode ser

incorporada no algoritmo implementado neste trabalho

Em termos conceituais vamos fazer a comparaccedilatildeo do uso do que

chamamos aqui de Regra 2 do tratamento de interseccedilatildeo e do tratamento de

ldquoarestas vivasrdquo

Como vimos na seccedilatildeo 41 tanto o algoritmo implementado nesta

dissertaccedilatildeo baseado no trabalho de Adams e Dutreacute como o meacutetodo de Pauly

[3] parte do que chamamos aqui de Regra 2 para realizar operaccedilotildees booleanas

com pontos Mas cada um destes meacutetodos daacute um tratamento diferente para o

uso desta regra

O meacutetodo de Pauly usa a Regra 2 para classificaccedilatildeo de cada ponto ou de

cada surfel Para classificar um surfel de B sb como dentro ou fora de A eacute

encontrado o surfel de A sa mais proacuteximo a sb e sb eacute classificado a partir de sa

Para encontrar sa Pauly utiliza uma kd-tree Como esta pesquisa para encontrar

sa eacute cara (mesmo usando uma kd-tree) Pauly utiliza uma esfera que conteacutem

pontos com a mesma classificaccedilatildeo (seccedilatildeo 432) e diminui em 90 este nuacutemero

de pesquisas Pauly utiliza tambeacutem a representaccedilatildeo impliacutecita MLS (Moving Least

Squares) para casos em que a Regra 2 poderia falhar e para tratamento de

interseccedilotildees Entretanto o nuacutemero destes casos em que a Regra 2 poderia falhar

eacute muito pequeno E a representaccedilatildeo MLS natildeo eacute uma estrutura simples de ser

implementada Portanto natildeo encontramos vantagens em usar MLS para estes

casos O meacutetodo de Adams e Dutreacute natildeo trata estes casos e na praacutetica

apresenta resultados bastante satisfatoacuterios como foi mostrado Portanto

consideramos que valeria a pena fazer algum tratamento especial para estes

casos se fosse um procedimento simples Para a execuccedilatildeo do algoritmo de

Pauly o uso de MLS natildeo interfere significativamente porque a construccedilatildeo desta

representaccedilatildeo natildeo eacute feita somente para realizar operaccedilotildees booleanas Os testes

empiacutericos que fizemos com o algoritmo de Pauly natildeo incluem a construccedilatildeo desta

representaccedilatildeo

Aparentemente os dois algoritmos satildeo bastante parecidos um usa octrees

e o outro usa kd-tree As duas estruturas de dados satildeo simples e otimizam a

classificaccedilatildeo dos surfels de um modelo como dentro ou fora do outro modelo

Resultados 70

Mas existe uma diferenccedila conceitual entre dois que merece ser destacada O

algoritmo aqui implementado usa a Regra 2 para classificaccedilatildeo dos noacutes de uma

octree e armazena esta octree classificada (ver capiacutetulo 5) Assim na maioria dos

casos natildeo seraacute necessaacuterio encontrar o surfel mais proacuteximo para classificar um

ponto (ou um surfel) como fora ou dentro de um modelo Caso o ponto esteja em

uma aacuterea da octree classificada ele teraacute a classificaccedilatildeo dada agravequela aacuterea A

pesquisa ao surfel mais proacuteximo seraacute feita apenas nos casos em que o ponto a

ser classificado estaacute localizado entre os planos que subdividem um noacute cheio

O uso desta octree classificada levanta uma questatildeo que natildeo foi citada no

trabalho de Adams e Dutreacute que eacute a proximidade desta estrutura (armazenada)

de octree classificada com uma representaccedilatildeo volumeacutetrica do objeto Sendo

assim esta estrutura pode ser aproveitada para outras funccedilotildees aleacutem da

classificaccedilatildeo dos surfels Por exemplo podemos ter uma aproximaccedilatildeo do

volume de uma cena somando os volumes aproximados dos modelos que a

compotildeem Como o enfoque deste trabalho eacute operaccedilatildeo booleana natildeo vamos nos

aprofundar nesta questatildeo

Outra importante diferenccedila entre os dois trabalhos que jaacute foi explicada na

seccedilatildeo 432 eacute que o meacutetodo de Pauly aplica-se a modelos soacutelidos ou natildeo

soacutelidos enquanto que o meacutetodo de Adams e Dutreacute aplica-se somente a modelos

soacutelidos

Quanto ao tratamento de interseccedilatildeo em termos de visualizaccedilatildeo todos os

dois resolvem bem o problema O tratamento de interseccedilatildeo nos dois trabalhos

tambeacutem resolve o problema da validade da Regra 2 (ver seccedilatildeo 44) Entretanto

o tratamento de Adams e Dutreacute natildeo depende da renderizaccedilatildeo sendo portanto

mais portaacutevel Aleacutem disso uma desvantagem do meacutetodo de Pauly eacute o uso da

representaccedilatildeo impliacutecita MLS (ldquoMoving Least Squaresrdquo) do objeto para obter os

pontos exatamente na curva de interseccedilatildeo Esta representaccedilatildeo torna o

tratamento de interseccedilatildeo mais complexo e a vantagem apresentada natildeo eacute tatildeo

significativa para este tratamento de interseccedilatildeo

Conclusatildeo 71

7 Conclusatildeo

Concluiacutemos entatildeo que as escolhas de Adams e Dutreacute por usar uma

octree classificada e pelo tratamento dado agrave interseccedilatildeo satildeo mais abrangentes

que a escolha de Pauly E consideramos que quanto mais abrangente for uma

escolha conceitual mais resultados poderemos tirar dela No caso de Adams e

Dutreacute eles estendem o problema de classificar um ponto para classificar todo o

modelo Como foi citado ele quase fornece uma representaccedilatildeo volumeacutetrica do

modelo Esta aproximada representaccedilatildeo volumeacutetrica pode nos fornecer outras

informaccedilotildees como por exemplo o volume aproximado do modelo

Aleacutem disso o uso da representaccedilatildeo impliacutecita MLS no meacutetodo de Pauly cria

uma complexidade a mais para o meacutetodo sem apresentar vantagens para a

realizaccedilatildeo de operaccedilotildees booleanas que eacute o nosso enfoque

Logo podemos dizer que o meacutetodo de Adams e Dutreacute apresenta as

seguintes vantagens em relaccedilatildeo ao de Pauly

- a estrutura de octree classificada aleacutem de ser usada para classificaccedilatildeo

fornece informaccedilotildees adicionais como volume aproximado do objeto

- o tempo de processamento no meacutetodo de Adams e Dutreacute tende a ser

melhor que no meacutetodo de Pauly se implementadas as melhorias acima citadas e

se colocaacutessemos em consideraccedilatildeo o uso da representaccedilatildeo impliacutecita MLS

(Moving Least Squares)

- o tratamento de interseccedilatildeo de Adams e Dutreacute apresenta a vantagem da

portabilidade ou seja iraacute funcionar independente do algoritmo de renderizaccedilatildeo

utilizado

E as vantagens do meacutetodo de Pauly em relaccedilatildeo ao de Adams e Dutreacute

- a colocaccedilatildeo de surfels exatamente na curva de interseccedilatildeo

- a possibilidade de trabalhar com modelos soacutelidos ou natildeo soacutelidos

E finalizando concluiacutemos que o estudo relatado nesta dissertaccedilatildeo foi

importante por

- fornecer um breve estudo sobre modelagem por pontos uma nova e

promissora aacuterea dentro da computaccedilatildeo graacutefica

Conclusatildeo 72

- por apresentar uma avaliaccedilatildeo dos dois trabalhos existentes sobre

operaccedilotildees booleanas com pontos encontrando as vantagens de cada um

e levantando questotildees que natildeo tinham sido citadas nos trabalhos originais

- por propor e implementar melhorias ao trabalho de Adams e Dutreacute

71 Trabalhos Futuros

Nossa implementaccedilatildeo pode ser ainda evoluiacuteda com as propostas

apresentadas na seccedilatildeo 62 Como observamos o tempo de processamento do

algoritmo aqui implementado ainda pode ser melhorado com o uso do meacutetodo

TINN [19] - que foi proposto em Adams[2] - para otimizar a pesquisa do surfel

mais proacuteximo a um ponto que estaacute localizado na regiatildeo de um noacute que conteacutem

surfels Aleacutem disso o trabalho Simple and Efficient Trasversal Methods for

Quadtrees and Octrees de Sara F Frisken [12] citado no capiacutetulo 2 apresenta

uma otimizaccedilatildeo no uso de octrees Outra proposta para melhorar o tempo de

processamento do algoritmo aqui implementado eacute usar a forma de trabalhar com

octrees apresentada neste trabalho

O trabalho de Adams e Dutreacute [2] eacute aplicado apenas a objetos soacutelidos O

nosso plugin portanto aplica-se somente a este tipo de objeto Jaacute o trabalho de

Pauly[3] eacute aplicado tambeacutem a modelos natildeo soacutelidos Apresentamos como

proposta a um trabalho futuro a extensatildeo do algoritmo aqui implementado para

modelos natildeo soacutelidos O surfel pode conter uma informaccedilatildeo adicional que indica

se ele estaacute delimitando um volume ou natildeo Assim pode-se ter um modelo com

ldquopartes soacutelidasrdquo e ldquopartes natildeo soacutelidasrdquo Por exemplo a uniatildeo de um plano com

uma esfera poderia resultar numa esfera com ldquoabasrdquo (seriam as partes do plano

que estariam fora da esfera) O modelo resultado teria uma parte correspondente

a um espaccedilo 3D (esfera) e outra parte que seria uma superfiacutecie 2D posicionada

no espaccedilo 3D sem delimitar algum volume (abas)

Muitos trabalhos podem ser desenvolvidos aplicando-se o modelo por

pontos em animaccedilatildeo jogos visualizaccedilatildeo de terrenos criaccedilatildeo de protoacutetipos etc

considerando-se a eficiecircncia e simplicidade do modelo E mais especificamente

as operaccedilotildees booleanas com pontos podem ser aplicadas para criaccedilatildeo de

cenaacuterios testes de colisotildees e nestes casos a representaccedilatildeo usando octrees

pode ser mais explorada considerando-se o seu potencial de representaccedilatildeo

volumeacutetrica de um objeto

Referecircncias Bibliograacuteficas 73

8 Referecircncias Bibliograacuteficas

[1] MAumlNTYLAuml M An Introduction to Solid Modeling Computer Science Press 1988

[2] ADAMS B DUTREacute P Interactive Boolean Operations on Surfel-

Bounded Solids Proceedings of SIGGRAPH 2003 San Diego USA 2003

[3] PAULY M KEISER R KOBBELT L GROSS M Shape Modeling

with Point-Sampled Geometry SIGGRAPH 2003 Computer Graphics

Proceedings Annual Conference Series ACM Press ACM SIGGRAPH 2003

[4] LEVOY M WHITTED T The Use of Points as Display Primitives

Technical Report TR 85-022 The University of North Carolina at Chapel Hill

Department of Computer Science 1985

[5] PFISTER H ZWICKER M VAN BAAR J GROSS M 2000 Surfels

Surface Elements as Rendering Primitives SIGGRAPH 2000 pp 335ndash342 New

Orleans LA July 23-28 2000

[6] ZWICKER M PFISTER H VAN BAAR J GROSS M Surface

Splatting SIGGRAPH 2001

[7] PAULY M KOBBELT L GROSS M Multiresolution Modeling of

Point-Sampled Geometry CS Techinical Report 378 September 16 2002

[8] CURLESS B New Methods for Surface Reconstruction from Range Images PhD thesis Stanford University 1997

[9] RUSINKIEWICZ S Real-time Acquisition and Rendering of Large 3D Models PhD thesis Stanford University 2001

Referecircncias Bibliograacuteficas 74

[10] AMENTA N BERN M KAMVYSSELIS M A new Voronoi-Based

Surface Reconstruction Algorithm SIGGRAPH 98 Conference proceedings pp

415-421 New York 1998

[11] ZWICKER M PAULY M KNOLL O GROSS M Pointshop 3D an

Interactive System for Point-Based Surface Editing Proceedings of SIGGRAPH 2002 San Antonio TX July 2002

[12] FRISKEN S PERRY R Simple and Efficient Traversal Methods for

Quadtrees and Octrees Journal of Graphics Tools Vol 7 Issue 3 May 2003

[13] CORREcircA W T OLIVEIRA M M Silva C T Wang J

Modeling and Rendering of Real Environments

Revista de Informaacutetica Teoacuterica e Aplicada (Brazilian Journal of Theoretic and Applied Computing) 9(2)127-156 2002

[14] DAVIS J MARSCHNER S GARR M LEVOY M Filling Holes in

Complex Surfaces Using Volumetric Diffusion First International Symposium on 3D Data Processing Visualization Transmission June 2002

[15] RAumlSAumlNEN J Surface Splatting Theory Extensions and Implementation Masterrsquos Thesis Dept of Computer Science Helsinki

University of Technology May 28 2002

[16] PAULY M Point Primitives for Interactive Modeling and Processing of 3D Geometry PhD thesis Federal Institute of Technology (ETH)

of Zurich 2003

[17] HOPPE H DEROSE T DUCHAMP T MCDONALD J

STUELZLE W Surface Reconstruction from Unorganized Points Computer Graphics 26(2)71ndash78 July 1992

[18] ALEXA M BEHR J COHEN-OR D FLEISHMAN S LEVIN D

SILVA C T Point Set Surfaces IEEE Visualization 2001 pp 21ndash28 October

2001

Referecircncias Bibliograacuteficas 75

[19] GREENSPAN M GODIN G TALBOT J Acceleration of Binning

Nearest Neighbor Methods Proceedings of Vision Interface 2000 pp 337-

344

[20] MENCL R Reconstruction of Surfaces from Unorganized Three-Dimensional Point Clouds Dissertation Dortmund Univ 2001

[21] KRIVANEK J Representing and Rendering Surfaces With Points

httpciteseernjneccomkrivanek03representinghtml Acesso em 30 jul

2003

[22] KRISTJANSSON ET AL Approximate Boolean Operations on Free-

form Solids Proceedings of SIGGRAPH 01 2001

Modelagem por Pontos 24

um exemplo eacute bastante preciso mas eacute muito lento e natildeo adequado a objetos

fraacutegeis

Meacutetodos por transmissatildeo projetam ondas de energia sobre o objeto e

gravam a energia transmitida Por exemplo tomografia computadorizada que

projeta ondas de raio-x sobre o objeto e mede a quantidade de radiaccedilatildeo que

passa atraveacutes dele O resultado eacute um modelo geomeacutetrico de alta resoluccedilatildeo Este

meacutetodo pode captar detalhes do objeto que natildeo satildeo visiacuteveis de fora do objeto

Por outro lado ele eacute caro e arriscado

Meacutetodos por reflexatildeo podem ser oacuteticos ou natildeo-oacuteticos Natildeo-oacuteticos incluem

radares que medem a distacircncia a um objeto enviando microondas ou ondas

sonoras para o objeto e gravando o tempo que a onda gasta para retornar Estes

meacutetodos natildeo satildeo muito precisos nem raacutepidos

Meacutetodos por reflexatildeo oacuteticos podem ser passivos ou ativos Meacutetodos oacuteticos

passivos natildeo interagem com o objeto e incluem teacutecnicas de visatildeo computacional

como shape-from-shading stereo triangulation optical flow e meacutetodos de

decomposiccedilatildeo para video streams Estes meacutetodos raramente constroem

modelos precisos e sua maior aplicaccedilatildeo eacute em reconhecimento de objetos

Meacutetodos oacuteticos ativos projetam luz sobre um objeto de maneira estruturada

e atraveacutes da reflexatildeo da luz determinam a forma do objeto Exemplos satildeo depth

from defocus photometric stereo projected-light triangulation time of flight

Meacutetodos por reflexatildeo oacuteticos ativos tecircm muitas vantagens sobre os passivos tecircm

um melhor desempenho quando natildeo existe textura satildeo mais baratos e mais

robustos e produzem uma amostragem precisa

352 Aquisiccedilatildeo da textura

Idealmente noacutes gostariacuteamos de ter uma completa descriccedilatildeo de como um

ponto da superfiacutecie reflete a luz dependendo do vetor normal a esta superfiacutecie

da direccedilatildeo do raio de luz incidente e do comprimento de onda Tal descriccedilatildeo eacute

conhecida como Bidirectional Reflectance Distribution Function (BRDF) Medir

BRDFs com precisatildeo eacute um problema difiacutecil

Pode-se ter uma aproximaccedilatildeo da aquisiccedilatildeo de cores do objeto tirando

fotos dele O objeto eacute fotografado e a cor de cada ponto da superfiacutecie eacute obtida a

partir de um mapeamento das fotos 2D para o modelo 3D Para mapear a

fotografia agrave geometria precisamos conhecer os paracircmetros de projeccedilatildeo da

cacircmera e a sua posiccedilatildeo no momento em que a foto foi batida Para cada ponto

Modelagem por Pontos 25

3D do modelo encontramos sua projeccedilatildeo 2D no plano da cacircmera e associamos

a cor do pixel nesta projeccedilatildeo agrave cor do ponto 3D

353 Correccedilatildeo das falhas da aquisiccedilatildeo

O processo de aquisiccedilatildeo deixa frequumlentemente buracos no modelo devido

a ruiacutedos no processo ou agrave impossibilidade de aquisiccedilatildeo de determinadas partes

de uma superfiacutecie Estes buracos devem ser corrigidos Pode-se usar por

exemplo um filtro de passa-baixa para remoccedilatildeo de ruiacutedos [14] Meacutetodos de

difusatildeo geomeacutetrica tecircm sido aplicados para preenchimento dos buracos [15] A

correccedilatildeo das falhas eacute tida como um preacute-processamento para o processo de

reconstruccedilatildeo da superfiacutecie contiacutenua (seccedilatildeo 36)

36 Reconstruccedilatildeo da superfiacutecie (contiacutenua) a partir do modelo (discreto)

A reconstruccedilatildeo da superfiacutecie contiacutenua consiste em a partir de um conjunto

natildeo estruturado de pontos obter um modelo contiacutenuo desta superfiacutecie Esta

reconstruccedilatildeo eacute frequumlentemente exigida para um modelo por pontos Na sua

visualizaccedilatildeo podemos desejar focar qualquer parte do modelo Para fazermos

operaccedilotildees booleanas com os modelos podemos querer determinar exatamente

onde eles se intersectam

No entanto natildeo precisamos ter necessariamente a representaccedilatildeo contiacutenua

de todo o objeto ao mesmo tempo A reconstruccedilatildeo desta superfiacutecie a partir dos

pontos amostrados pode ser feita no momento que for mais adequado agrave

aplicaccedilatildeo Na visualizaccedilatildeo a reconstruccedilatildeo pode ser feita na projeccedilatildeo 2D da

parte do modelo em foco (seccedilatildeo 37) Para operaccedilotildees booleanas pode-se

reconstruir apenas a aacuterea da interseccedilatildeo dos modelos

Este processo de reconstruccedilatildeo de superfiacutecie tem sido muito estudado em

modelagem geomeacutetrica e geometria computacional nos uacuteltimos anos O trabalho

mais importante desta aacuterea eacute o trabalho de Amenta et al [10] que foi a primeira

soluccedilatildeo com garantias demonstraacuteveis para este problema de reconstruccedilatildeo de

superfiacutecie A seccedilatildeo 44 explica estes conceitos e o trabalho [10] Este trabalho

demonstra que teoricamente para que a reconstruccedilatildeo da superfiacutecie (contiacutenua) a

partir das amostras seja correta a amostragem deve ser adequada Ele usa o

conceito de ldquoEixo Medialrdquo para definir o que eacute uma amostragem adequada

Modelagem por Pontos 26

(seccedilatildeo 44) Em duas dimensotildees os veacutertices de Voronoi de uma amostragem

densa aproximam o ldquoEixo Medialrdquo da amostragem

Por meio deste conceito de Eixo Medial [1016] obtecircm-se paracircmetros

teoacutericos para a definiccedilatildeo de amostragem adequada e baseado neste conceito

o algoritmo apresentado em [10] traz uma soluccedilatildeo praacutetica para o problema

obtendo uma malha poligonal a partir do modelo por pontos

O PointShop 3D [11] software de ediccedilatildeo de modelos por pontos utilizado

nesta pesquisa faz quando necessaacuterio a reconstruccedilatildeo da superfiacutecie Para isso

o PointShop 3D explora a vizinhanccedila local (surfels vizinhos de acordo com suas

posiccedilotildees) Ele usa o conceito de Eixo Medial para justificar seu meacutetodo de

reconstruccedilatildeo da superfiacutecie que na praacutetica apresenta resultados bastante

satisfatoacuterios apesar de teoricamente natildeo ter garantias [16]

37 Visualizaccedilatildeo do modelo

A primeira abordagem para visualizaccedilatildeo de um modelo por pontos foi

construir uma malha de poliacutegonos a partir dos surfels e renderizaacute-la Mas a

construccedilatildeo de malhas a partir dos surfels eacute um processo muito caro e lento

principalmente para modelos complexos Na tentativa de obter uma visualizaccedilatildeo

interativa do modelo por pontos estatildeo sendo estudadas teacutecnicas que utilizam

surfels como primitiva de visualizaccedilatildeo A ideacuteia foi apresentada inicialmente por

Levoy [4]

Figura 3 [21] -Modelo por pontos e sua renderizaccedilatildeo usando Surface Splatting

Modelagem por Pontos 27

O objetivo da renderizaccedilatildeo a partir dos surfels eacute projetaacute-los na tela e

reconstruir as superfiacutecies de forma contiacutenua sem buracos Para que esta

renderizaccedilatildeo seja amplamente utilizada deve-se ter cuidado com o uso de

memoacuteria e com a qualidade da imagem gerada Teacutecnicas recentes como Surface

Splatting [6] faz a renderizaccedilatildeo interativamente com qualidade (Figura 3)

comparada a outros meacutetodos de renderizaccedilatildeo como Image Based Rendering

Em geral a visualizaccedilatildeo do modelo por pontos pode ser dividida nas seguintes

etapas

- warping - projeccedilatildeo em perspectiva de cada ponto do modelo na tela

processo anaacutelogo agrave projeccedilatildeo de veacutertices dos triacircngulos na malha triangular Se

um pixel da tela estiver contido em mais de uma projeccedilatildeo de surfels (vizinhos)

ou seja mais de um ponto cobre este pixel os atributos destes pontos seratildeo

combinados

- shading por ponto - o processo de shading eacute realizado para cada ponto

visiacutevel (os pontos que natildeo satildeo vistos do ponto de vista em questatildeo devem ser

retirados) Qualquer modelo local de shading pode ser aplicado Uma nova

teacutecnica foi proposta em Surface Splatting [6]

- reconstruccedilatildeo da imagem ndash pixels que natildeo ldquoreceberamrdquo projeccedilatildeo de

nenhum ponto formam buracos na imagem Esta imagem deve ser reconstruiacuteda

sem buracos sem aliasing e as superfiacutecies devem ser reconstruiacutedas de forma

contiacutenua e devem ser ldquosuavizadasrdquo (smooth surface)

Os algoritmos de renderizaccedilatildeo por pontos podem tratar a questatildeo de

buracos na visualizaccedilatildeo de trecircs formas [17]

Detecccedilatildeo e preenchimento de buracos no espaccedilo da tela pontos satildeo

projetados na tela e pixels que natildeo receberam pontos satildeo detectados (buracos)

Para preencher estes buracos que natildeo receberam pontos eacute feita uma

interpolaccedilatildeo entre os vizinhos

Geraccedilatildeo de mais pontos a superfiacutecie eacute interpolada no espaccedilo do modelo

para garantir que todos os pixels recebam pelo menos a projeccedilatildeo de um ponto

Splatting um surfel eacute projetado na tela e sua contribuiccedilatildeo eacute espalhada de

forma diferenciada para os pixels vizinhos Agrave medida em que o vizinho se torna

mais distante a contribuiccedilatildeo do surfel diminui

Raumlsaumlnen faz uma analogia do processo de renderizaccedilatildeo proposto em [6]

com o mapeamento de textura [15] No mapeamento de textura para um

determinado pixel da tela satildeo encontrados os pontos da textura que afetam este

Modelagem por Pontos 28

pixel Num sentido inverso em splatting para um determinado surfel (que

representa a textura) satildeo encontrados os pixels da tela que este surfel afeta

38 Ediccedilatildeo do modelo

Ediccedilatildeo de um modelo 3D consiste em operaccedilotildees que modificam

caracteriacutesticas deste modelo como cor textura forma ou criam novos modelos

O software PointShop 3D [11] software de ediccedilatildeo de modelos por pontos 3D

implementa vaacuterias destas operaccedilotildees (ver seccedilatildeo 52)

Para modificar a forma de um modelo ou criar um novo satildeo muito usadas

as operaccedilotildees booleanas que eacute o nosso enfoque nesta dissertaccedilatildeo Na

modelagem CSG (Constructive Solid Geometry) as operaccedilotildees booleanas satildeo

usadas juntamente com primitivas soacutelidas para definir um modelo No entanto

em alguns tipos de modelos estas operaccedilotildees satildeo difiacuteceis como por exemplo

em malhas poligonais Com pontos elas podem ser feitas interativamente [32]

Operaccedilotildees Booleanas com Pontos 29

4 Operaccedilotildees Booleanas com Pontos

Operaccedilotildees booleanas satildeo as operaccedilotildees de uniatildeo interseccedilatildeo e diferenccedila

definidas na teoria matemaacutetica de conjuntos Estas operaccedilotildees satildeo aplicadas em

modelos soacutelidos para alteraacute-los ou para criar novos modelos A Figura 4 abaixo

mostra a criaccedilatildeo de trecircs novos modelos a partir de quatro modelos iniciais

Figura 4 [22] Trecircs modelos novos foram criados a partir dos quatro iniciais (esfera

cilindro dois cubos) O primeiro eacute a esfera menos um cubo em seguida retirou-se outro

cubo e por uacuteltimo retirou-se o cilindro

Estas operaccedilotildees satildeo aplicadas em objetos modelados por pontos em dois

trabalhos no trabalho de Bart Adams e Philip Dutreacute [2] e no trabalho de Pauly

et Al [3] Neste capiacutetulo a seccedilatildeo 41 apresenta a parte comum aos dois

trabalhos e as seccedilotildees 42 e 43 apresentam as particularidades de cada um A

seccedilatildeo 44 discute uma questatildeo natildeo explicitada em nenhum dos dois trabalhos

41 Meacutetodos para realizar operaccedilotildees booleanas em objetos modelados por pontos

A Figura 5 mostra o resultado do meacutetodo de Adams[2] operaccedilotildees de

uniatildeo diferenccedila e interseccedilatildeo de objetos soacutelidos 3D modelados por pontos

Operaccedilotildees Booleanas com Pontos 30

Figura 5 [2]-A partir de dois modelos por pontos uma heacutelice e uma cabeccedila as trecircs operaccedilotildees booleanas satildeo mostradas da esquerda para a direita uniatildeo diferenccedila e interseccedilatildeo

Sejam A e B objetos 3D soacutelidos modelados por pontos Definem-se os

seguintes elementos

Af ndash superfiacutecie (contorno) de A que estaacute fora de B

Ad ndash superfiacutecie (contorno) de A que estaacute dentro de B

Bf ndash superfiacutecie (contorno) de B que estaacute fora de A

Bd ndash superfiacutecie (contorno) de B que estaacute dentro de A

O resultado da operaccedilatildeo booleana entre A e B seraacute um modelo C cuja

superfiacutecie de contorno pode ser determinada pela seguinte regra [2] que aqui

chamamos de Regra 1

Regra 1 A U B Af + Bf

A cap B Ad + Bd

A ndash B Af + Bd (com a orientaccedilatildeo invertida)

B ndash A Ad (com a orientaccedilatildeo invertida) + Bf

A Figura 6 mostra as operaccedilotildees com dois modelos A e B

(a) (b)

Operaccedilotildees Booleanas com Pontos 31

(c) (d)

Figura 6 [22] (a) Dois modelos A e B (b) Posicionados de forma que A tem

uma parte dentro de B eacute mostrado o resultado A U B Af + Bf (c) Resultado de A ndash B Af

+ Bd (d) Resultado de A cap B Ad + Bd

Bart [2] e Pauly [3] apresentam dois meacutetodos para determinar os

elementos acima Estes dois meacutetodos satildeo construiacutedos a partir dos seguintes

conceitos os elementos Af Ad Bf Bd satildeo uma parte da superfiacutecie modelada por

pontos e portanto satildeo conjuntos de surfels Para determinaacute-los eacute necessaacuteria

entatildeo a classificaccedilatildeo de um surfel (que pode se resumir agrave classificaccedilatildeo de um

ponto que eacute o seu centro) de uma superfiacutecie como dentro ou fora de um outro

modelo Os dois meacutetodos utilizam a seguinte regra para esta classificaccedilatildeo aqui

denominada Regra 2

Regra 2 Dado um ponto x qualquer um volume V determinado por uma superfiacutecie

de contorno S uma amostragem P da superfiacutecie S um ponto p є P que eacute a

amostra mais proacutexima a x um vetor np normal agrave S em p e orientado para fora de

S temos que

(x ndash p) np gt 0 x notinV

Ou seja para classificar um ponto em relaccedilatildeo a um modelo verificamos o

produto interno entre a normal em p (surfel mais proacuteximo a x) e o vetor (x - p)

se este produto interno for maior que zero x natildeo pertence ao volume V e seraacute

classificado como fora senatildeo seraacute classificado como dentro De maneira

ainda mais informal se a normal em p apontar para a direccedilatildeo oposta a x x seraacute

classificado como dentro se apontar para x x seraacute classificado como fora

A Figura 7 mostra a Regra 2

Operaccedilotildees Booleanas com Pontos 32

Figura 7 Para classificar o ponto x encontra-se o surfel p (com normal np) mais proacuteximo

a x Se o produto interno entre np e (x ndash p) for maior que zero entatildeo x eacute classificado como

fora senatildeo seraacute classificado como dentro

A validade da Regra 2 eacute discutida na Seccedilatildeo 44 Uma das restriccedilotildees

teoacutericas para garantir-lhe a validade eacute que a superfiacutecie seja suave

Cada um dos dois meacutetodos daacute um tratamento diferente para o uso desta

regra Pauly usa a regra diretamente encontrando o surfel mais proacuteximo a um

ponto e classificando este ponto a partir deste surfel Ele utiliza tambeacutem a

representaccedilatildeo impliacutecita MLS (Moving Least Squares [18]) para casos em que a

Regra 2 poderia falhar e para tratamento de interseccedilotildees [3] Seu meacutetodo vale

para modelos soacutelidos ou natildeo soacutelidos O meacutetodo de Adams e Dutreacute [2] utiliza

octrees [1] criando uma classificaccedilatildeo dos noacutes da octree a partir desta Regra 2

Os pontos satildeo entatildeo classificados de acordo com o noacute da octree que o conteacutem

Este segundo meacutetodo aplica-se somente a modelos soacutelidos Os dois meacutetodos

seratildeo descritos em detalhes nas seccedilotildees abaixo

Como um surfel eacute considerado um disco podemos dizer que surfels de

dois modelos diferentes podem se intersectar A interseccedilatildeo destes dois surfels

corresponde agrave interseccedilatildeo destes dois discos Estes surfels geram problemas

para visualizaccedilatildeo se forem acrescentados ao resultado sem um tratamento

especiacutefico apresentaratildeo artefatos natildeo desejaacuteveis na renderizaccedilatildeo do modelo

resultado (Figura 8) se natildeo forem acrescentados ao resultado deixaratildeo buracos

no modelo

Operaccedilotildees Booleanas com Pontos 33

Figura 8 [2] -Interseccedilatildeo de duas esferas agrave esquerda sem nenhum tratamento de interseccedilatildeo agrave direita apoacutes o tratamento de interseccedilatildeo

Aleacutem disso nem sempre esta interseccedilatildeo forma uma superfiacutecie suave

Esta interseccedilatildeo pode formar uma aresta viva (seccedilatildeo 4223) gerando

problemas tambeacutem para o uso da Regra 2 que eacute vaacutelida apenas para superfiacutecies

suaves Eacute necessaacuterio entatildeo fazer um tratamento desta superfiacutecie de interseccedilatildeo

(formada por surfels originados de diferentes modelos) O tratamento de cada

um dos meacutetodos para este caso seraacute tambeacutem abaixo apresentado

42 Meacutetodo de Adams e Dutreacute

O meacutetodo aplica-se somente a modelos soacutelidos Para determinaccedilatildeo dos

elementos da aqui chamada Regra 1 (seccedilatildeo 41) este meacutetodo utiliza uma octree

[1] que subdivide o espaccedilo do modelo em trecircs fora dentro ou no contorno do

modelo Estes espaccedilos satildeo determinados pela classificaccedilatildeo dos noacutes da octree a

partir da Regra 2 Tambeacutem eacute usado o meacutetodo TINN - Triangle Inequality Nearest

Neighbour [19] - para otimizar a pesquisa dentro do noacute A seguir descrevemos o

modelo usado neste meacutetodo apresentando os dados associados aos pontos o

tipo de distribuiccedilatildeo e o algoritmo que realiza as operaccedilotildees

421 Modelo por Pontos em Adams e Dutreacute

Os surfels neste meacutetodo contecircm as seguintes informaccedilotildees posiccedilatildeo do

surfel xs orientaccedilatildeo do surfel ns e raio de alcance do surfel rs O surfel pode ser

pensado como um disco ortogonal a ns com centro xs e raio rs O raio eacute

escolhido de tal forma que a projeccedilatildeo dos discos no plano da imagem se

sobreponham

Operaccedilotildees Booleanas com Pontos 34

Os objetos representados satildeo soacutelidos A distribuiccedilatildeo dos surfels eacute

uniforme embora o algoritmo natildeo exija esta condiccedilatildeo Para cada soacutelido eacute

definido um rmax = Max rs o raio de alcance do maior surfel pertencente agrave

superfiacutecie do soacutelido Como o raio eacute escolhido de tal forma que a projeccedilatildeo dos

discos no plano da imagem se sobreponham o controle da amostragem eacute

entatildeo ligado agrave renderizaccedilatildeo

422 Algoritmo de Operaccedilotildees Booleanas

Utilizando objetos modelados da forma descrita acima o meacutetodo realiza

operaccedilotildees de uniatildeo interseccedilatildeo e diferenccedila com modelos soacutelidos Supondo dois

modelos soacutelidos S1 e S2 O algoritmo pode ser dividido nas seguintes etapas

Criaccedilatildeo de uma octree para cada modelo Teste Dentro-Fora Tratamento da

interseccedilatildeo Estas etapas satildeo apresentadas nas proacuteximas seccedilotildees

4221 Criaccedilatildeo de uma octree para cada modelo

Eacute criada uma octree [1] para cada modelo A criaccedilatildeo de uma octree eacute feita

da seguinte forma

Gera-se a ldquoCaixa envolventerdquo caixa alinhada com os eixos que conteacutem

todo o modelo A ldquoCaixa envolventerdquo corresponde ao noacute raiz da octree Este noacute

conteacutem inicialmente todos os surfels do modelo Em seguida o noacute raiz eacute

dividido em oito noacutes filhos Os surfels satildeo distribuiacutedos entre estes oito noacutes Cada

um deles caso contenha surfels eacute dividido novamente em 8 filhos e seus surfels

satildeo redistribuiacutedos entre eles Este processo eacute repetido recursivamente enquanto

o nuacutemero de surfels do noacute for maior que zero ou ateacute uma profundidade maacutexima

preacute-definida da octree ser alcanccedilada

Cada noacute da octree deve ser classificado O objetivo desta classificaccedilatildeo eacute

determinar que parte da octree estaacute dentro do modelo e que parte estaacute fora Os

noacutes da octree satildeo entatildeo classificados como ldquodentrordquo ldquoforardquo e ldquocontornordquo

Podemos ilustrar esta classificaccedilatildeo em 2D a Figura 9 mostra uma quadtree

classificada

Operaccedilotildees Booleanas com Pontos 35

Figura 9-Um objeto representado por pontos com suas normais e sua quadtree correspondente classificada os noacutes cinza claro estatildeo dentro do modelo noacutes cinza mais escuro estatildeo fora do modelo e noacutes com cinza intermediaacuterio satildeo noacutes cheios noacutes que conteacutem pontos

O noacutes que conteacutem surfels satildeo classificados como ldquocontornordquo Para

classificar um noacute vazio existem trecircs casos

o noacute vazio tem apenas um vizinho-irmatildeo natildeo vazio

o noacute vazio tem mais de um vizinho-irmatildeo natildeo vazio

o noacute vazio natildeo tem vizinhos-irmatildeos natildeo vazios

No primeiro caso o noacute vazio eacute classificado pelo seu vizinho natildeo vazio No

segundo caso considera-se qualquer um dos vizinhos natildeo vazios No terceiro

caso classifica-se primeiro os noacutes vizinhos e eacute dada a mesma classificaccedilatildeo para

o noacute vazio Como cada noacute natildeo folha de uma octree tem pelo menos um noacute filho

natildeo vazio sempre pode ser feita a classificaccedilatildeo dos noacutes vazios A classificaccedilatildeo

eacute feita da seguinte forma dentre os surfels do vizinho-irmatildeo escolhido encontra-

se o surfel mais proacuteximo ao noacute a ser classificado Se a normal deste surfel

aponta para o noacute vazio a ser classificado entatildeo ele eacute classificado como ldquoforardquo

Se a normal aponta no sentido contraacuterio entatildeo ele eacute classificado como ldquodentrordquo

De maneira mais formal sejam cv e cc coordenadas dos centros do noacute vazio e

do noacute contorno respectivamente Seja s o surfel mais proacuteximo ao noacute vazio e ns

a normal em s Se ( cv - cc )٠ ns gt 0 ( produto interno entre a normal em s e o

vetor cv - cc for maior que zero ) o noacute vazio seraacute classificado como ldquoforardquo

Senatildeo seraacute classificado como ldquodentrordquo

Em geral os noacutes ldquocontornordquo satildeo subdivididos em trecircs partes uma que estaacute

fora do modelo uma que estaacute dentro do modelo e uma terceira que conteacutem os

surfels Esta subdivisatildeo eacute feita por meio da criaccedilatildeo de dois planos paralelos que

Operaccedilotildees Booleanas com Pontos 36

dividem o noacute Para determinar estes planos calcula-se o vetor nm igual agrave

meacutedia das normais dos surfels do noacute nm = sum ns sum ns onde ns eacute a normal de

cada surfel do noacute

Em seguida encontra-se o surfel com maior produto interno entre a sua

normal e a normal meacutedia d1=Max(nm ٠ ns) Este surfel juntamente com a normal

meacutedia define um dos planos Encontra-se tambeacutem o surfel com menor produto

interno entre a sua normal e a normal meacutedia d2=Min(nm ٠ ns) Este surfel

juntamente com a normal meacutedia define o outro plano A Figura 10 mostra a

divisatildeo de um noacute de uma quadtree nas trecircs partes dentro do modelo fora do

modelo e no ldquocontornordquo

Esta subdivisatildeo aplica-se apenas a noacutes que conteacutem surfels cujas direccedilotildees

natildeo variem em mais de 90 graus Caso isso ocorra ele natildeo seraacute subdividido Ou

seja se um noacute possuir dois vetores normais (de dois surfels diferentes) que

formem um acircngulo maior que 90 graus ele natildeo seraacute subdividido

Figura 10 [2] -Divisatildeo de noacute de contorno a parte agrave esquerda estaacute fora do modelo a parte agrave direita estaacute dentro do modelo e a faixa intermediaacuteria conteacutem os surfels

4222 Teste Dentro-Fora

O Teste Dentro-Fora faz a classificaccedilatildeo dos surfels de um modelo como

ldquodentrordquo ou ldquoforardquo de outro modelo Portanto aplicaremos este mesmo teste duas

vezes uma para o modelo S1 em relaccedilatildeo ao modelo S2 e outra para S2 em

relaccedilatildeo a S1 Vamos mostrar o teste Dentro-Fora para o caso da classificaccedilatildeo

dos surfels do modelo S1 em relaccedilatildeo a S2

Operaccedilotildees Booleanas com Pontos 37

No item anterior foram criadas duas octrees uma para o modelo S1 e

outra para o modelo S2 Chamemos de A e B as octrees de S1 e S2

respectivamente Para classificar S1 em relaccedilatildeo a S2 inicialmente eacute feita uma

avaliaccedilatildeo da posiccedilatildeo de A em relaccedilatildeo a B A e B podem estar nas seguintes

situaccedilotildees

- A natildeo intersecta B

- A intersecta apenas noacutes ldquoforardquo de B

- A intersecta apenas noacutes ldquodentrordquo de B

- A intersecta noacutes ldquoforardquo e noacutes ldquodentrordquo de B

Para testar estas situaccedilotildees os noacutes satildeo aumentados de rmax o raio do

maior surfel do modelo soacutelido Isto eacute feito para compensar o fato de que o surfel

natildeo eacute apenas um ponto mas sim considerado como um disco

No primeiro e no segundo caso todos os surfels de A satildeo classificados

como ldquoforardquo No terceiro caso todos os surfels de A satildeo classificados como

ldquodentrordquo

No quarto caso temos que percorrer a octree A Comeccedilando pelo noacute raiz

percorre-se os filhos deste noacute Para cada filho os quatro testes acima satildeo feitos

Se o noacute filho encontra-se em um dos trecircs primeiros casos a classificaccedilatildeo eacute dada

como foi citada acima Se um filho estaacute no quarto caso e natildeo eacute um noacute folha

repete-se recursivamente o mesmo procedimento para seus filhos ateacute encontrar-

se um noacute folha Para um noacute que estaacute no quarto caso e eacute folha percorre-se a lista

de surfels que este noacute conteacutem classificando cada um destes surfels Seja sa um

surfel desta lista Para este caso percorre-se a octree B para classificar sa

Primeiramente encontramos o noacute de B que conteacutem sa Se este noacute de B foi

dividido testa-se de acordo com esta divisatildeo do noacute se o surfel sa estaacute na parte

do noacute que estaacute dentro do modelo ele eacute classificado como ldquodentrordquo se sa estaacute na

parte que estaacute fora do modelo ele eacute classificado como ldquoforardquo se sa estaacute na parte

intermediaacuteria ou se o noacute de B natildeo foi subdividido em planos encontra-se sb que

eacute o surfel pertencente a este noacute de B que estaacute mais proacuteximo de sa sa seraacute

entatildeo classificado de acordo com sb Se ( sa - sb )٠ nb gt 0 sa eacute classificado

como ldquoforardquo senatildeo eacute classificado como ldquodentrordquo Se os discos de sb e sa se

intersectam sa eacute marcado como interseccedilatildeo Para encontrar sb o algoritmo

implementa o meacutetodo TINN ndash Triangle Inequality Nearest Neighbour [19]

Operaccedilotildees Booleanas com Pontos 38

4223 Tratamento da interseccedilatildeo

Os surfels de A que intersectam surfels de B satildeo classificados como

ldquointerseccedilatildeordquo Se eles natildeo forem incluiacutedos no modelo resultado o soacutelido resultado

teraacute buracos Se eles forem incluiacutedos sem algum tratamento eles natildeo

representaratildeo adequadamente a regiatildeo Em geral o surfel sa (um surfel

ldquointerseccedilatildeordquo de A) eacute dividido em dois pelo plano que conteacutem o surfel sb (surfel de

B que sa intersecta) uma parte que estaacute fora de B e outra que estaacute dentro de B

Dependendo da operaccedilatildeo que estaacute sendo realizada vamos querer manter uma

destas partes do surfel sa no modelo resultado Seja xa a posiccedilatildeo do surfel sa e o

surfel sa uma circunferecircncia de centro xa e raio ra igual ao raio de alcance de sa

O plano que conteacutem o surfel sb define uma corda desta circunferecircncia como

mostra a Figura 11 O surfel sa seraacute substituiacutedo por um surfel menor que

ultrapassa esta corda de uma distacircncia e definida pelo usuaacuterio Para cobrir

completamente a interseccedilatildeo seratildeo adicionados surfels menores que cruzam a

corda de interseccedilatildeo

Figura 11 -Interseccedilatildeo do surfel s e do plano que passa pelo surfel t o surfel mais proacuteximo a s O surfel s eacute substituiacutedo por trecircs surfels menores

Operaccedilotildees Booleanas com Pontos 39

O tratamento de interseccedilatildeo proposto por Adams e Dutreacute [2] natildeo soacute evita

os buracos mas tambeacutem cria uma forma de renderizaccedilatildeo de arestas vivas A

colocaccedilatildeo de vaacuterios pequenos surfels na regiatildeo da interseccedilatildeo permite esta

correta renderizaccedilatildeo das ldquoarestas vivasrdquo Desta forma o problema das arestas

vivas eacute resolvido na modelagem (Figura 12) A vantagem de se resolver o caso

na modelagem eacute que natildeo eacute necessaacuterio fazer um tratamento especial na

renderizaccedilatildeo para que mostre esta aresta viva Diferente do tratamento feito

em Pauly (seccedilatildeo 431) que resolve esta questatildeo em tempo de renderizaccedilatildeo

Aleacutem disso o tratamento resolve alguns casos onde a Regra 2 poderia falhar

(veja em Validade da Regra 2-seccedilatildeo 44)

Figura 12 [2] -Agrave direita eacute mostrado o resultado do tratamento de interseccedilatildeo para o caso de Arestas Vivas do objeto agrave esquerda

43 Meacutetodo de Pauly

O meacutetodo aplica-se a objetos soacutelidos e natildeo soacutelidos Os modelos podem ser

obtidos a partir de diferentes entradas como nuvem de pontos irregulares ou por

meio de scanners 3D Cria um modelo hiacutebrido destes objetos usa o modelo por

pontos juntamente com a representaccedilatildeo impliacutecita Moving Least Squares - MLS

[18] Realiza operaccedilotildees booleanas com pontos e utiliza adicionalmente MLS

para alguns casos de classificaccedilatildeo de surfels e no tratamento de interseccedilatildeo A

seguir apresentamos as caracteriacutesticas do modelo por pontos deste meacutetodo e o

algoritmo que realiza as operaccedilotildees

Operaccedilotildees Booleanas com Pontos 40

431 Modelo em Pauly

O modelo eacute uma estrutura hiacutebrida de pontos com a representaccedilatildeo impliacutecita

Moving Least Squares - MLS [18] Esta estrutura eacute usada para fazer operaccedilotildees

booleanas e tambeacutem operaccedilotildees de free-form (natildeo abordadas nesta

dissertaccedilatildeo) Para operaccedilotildees booleanas a representaccedilatildeo MLS permite que a

curva de interseccedilatildeo entre os modelos seja reconstruiacuteda e surfels sejam

colocados nesta curva e em alguns casos de classificaccedilatildeo de surfels mostrados

na seccedilatildeo 432 Para este modelo natildeo existem restriccedilotildees quanto agrave forma do

objeto

Os surfels contecircm informaccedilotildees sobre sua posiccedilatildeo e sua normal Aleacutem

disso surfels podem conter informaccedilotildees adicionais como textura cor

propriedades de materiais

A distribuiccedilatildeo dos surfels eacute natildeo-uniforme e a amostragem eacute

aproximadamente adequada (Veja seccedilatildeo 44)

432 Algoritmo de Operaccedilotildees Booleanas

O algoritmo classifica surfels de um modelo como ldquodentrordquo ou ldquoforardquo de

outro modelo Antes de colocarmos como eacute feita esta classificaccedilatildeo devemos

acrescentar que Pauly estende esta classificaccedilatildeo para modelos que natildeo satildeo

soacutelidos Ou seja mesmo um modelo natildeo soacutelido divide o espaccedilo da cena (espaccedilo

em que se encontra o modelo) em dois sub-espaccedilos dentro ou fora do modelo

Pauly faz esta subdivisatildeo da seguinte forma

Como a superfiacutecie que determina o modelo eacute orientada (conteacutem vetores

normais agrave superfiacutecie que apontam para ldquoforardquo do modelo) Pauly considera que

um modelo natildeo soacutelido divide o espaccedilo em dois sub-espaccedilos um ldquoforardquo do

modelo (os vetores normais apontam para este sub-espaccedilo) e um que estaacute

ldquodentrordquo do modelo (os vetores normais apontam para direccedilatildeo oposta a este sub-

espaccedilo) Por exemplo um plano eacute representado como um conjunto de surfels

contidos num determinado espaccedilo geomeacutetrico plano π Cada surfel conteacutem um

vetor normal direcionado Este modelo divide entatildeo o espaccedilo em dois sub-

espaccedilos o sub-espaccedilo que eacute apontado por estes surfels (considerado ldquoforardquo do

modelo) e o sub-espaccedilo que estaacute na direccedilatildeo oposta (considerado ldquodentrordquo do

modelo) Desta forma ele aplica as classificaccedilotildees de ldquodentrordquo e ldquoforardquo de um

modelo tambeacutem a modelos natildeo soacutelidos A partir desta consideraccedilatildeo as

Operaccedilotildees Booleanas com Pontos 41

operaccedilotildees booleanas satildeo realizadas com os modelos natildeo soacutelidos da mesma

forma que com os modelos soacutelidos

Para determinar esta classificaccedilatildeo (dentro ou fora do modelo) Pauly utiliza

a Regra 2 Para pesquisa do surfel mais proacuteximo o meacutetodo usa a estrutura Kd-

tree [16] e tambeacutem o algoritmo ANN [16] No entanto o meacutetodo apresenta uma

restriccedilatildeo da Regra 2 ela soacute deve ser usada para classificaccedilotildees de pontos x se

a distacircncia x-p for maior que o espaccedilamento da amostragem local ηp em p

Este espaccedilamento da amostragem local ηp em p eacute um caacutelculo aproximado da

distacircncia meacutedia entre os surfels vizinhos a p Se x estaacute muito proacuteximo agrave

superfiacutecie a classificaccedilatildeo pode falhar Neste caso ele calcula o ponto exato de

S mais proacuteximo a x usando a projeccedilatildeo MLS (ldquoMoving Least Squaresrdquo)

Por questotildees de melhoria de desempenho utiliza-se o fato de que sendo

Ωp (x) a classificaccedilatildeo do ponto x em relaccedilatildeo agrave amostragem P tem-se que Ωp (x)

= Ωp (xrsquo) para todos os pontos de xrsquo que estatildeo dentro da esfera de centro x e

raio igual a x-p - ηp (onde p eacute o surfel mais proacuteximo e ηp eacute o espaccedilamento

local da amostragem em p acima citado) Ou seja sendo x um ponto qualquer p

o surfel mais proacuteximo a x ηp eacute o espaccedilamento local da amostragem em p se

desenharmos uma esfera com centro x e raio igual a x-p - ηp temos que

todos os pontos xrsquo que estatildeo dentro da esfera teratildeo a mesma classificaccedilatildeo de x

Desta forma o nuacutemero de vezes que a classificaccedilatildeo eacute feita (pesquisando-se o

surfel mais proacuteximo ao ponto e usando a Regra 2) diminui em ateacute 90 Assim

em geral a classificaccedilatildeo de um surfel eacute obtida a partir do seu surfel vizinho

Dados

S1 a superfiacutecie MLS de contorno que define o modelo A

S2 a superfiacutecie MLS de contorno que define o modelo B

P1 o conjunto de surfels que representa a superfiacutecie S1

P2 o conjunto de surfels que representa a superfiacutecie S2

Ωp1 (x) a classificaccedilatildeo do ponto p em relaccedilatildeo a uma amostragem P1

Q1 o subconjunto de P1 que vai compor o resultado

Ωp2 (x) a classificaccedilatildeo do ponto p em relaccedilatildeo a uma amostragem P2

Q2 o subconjunto de P2 que vai compor o resultado

Os conjuntos Q1 e Q2 satildeo obtidos por meio da Tabela 1 mostrada abaixo

Operaccedilotildees Booleanas com Pontos 42

Tabela 1 Classificaccedilatildeo para operaccedilotildees booleanas

Para o tratamento de interseccedilatildeo neste meacutetodo satildeo computados pontos

que caem exatamente na curva de interseccedilatildeo e estes satildeo acrescentados ao

modelo resultado Estes pontos satildeo determinados de forma que a densidade da

amostragem vai crescendo agrave medida que os surfels se aproximam da curva de

interseccedilatildeo e convergem para este ponto de interseccedilatildeo como mostra a Figura

13

(a) (b) (c)

Figura 13 - Os novos surfels satildeo colocados exatamente na curva de interseccedilatildeo

e convergem para o ponto de interseccedilatildeo

A Figura 14 mostra o processo de encontrar os surfels que caem nesta

curva de interseccedilatildeo Inicialmente satildeo encontrados todos os pontos de Q1 e Q2

que estatildeo proacuteximos agrave curva de interseccedilatildeo por meio da funccedilatildeo de distacircncia do

operador de projeccedilatildeo MLS Em seguida procura-se todos os pares mais

proacuteximos (q1 є Q1 q2 є Q2 ) e computa-se o ponto q na curva de interseccedilatildeo da

seguinte forma (veja a Figura 14)Seja r o ponto na linha de interseccedilatildeo dos dois

planos tangentes em q1 e q2 e que estaacute mais proacuteximo a estes dois pontos isto eacute

que minimiza a distacircncia ||r-q1|| + ||r-q2|| r eacute a primeira aproximaccedilatildeo de q e agora

pode ser projetado sobre S1 e S2 para obter dois novos pontos de partida q1rsquo e q2

rsquo

para a iteraccedilatildeo Este procedimento pode ser repetido iterativamente ateacute que os

pontos q1 e q2 convirjam ao ponto q na curva de interseccedilatildeo Normalmente este

processo requer menos de trecircs iteraccedilotildees

Operaccedilotildees Booleanas com Pontos 43

(a) (b)

(c)

Figura 14 (a) Suponhamos a reta que eacute a interseccedilatildeo do plano tangente a S1 em q1 e o

plano tangente a S2 em q2 O ponto r eacute o ponto desta reta que estaacute mais proacuteximo a q1 e

q2 (b) r eacute projetado sobre S1 e S2 obtendo-se q1acute e q2acute dois novos pontos de partida

para nova iteraccedilatildeo (c) A nova iteraccedilatildeo gera r que eacute uma aproximaccedilatildeo melhor de q

Pauly faz o tratamento de arestas vivas em tempo de renderizaccedilatildeo Ele

faz uma alteraccedilatildeo no renderizador Marca os surfels de interseccedilatildeo e ao

renderizaacute-los satildeo cortados para gerar uma aresta viva

44 Validade da Regra 2

Os dois meacutetodos analisados nesta dissertaccedilatildeo utilizam a seguinte regra

para a classificaccedilatildeo de um surfel

Regra 2 dado um volume V determinado por uma superfiacutecie de contorno

S uma amostragem P da superfiacutecie S um ponto x qualquer um ponto p є P que

eacute a amostra mais proacutexima a x um vetor ny normal a S em p e orientado para

fora de S temos que (x ndash p) np gt 0 x notinV

Em [16] eacute colocado que esta regra eacute tirada da seguinte propriedade da

geometria diferencial (aqui chamada Propriedade 1)

Propriedade 1 Dado um volume V determinado por uma superfiacutecie de

contorno S contiacutenua e duplamente diferenciaacutevel um ponto x qualquer um ponto

Operaccedilotildees Booleanas com Pontos 44

y є S que eacute o ponto de S mais proacuteximo a x um vetor ny normal a S em y e

orientado para fora de S temos que (x ndash y) ny gt 0 x notinV

A Figura 15 ilustra esta propriedade

Figura 15 Para verificar se o ponto x estaacute fora de um contorno C encontra-se o ponto y

de C Se o produto interno entre a normal em y e o vetor que liga y a x for maior que

zero entatildeo x estaacute fora de C senatildeo estaacute dentro de C

Pauly assume que tendo uma amostragem P da superfiacutecie S podemos

usar a Propriedade 1 substituindo y por p o surfel mais proacuteximo ao ponto x (x ndash

p) np gt 0 x notinV (Regra 2) Esta amostragem P em seu trabalho eacute

(aproximadamente) uma ldquoamostragem adequadardquo Tambeacutem seu tratamento de

interseccedilatildeo cria uma aproximaccedilatildeo dela (seccedilatildeo 43) Empiricamente a

ldquodiscretizaccedilatildeo da propriedaderdquo eacute vaacutelida a partir desta suposiccedilatildeo Mas isso natildeo foi

demonstrado teoricamente em seu trabalho

Pauly coloca em [16] que natildeo existe ainda uma teoria matemaacutetica rigorosa

de amostragem anaacuteloga a teoria de Fourier para superfiacutecies discretas

A melhor aproximaccedilatildeo teoacuterica para esta aacuterea eacute o uso do Eixo Medial que

foi colocado em [10] Vamos descrever este trabalho brevemente nesta seccedilatildeo

Este trabalho apresenta um algoritmo de reconstruccedilatildeo de superfiacutecie que parte de

uma amostragem adequada (abaixo definida) de pontos e obteacutem uma malha

que eacute topologicamente equivalente agrave superfiacutecie do objeto e agrave medida que a

densidade da amostragem cresce a saiacuteda converge para esta superfiacutecie

Para definir amostragem adequada o trabalho parte do conceito de Eixo

Medial

Operaccedilotildees Booleanas com Pontos 45

ldquoEixo Medialrdquo de uma superfiacutecie 2D posicionada no R3 eacute o conjunto

(fechado) de pontos pi para os quais buscando-se o ponto da superfiacutecie que

estaacute mais proacuteximo a pi mais de um ponto pertencentes a esta superfiacutecie satildeo

encontrados A Figura 16 abaixo ilustra o Eixo Medial em 2D

Figura 16 [10] As curvas de cor mais clara satildeo o Eixo Medial da curva em preto

Em duas dimensotildees os veacutertices de Voronoi de uma amostragem densa

aproximam o ldquoEixo Medialrdquo da amostragem (mas esta propriedade natildeo se

estende a 3D) A Figura 17 mostra o Eixo Medial em 3D

Figura 17 [10] Em 3D geralmente o Eixo Medial eacute uma superfiacutecie 2D (em cor mais

clara) Aqui o quadrado eacute o Eixo Medial da superfiacutecie transparente que o contorna

Podemos definir agora a amostragem adequada da seguinte forma

Supondo uma superfiacutecie suave que quer dizer uma 2-manifold duplamente

diferenciaacutevel posicionada no R3 uma ldquoamostragem adequadardquo desta superfiacutecie eacute

aquela na qual a densidade da amostragem eacute (pelo menos) inversamente

proporcional agrave distacircncia ao ldquoEixo Medialrdquo A Figura 18 mostra uma amostragem

adequada

Operaccedilotildees Booleanas com Pontos 46

Figura 18 [10] A figura mostra o diagrama de Voronoi de uma amostragem de pontos S

Da mesma forma que o a amostragem aproxima a curva os veacutertices de Voronoi

aproximam o Eixo Medial

Na praacutetica na reconstruccedilatildeo da superfiacutecie uma aproximaccedilatildeo deste ldquoEixo

Medialrdquo eacute computada (devido agrave dificuldade de computaacute-lo exatamente e em

alguns casos ateacute impossibilidade)

Melhorias Propostas 47

5 Melhorias Propostas

No capiacutetulo 4 apresentamos dois meacutetodos que realizam operaccedilotildees

booleanas em modelos por pontos o meacutetodo de Adams e Dutreacute [2] e o meacutetodo

de Pauly[3] Para esta dissertaccedilatildeo usamos o meacutetodo de Adams e Dutreacute [2] e

propomos as seguintes melhorias

- Alteramos o momento em que eacute feita a classificaccedilatildeo da octree Fazemos

esta classificaccedilatildeo durante a sua criaccedilatildeo Os noacutes filhos de um noacute pai P qualquer

satildeo classificados logo apoacutes a criaccedilatildeo de todos estes filhos de P

independentemente do restante da octree ter sido criada Isso pode ser feito

porque a octree eacute construiacuteda na ordem raiz-esquerda-direita (preorder

traversal) e portanto apoacutes todos os filhos de um noacute pai serem criados a parte

necessaacuteria da octree para a classificaccedilatildeo destes filhos jaacute estaacute criada

- A classificaccedilatildeo da octree eacute otimizada classificando-se os cantos dos seus

noacutes como dentro ou fora do modelo Na classificaccedilatildeo de um noacute n1 a partir de seu

vizinho n2 se os cantos que satildeo comuns a n1 e n2 tiverem a mesma

classificaccedilatildeo esta seraacute dada ao noacute Assim diminuiacutemos o nuacutemero de pesquisas

pelo surfel mais proacuteximo que eacute a parte criacutetica da classificaccedilatildeo dos noacutes da octree

em termos de tempo de processamento

- Acrescentamos um valor miacutenimo (maior que zero) para o nuacutemero de

surfels contidos em um noacute que eacute uma das condiccedilotildees de parada na criaccedilatildeo da

octree Verificamos que desta forma diminui-se a chance de erro na classificaccedilatildeo

de partes criacuteticas como ldquoarestas vivasrdquo

Uma comparaccedilatildeo entre a nossa implementaccedilatildeo e a de Pauly tambeacutem seraacute

feita no capiacutetulo 6

51 Descriccedilatildeo do algoritmo

O algoritmo implementado para esta dissertaccedilatildeo baseado no meacutetodo de

Adams e Dutreacute [2] pode ser dividido nas seguintes partes Criaccedilatildeo e

classificaccedilatildeo de uma octree para cada modelo Teste DentroFora Criaccedilatildeo do

modelo resultado Natildeo foi implementado tratamento especial algum de

interseccedilatildeo para o nosso plugin As proacuteximas seccedilotildees apresentam estas partes

Melhorias Propostas 48

511 Criaccedilatildeo e classificaccedilatildeo de uma octree para cada modelo

As ideacuteias do algoritmo satildeo aqui ilustradas em 2D mas a extensatildeo delas

para 3D eacute feita facilmente

Para cada modelo a octree eacute criada e classificada da seguinte forma

Figura 19-Quadtree classificada Os noacutes mais escuros estatildeo fora do modelo os mais claros dentro e os em tom intermediaacuterio satildeo noacutes de contorno

Gera-se uma ldquocaixa envolventerdquo do modelo contendo todos os surfels e

cria-se o noacute raiz da octree que corresponde a esta ldquocaixa envolventerdquo Este noacute

raiz eacute subdividido em oito filhos e seus surfels satildeo distribuiacutedos entre eles Ao

inveacutes de testarmos os valores de xy e z para cada surfel a fim de determinar

para qual filho ele iraacute utilizamos listas auxiliares Primeiro os surfels satildeo

subdivididos em dois grupos pelos valores de x e armazenados em uma lista

auxiliar Em seguida cada uma das listas eacute subdividida pelo valor de y e as

quatro listas obtidas seratildeo subdivididas pelo valor de z Ao final teremos 8 listas

de surfels cada uma delas pertencente a um filho

Cada noacute seraacute entatildeo novamente subdividido enquanto contiver um nuacutemero

de surfels gt nmin (valor preacute-definido) ou enquanto a profundidade da aacutervore lt pmax

(valor preacute-definido) Na figura 19 pmax = 3 e nmin = 3

Melhorias Propostas 49

Figura 20-O noacute cheio eacute dividido em trecircs partes agrave esquerda a regiatildeo estaacute dentro do modelo agrave direita estaacute fora e entre as duas linhas que dividem o noacute estaacute a regiatildeo que conteacutem os surfels

Os noacutes cheios recebem um tratamento especial Eles satildeo subdivididos em

trecircs partes da seguinte forma uma que estaacute fora do modelo outra que estaacute

dentro e uma que conteacutem os surfels Esta subdivisatildeo eacute feita por meio da criaccedilatildeo

de dois planos paralelos que dividem o noacute Para determinar estes planos

calcula-se o vetor nm igual agrave meacutedia das normais dos surfels do noacute nm = sum ns

sum ns onde ns eacute a normal de cada surfel do noacute Em seguida encontra-se o

surfel com maior produto interno entre a sua normal e a normal meacutedia

d1=Max(nm ٠ ns) Este surfel juntamente com a normal meacutedia define um dos

planos Encontra-se tambeacutem o surfel com menor produto interno entre a sua

normal e a normal meacutedia d2=Min (nm ٠ ns) Este surfel juntamente com a normal

meacutedia define o outro plano (Figura 20) Se o noacute conteacutem surfels de superfiacutecies de

orientaccedilotildees diferentes ele natildeo seraacute subdividido ou seja os planos coincidiratildeo

com os planos que delimitam o proacuteprio noacute Este teste foi implementado da

seguinte forma escolhe-se um surfel qualquer do noacute Calcula-se o produto

interno entre a normal deste surfel e as outras normais dos outros surfels deste

noacute Se algum produto interno for menor que zero este noacute natildeo seraacute subdividido

Apoacutes a etapa de subdivisatildeo classificam-se os oito cantos deste noacute como

dentro ou fora do modelo por meio da classificaccedilatildeo de um ponto que

descreveremos na sub-seccedilatildeo 5111

Melhorias Propostas 50

a b

c d

Figura 21-O noacute a eacute classificado pelo noacute c o noacute d tambeacutem eacute classificado pelo noacute c a classificaccedilatildeo do noacute a eacute propagada para o noacute b

Jaacute os noacutes vazios da octree seratildeo classificados como ldquodentrordquo ou ldquoforardquo do

modelo da seguinte forma cada noacute folha vazio eacute classificado a partir de um de

seus irmatildeos vizinhos adjacentes Se ele possuir um vizinho adjacente cheio ele

seraacute classificado por este vizinho se natildeo possuir os vizinhos adjacentes seratildeo

classificados primeiro e ele teraacute esta mesma classificaccedilatildeo (Figura 21) Como tem

que existir sempre pelo menos um noacute cheio entre os filhos de um noacute pai entatildeo

sempre esta classificaccedilatildeo poderaacute ser feita Com a classificaccedilatildeo de todos os

filhos tem-se tambeacutem a classificaccedilatildeo dos cantos do noacute pai

Mf03c003fmx a b

Figura 22-Os cantos a e b do noacute cheio possuem a mesma classificaccedilatildeo fora do modelo Esta classificaccedilatildeo foi dada ao noacute vazio adjacente

Melhorias Propostas 51

Para classificar um noacute vazio por meio de um noacute cheio verificam-se os

cantos comuns destes dois noacutes se todos os cantos tiverem a mesma

classificaccedilatildeo esta seraacute dada ao noacute vazio (Figura 22) Se houver classificaccedilotildees

diferentes escolhe-se o surfel do noacute cheio mais proacuteximo ao noacute vazio faz-se o

produto interno entre a normal deste surfel e o vetor que liga o centro do noacute

cheio ao centro do noacute vazio (ou o vetor que liga o surfel ao centro do noacute vazio)

Se o produto interno for maior que zero o noacute eacute classificado como ldquoforardquo senatildeo eacute

classificado como ldquodentrordquo Para encontrar o surfel (pertencente a um noacute cheio)

mais proacuteximo ao noacute vazio existem dois casos

- O noacute cheio eacute folha percorre-se toda a lista de surfels e escolhe o surfel

mais proacuteximo da fronteira entre o noacute cheio e o vazio

- O noacute cheio natildeo eacute um noacute folha percorrem-se os filhos do noacute cheio ou seja

esta pesquisa eacute feita descendo na octree a partir do noacute cheio procurando o

surfel mais proacuteximo agrave fronteira do pai com o noacute vazio a ser classificado

Classificando o centro do noacute vazio todo o noacute deve ter a mesma

classificaccedilatildeo pois este noacute natildeo conteacutem surfels Para encontrar o surfel do noacute

vazio mais proacuteximo da fronteira entre o noacute cheio e o vazio basta testar o valor da

coordenada se a fronteira eacute o lado direito do noacute cheio escolhe-se o surfel com

maior coordenada lsquoxrsquo se eacute o lado esquerdo escolhe-se o surfel com menor lsquoxrsquo

se lado superior surfel com maior lsquoyrsquo etc A seguir apresentamos a classificaccedilatildeo

de um ponto qualquer pertencente a um noacute cheio

Figura 23- Quadtree classificada

Melhorias Propostas 52

5111 Classificaccedilatildeo de um ponto de um noacute cheio

Figura 24 [2] A normal n eacute a normal meacutedia e os surfels s1 e s2 juntamente com a normal

n definem as retas que dividem o noacute O ponto a estaacute fora do modelo e o ponto b estaacute

dentro do modelo

Para um ponto localizado dentro do noacute faz-se o seguinte teste se o noacute foi

dividido testa-se de acordo com a divisatildeo do noacute se o ponto estaacute na parte do noacute

que estaacute dentro do modelo ele eacute classificado como ldquodentrordquo se o ponto estaacute na

parte que estaacute fora do modelo ele eacute classificado como ldquoforardquo (Figura 24) se o

ponto estaacute na parte que conteacutem os surfels encontra-se o surfel s pertencente ao

noacute mais proacuteximo do ponto e o classifica de acordo com s seja ns a normal em s

cs a coordenada de s cp a coordenada do ponto Se (cp - cs )٠ ns gt 0 o ponto

seraacute classificado como ldquoforardquo Senatildeo seraacute classificado como ldquodentrordquo

Se o noacute natildeo foi dividido em planos esta classificaccedilatildeo a partir do surfel

mais proacuteximo seraacute sempre feita

512 Teste DentroFora

Melhorias Propostas 53

Figura 25-Duas circunferecircncias e suas quadtrees correspondentes

O Teste DentroFora classifica os surfels de um modelo como dentro ou

fora de outro modelo ou na sua interseccedilatildeo Este teste foi aqui implementado

exatamente como foi proposto em Adams e Dutreacute [2] exceto que natildeo foi

implementado o meacutetodo TINN - Triangle Inequality Nearest Neighbour [19]

Cada octree eacute percorrida verificando-se se os seus noacutes ou surfels estatildeo dentro

fora ou no contorno do outro modelo (Figura 25) Sejam A e B duas octrees e

queremos classificar a octree A As duas octrees (AB) satildeo percorridas partindo

da raiz

Para cada noacute de A existem quatro casos (Figura 26) Para testar estas

situaccedilotildees os boxes dos noacutes satildeo aumentados de rmax o raio do maior surfel do

modelo Isto eacute feito para compensar o fato de que o surfel natildeo eacute apenas um

ponto mas sim considerado como um disco

Os quatro casos satildeo

Se o noacute de A natildeo intersecta B entatildeo todos os surfels deste noacute satildeo

classificados como fora

Se o noacute de A intersecta apenas noacutes de B que estatildeo fora do modelo

todos os surfels deste noacute satildeo fora

Se o noacute de A intersecta apenas noacutes de B que estatildeo dentro do modelo

todos os surfels deste noacute satildeo dentro

Melhorias Propostas 54

Se o noacute de A intersecta noacutes de B que estatildeo dentro e tambeacutem noacutes de B

que estatildeo fora testa-se se este noacute de A eacute ou natildeo folha Se natildeo for folha

percorre-se os filhos deste noacute de A ateacute encontrar um noacute folha cheio que

intersecta B Para cada surfel sa deste noacute folha de A encontra-se o surfel de B

mais proacuteximo e classifica-se a coordenada de sa da forma apresentada na seccedilatildeo

5111 Seja sb o surfel usado na classificaccedilatildeo de sa Se os discos de sb e sa

se intersectam sa eacute classificado como ldquointerseccedilatildeordquo

(a) (b)

(c) (d)

Figura 26- a modelos natildeo se intersectam b modelo intersecta noacutes fora c modelo intersecta apenas noacutes dentro d modelo intersecta noacutes dentro e noacutes fora

513 Criaccedilatildeo do modelo resultado

Um novo modelo eacute criado com os seguintes surfels (de acordo com a

operaccedilatildeo booleana escolhida pelo usuaacuterio - veja Regra 1 da seccedilatildeo 41)

Uniatildeo - surfels de A que estatildeo fora de B + surfels de B que estatildeo fora de A

Melhorias Propostas 55

Interseccedilatildeo - surfels de A que estatildeo dentro de B + surfels de B que estatildeo

dentro de A

Diferenccedila A-B - surfels de A que estatildeo fora de B + surfels de B que estatildeo

dentro de A (com orientaccedilatildeo invertida)

Como natildeo foi implementado tratamento especial algum de interseccedilatildeo para

o nosso plugin os surfels que se intersectam satildeo mantidos no modelo resultado

final sem modificaccedilotildees

Descrito o algoritmo vejamos a seguir a sua implementaccedilatildeo

52 Implementaccedilatildeo

Este algoritmo foi implementado na forma de um plugin para o software

PointShop 3D [11] Este plugin foi desenvolvido na linguagem C e no sistema

operacional Windows

A escolha deste tipo de implementaccedilatildeo permitiu-nos usar o software

PointShop para os testes do algoritmo Estes testes foram feitos com os modelos

disponibilizados para o PointShop [11] Nesta seccedilatildeo apresentaremos o software

PointShop e as principais estruturas de dados usadas em nosso plugin

O Pointshop eacute um software aberto com seu coacutedigo disponiacutevel e preparado

para trabalhar com plugins Eacute um software de ediccedilatildeo de modelos 3D por pontos

Ele permite aleacutem de visualizar o modelo alterar as suas caracteriacutesticas como

cor brilho e fazer mapeamento de textura iluminaccedilatildeo filtragem (Figura 27)

Melhorias Propostas 56

Figura 27-Software PointShop 3D com dois modelos carregados na sua cena

Aleacutem disso pode-se criar uma cena com vaacuterios modelos e visualizaacute-los de

qualquer ponto de vista Implementa o virtual trackball para rotacionaacute-los e

transladaacute-los Usa uma iluminaccedilatildeo simples direcional A sua arquitetura eacute

extensiacutevel permite que o usuaacuterio adicione seus proacuteprios componentes ao

sistema Possui trecircs tipos de componentes

ldquoToolsrdquo fornece funcionalidades para ediccedilatildeo interativa de superfiacutecie Satildeo

disponibilizados na ldquotoolbarrdquo

Plugins fornece funcionalidades para processar em um soacute passo

modelos ou partes deles selecionadas Satildeo disponibilizados no menu ldquoPluginsrdquo

Renderes fornece funcionalidades de display para os modelos

Para esta dissertaccedilatildeo foi escolhida a construccedilatildeo do componente Plugin

por adequar-se agrave nossa proposta e ser a mais simples de ser construiacuteda O

PointShop [11] jaacute conteacutem uma tool que executa operaccedilotildees booleanas e

deformaccedilatildeo free-form sobre os modelos carregados na cena usando o meacutetodo

de Pauly [3] apresentado no capiacutetulo 4 O nosso plugin Operaccedilotildees Booleanas

implementa o algoritmo descrito na seccedilatildeo anterior baseado na proposta de

Melhorias Propostas 57

Adams e Dutreacute [2] Uma comparaccedilatildeo entre o nosso plugin e a tool de Pauly [3] eacute

feita no capiacutetulo 6

Figura 28-Menu do PointShop com o plugin e as opccedilotildees para operaccedilotildees booleanas

Para se executar o plugin o usuaacuterio precisa carregar dois modelos na

cena do PointShop acionar o plugin informando a operaccedilatildeo que seraacute executada

O plugin executaraacute o algoritmo acima proposto e carregaraacute o resultado na cena

do Pointshop retirando os modelos anteriores

521 Estruturas de Dados

Como vimos o software PointShop [11] trabalha com modelos por pontos

Um modelo deste software descrito na seccedilatildeo 42 conteacutem todas as informaccedilotildees

que o algoritmo proposto em Bart [2] necessita Abaixo relacionamos as

Melhorias Propostas 58

principais estruturas de dados do PointShop usadas no plugin e as principais

estruturas de dados do nosso plugin

As principais classes do PointShop usadas no plugin satildeo

Classe Scene

Classe Objects

Classe SurfelColections

Classe Surfel

Classe StatusBar

Classe Transformer

A hierarquia de dados eacute a seguinte a Scene conteacutem vaacuterios Objects os

quais conteacutem SurfelColections Cada SurfelColections conteacutem Surfels que

suportam uma ou mais propriedades tais como cor difusa cor especular

Classe Scene Classe que representa uma cena que conteacutem modelos

Classe Object Um modelo eacute representado pela classe Object que

conteacutem uma SurfelCollection e as matrizes de transformaccedilatildeo para rotaccedilatildeo

escala e translaccedilatildeo Cada Object eacute identificado pelo seu nome que eacute uacutenico na

Scene O meacutetodo getUniqueName retorna um nome uacutenico Cada Object tem sua

proacutepria matriz de transformaccedilatildeo que pode ser modificada com setRotation

rotate setPosition translate setScale e scale Objects podem ser copiados com

copy Objects consiste em um conjunto de surfels os quais podem ser

recuperados pela getSurfelCollection O Object pode ser ativado com

setActiveObject e recuperado com getActiveObject

Objects podem ser adicionados ou removidos com addObject e

removeObject Os Objects podem ser obtidos pela getFirstObject e

getNextObject

Classe SurfelCollection representa o conjunto de surfels de um modelo

Cada surfelcollection consiste em um conjunto de surfels (SurfelInterface) de

tamanho obtido por getNofSurfels Os surfels podem ser recuperados com

getFirstSurfel getCurrentSurfel e getNextSurfel

A SurfelCollection conteacutem um PropertyDescriptor e uma SurfelList

A SurfelList eacute uma lista duplamente encadeada de surfels Possui os

atributos firstSurfel lastSurfel currentSurfel que satildeo ponteiros para uma

SurfelInterface nSurfels que eacute o nuacutemero de Surfels

A SurfelInterface define a API para os surfels que satildeo os menores

elementos que compotildeem um Object Podem ser considerados como pontos com

uma normal que define a orientaccedilatildeo do ciacuterculo (ou elipse) que seraacute desenhado

Melhorias Propostas 59

tatildeo logo o surfel seja renderizado Tem como atributos dois ponteiros (next e

prev) para SurfelInterface

PropertyDescriptor consiste em ateacute 32 valores descrevendo quais as

propriedades a SurfelInterface suporta

Classe Surfel classe que representa o surfel

Classe StatusBar classe que imprime mensagens na tela Os plugins

podem mandar mensagens para o usuaacuterio pela StatusBar

Mensagens texto podem ser impressas com showMessage O progresso

de uma operaccedilatildeo pode ser indicado com setProgress ou resetProgress

Classe Transformer representa a transformaccedilatildeo entre sistemas de

coordenadas Esta classe fornece meacutetodos para transformar pontos e vetores

entre os diferentes sistemas de coordenadas do Pointshop

A seguir apresentamos as principais estruturas de dados do plugin

Operaccedilotildees Booleanas

As principais estruturas de dados do plugin satildeo boundingbox tree no

lista_surfel surfel

Boundingbox conteacutem dois pontos 3D que definem uma caixa que conteacutem

o modelo um ponto com menores coordenadas xy e z e outro ponto com

maiores xyz

Tree representa a octree do modelo Cada registro conteacutem um ponteiro

para um noacute e oito ponteiros para as 8 octrees filhas

No representa um noacute da octree Conteacutem os seguintes dados

- localizaccedilatildeo do noacute que eacute o canto inferior esquerdo do noacute

- lista_surfel (preenchida apenas para noacutes folha cheios)

- quantidade de surfels do noacute

- classificaccedilatildeo do noacute como dentro fora ou contorno

- classificaccedilatildeo do noacute em relaccedilatildeo a outro modelo

- indica se o noacute eacute folha ou natildeo

- vetor que eacute a meacutedia das normais dos surfels do noacute

- ponto que eacute a meacutedia das localizaccedilotildees dos surfels do noacute

- surfel que tem (entre todos os surfels do noacute) o maior produto interno

entre a sua normal e a normal meacutedia

- surfel que tem (entre todos os surfels do noacute) o menor produto interno

entre a sua normal e a normal meacutedia

- produto interno maacuteximo e miacutenimo entre as normais dos surfels do noacute e a

normal meacutedia deste noacute

Melhorias Propostas 60

- indica se o noacute conteacutem surfels com normais em sentido oposto (produto

interno entre elas eacute menor que zero)

- classificaccedilatildeo dos oito cantos do noacute

lista_surfels lista em que cada registro conteacutem um apontador para um

surfel e um apontador para o proacuteximo registro

surfel representa o surfel da octree Conteacutem a classificaccedilatildeo em relaccedilatildeo a

outro modelo e um ponteiro para o surfel do Poinshop

Resultados 61

6 Resultados

Neste capiacutetulo apresentamos os testes realizados com o plugin para o

PointShop implementado para esta dissertaccedilatildeo a comparaccedilatildeo deste plugin com

o plugin de Pauly [3] e a comparaccedilatildeo entre o meacutetodo de Adams e Dutreacute [2] e o

meacutetodo de Pauly [3]

61 Testes

Os testes foram feitos em um PC x86 Family 6 261600 KB de RAM sem

placa graacutefica sistema operacional Windows 2000 O plugin foi implementado na

linguagem C

Os modelos usados para os testes satildeo modelos disponibilizados no

PointShop [11] Vale lembrar que o meacutetodo implementado em nosso plugin eacute

restrito a modelos soacutelidos e portanto foram usados apenas estes modelos

soacutelidos para os testes

O modelo na Figura 29 que eacute um dos modelos disponibilizados no

PointShop [11] foi usado para mostrar o resultado das operaccedilotildees realizadas

pelo plugin implementado nesta dissertaccedilatildeo O modelo Igea eacute um modelo soacutelido

que conteacutem 134345 surfels

Resultados 62

Figura 29-Modelo do PointShop Igea

Para realizar as operaccedilotildees este modelo foi carregado na cena do

PointShop duas vezes e um deles colorido de vermelho As Figuras 30 31 32

mostram o resultado da operaccedilatildeo de uniatildeo interseccedilatildeo e diferenccedila

respectivamente Os nuacutemeros de surfels dos modelos resultantes satildeo mostrados

na Tabela 2

Resultados 63

Figura 30-Resultado da uniatildeo de duas Igeas

Figura 31-Resultado da interseccedilatildeo de duas Igeas

Resultados 64

Figura 32-Resultado da diferenccedila entre duas Igeas

Tabela 2-Nuacutemero de surfels dos modelos resultantes

Observamos que o nuacutemero de surfels dos modelos resultantes estaacute

coerente com as figuras dos seus modelos

Para avaliar o tempo de processamento das operaccedilotildees foram realizados

vaacuterios testes com o objetivo de obter uma meacutedia dos tempos de realizaccedilatildeo de

cada operaccedilatildeo Tambeacutem foram armazenados os tempos da criaccedilatildeo das duas

octrees e da classificaccedilatildeo de todos os surfels dos dois objetos (como dentro ou

fora do outro modelo) Estes testes foram feitos usando o modelo Igea A meacutedia

dos tempos de processamento foi calculada e os resultados satildeo mostrados na

Tabela 3 Verificamos que o maior tempo gasto eacute para criaccedilatildeo das octrees

Verificamos tambeacutem que este resultado apresentado eacute similar ao resultado

verificado empiricamente com o plugin de Pauly [3] Os tempos gastos para

realizar as operaccedilotildees satildeo similares e o maior tempo gasto no plugin de Pauly

tambeacutem eacute para inicializaccedilatildeo de suas estruturas de dados que incluem a kd-tree

Operaccedilatildeo Nuacutemero de surfels do modelo resultado

Uniatildeo 189715

Interseccedilatildeo 72225

Diferenccedila 134552

Resultados 65

Operaccedilatildeo Criaccedilatildeo das

Octrees (seg)

Classificaccedilatildeo

(seg)

Criaccedilatildeo do

resultado (seg)

Total (seg)

Uniatildeo 39375 1324 18925 7154

Interseccedilatildeo 38585 1585 09547 63982

Diferenccedila 399875 1504 1729 729475

Tabela 3- Meacutedia dos tempos de processamento para as operaccedilotildees com duas Igeas

Com o objetivo de expor melhor os resultados deste trabalho

apresentamos abaixo mais um teste das operaccedilotildees booleanas usando o nosso

plugin Os modelos usados para este segundo teste satildeo o Max Planck e o Male

ambos modelos soacutelidos disponibilizados no PointShop Estes modelos satildeo

mostrados nas figura 33 e 34

O primeiro Max Planck conteacutem 52809 surfels

Figura 33-Modelo do PointShop MaxPlanck

O segundo modelo abaixo Male conteacutem 148138 surfels

Resultados 66

Figura 34-Modelo do PointShop Male

As Figuras 353637 mostram o resultado da operaccedilatildeo de uniatildeo interseccedilatildeo

e diferenccedila respectivamente usando os dois modelos acima Podemos observar

pela figura 35 que o resultado da operaccedilatildeo de diferenccedila neste caso gerou um

modelo resultado com trecircs partes desconexas Os nuacutemeros de surfels de cada

modelo resultado satildeo mostrados na Tabela 5

Figura 35- Resultado da Uniatildeo do modelo Male com MaxPlanck

Resultados 67

Figura 36-Resultado da interseccedilatildeo do modelo Male com o MaxPlanck

Figura 37-Resultado da diferenccedila do modelo Male do modelo MaxPlanck

As meacutedias de tempos de processamento foram calculadas da mesma

forma que o primeiro teste com o modelo Igea acima apresentado Os

resultados satildeo mostrados na Tabela 4 Podemos observar que este teste

Resultados 68

apresenta tempos um pouco menores que o teste com o modelo Igea Isto se

deve ao fato de que o modelo MaxPlanck ser significativamente menor que o

modelo Igea MaxPlanck possui 52809 surfels e Igea conteacutem 134345 surfels

Operaccedilatildeo Criaccedilatildeo das

Octrees (seg)

Classificaccedilatildeo

(seg)

Criaccedilatildeo do

resultado (seg)

Total

(seg)

Uniatildeo 3012 1254 102 5285

Interseccedilatildeo 2985 0901 0861 4747

Diferenccedila 2965 0911 0791 4667

Tabela 4-Tempo de processamento das operaccedilotildees com os modelos MaxPlanck e Male

Operaccedilatildeo Nuacutemero de surfels do resultado

Uniatildeo 126532

Interseccedilatildeo 88414

Diferenccedila 77635

Tabela 5-Nuacutemero de surfels dos modelos resultados das operaccedilotildees com os modelos MaxPlanck e Male

Em seguida apresentaremos uma comparaccedilatildeo entre o nosso plugin e o

plugin de Pauly[3] e tambeacutem uma comparaccedilatildeo entre o meacutetodo de Adams e Dutreacute

[2] e o meacutetodo de Pauly [3]

62 Comparaccedilatildeo entre os dois meacutetodos que realizam operaccedilotildees booleanas

A comparaccedilatildeo entre os meacutetodos de Pauly[3] e de Adams e Dutreacute foi feita

em termos de tempo de processamento e em termos conceituais Em termos de

tempo de processamento comparamos o plugin de Pauly[3] com o nosso plugin

Em termos de tempo de processamento verifica-se empiricamente que os

dois meacutetodos apresentam tempos bastante similares Entretanto o tempo de

processamento do algoritmo aqui implementado ainda pode ser melhorado com

Resultados 69

o uso do meacutetodo TINN [19] que foi proposto em Adams[2] - para otimizar a

pesquisa do surfel mais proacuteximo a um ponto que estaacute localizado na regiatildeo de um

noacute que conteacutem surfels - veja seccedilatildeo 42 O uso deste meacutetodo natildeo foi

implementado para este trabalho e a sua implementaccedilatildeo melhoraria o tempo de

resposta do algoritmo Aleacutem disso o trabalho de Sara F Frisken [12] citado no

capiacutetulo 2 apresenta uma otimizaccedilatildeo no uso de octrees que pode ser

incorporada no algoritmo implementado neste trabalho

Em termos conceituais vamos fazer a comparaccedilatildeo do uso do que

chamamos aqui de Regra 2 do tratamento de interseccedilatildeo e do tratamento de

ldquoarestas vivasrdquo

Como vimos na seccedilatildeo 41 tanto o algoritmo implementado nesta

dissertaccedilatildeo baseado no trabalho de Adams e Dutreacute como o meacutetodo de Pauly

[3] parte do que chamamos aqui de Regra 2 para realizar operaccedilotildees booleanas

com pontos Mas cada um destes meacutetodos daacute um tratamento diferente para o

uso desta regra

O meacutetodo de Pauly usa a Regra 2 para classificaccedilatildeo de cada ponto ou de

cada surfel Para classificar um surfel de B sb como dentro ou fora de A eacute

encontrado o surfel de A sa mais proacuteximo a sb e sb eacute classificado a partir de sa

Para encontrar sa Pauly utiliza uma kd-tree Como esta pesquisa para encontrar

sa eacute cara (mesmo usando uma kd-tree) Pauly utiliza uma esfera que conteacutem

pontos com a mesma classificaccedilatildeo (seccedilatildeo 432) e diminui em 90 este nuacutemero

de pesquisas Pauly utiliza tambeacutem a representaccedilatildeo impliacutecita MLS (Moving Least

Squares) para casos em que a Regra 2 poderia falhar e para tratamento de

interseccedilotildees Entretanto o nuacutemero destes casos em que a Regra 2 poderia falhar

eacute muito pequeno E a representaccedilatildeo MLS natildeo eacute uma estrutura simples de ser

implementada Portanto natildeo encontramos vantagens em usar MLS para estes

casos O meacutetodo de Adams e Dutreacute natildeo trata estes casos e na praacutetica

apresenta resultados bastante satisfatoacuterios como foi mostrado Portanto

consideramos que valeria a pena fazer algum tratamento especial para estes

casos se fosse um procedimento simples Para a execuccedilatildeo do algoritmo de

Pauly o uso de MLS natildeo interfere significativamente porque a construccedilatildeo desta

representaccedilatildeo natildeo eacute feita somente para realizar operaccedilotildees booleanas Os testes

empiacutericos que fizemos com o algoritmo de Pauly natildeo incluem a construccedilatildeo desta

representaccedilatildeo

Aparentemente os dois algoritmos satildeo bastante parecidos um usa octrees

e o outro usa kd-tree As duas estruturas de dados satildeo simples e otimizam a

classificaccedilatildeo dos surfels de um modelo como dentro ou fora do outro modelo

Resultados 70

Mas existe uma diferenccedila conceitual entre dois que merece ser destacada O

algoritmo aqui implementado usa a Regra 2 para classificaccedilatildeo dos noacutes de uma

octree e armazena esta octree classificada (ver capiacutetulo 5) Assim na maioria dos

casos natildeo seraacute necessaacuterio encontrar o surfel mais proacuteximo para classificar um

ponto (ou um surfel) como fora ou dentro de um modelo Caso o ponto esteja em

uma aacuterea da octree classificada ele teraacute a classificaccedilatildeo dada agravequela aacuterea A

pesquisa ao surfel mais proacuteximo seraacute feita apenas nos casos em que o ponto a

ser classificado estaacute localizado entre os planos que subdividem um noacute cheio

O uso desta octree classificada levanta uma questatildeo que natildeo foi citada no

trabalho de Adams e Dutreacute que eacute a proximidade desta estrutura (armazenada)

de octree classificada com uma representaccedilatildeo volumeacutetrica do objeto Sendo

assim esta estrutura pode ser aproveitada para outras funccedilotildees aleacutem da

classificaccedilatildeo dos surfels Por exemplo podemos ter uma aproximaccedilatildeo do

volume de uma cena somando os volumes aproximados dos modelos que a

compotildeem Como o enfoque deste trabalho eacute operaccedilatildeo booleana natildeo vamos nos

aprofundar nesta questatildeo

Outra importante diferenccedila entre os dois trabalhos que jaacute foi explicada na

seccedilatildeo 432 eacute que o meacutetodo de Pauly aplica-se a modelos soacutelidos ou natildeo

soacutelidos enquanto que o meacutetodo de Adams e Dutreacute aplica-se somente a modelos

soacutelidos

Quanto ao tratamento de interseccedilatildeo em termos de visualizaccedilatildeo todos os

dois resolvem bem o problema O tratamento de interseccedilatildeo nos dois trabalhos

tambeacutem resolve o problema da validade da Regra 2 (ver seccedilatildeo 44) Entretanto

o tratamento de Adams e Dutreacute natildeo depende da renderizaccedilatildeo sendo portanto

mais portaacutevel Aleacutem disso uma desvantagem do meacutetodo de Pauly eacute o uso da

representaccedilatildeo impliacutecita MLS (ldquoMoving Least Squaresrdquo) do objeto para obter os

pontos exatamente na curva de interseccedilatildeo Esta representaccedilatildeo torna o

tratamento de interseccedilatildeo mais complexo e a vantagem apresentada natildeo eacute tatildeo

significativa para este tratamento de interseccedilatildeo

Conclusatildeo 71

7 Conclusatildeo

Concluiacutemos entatildeo que as escolhas de Adams e Dutreacute por usar uma

octree classificada e pelo tratamento dado agrave interseccedilatildeo satildeo mais abrangentes

que a escolha de Pauly E consideramos que quanto mais abrangente for uma

escolha conceitual mais resultados poderemos tirar dela No caso de Adams e

Dutreacute eles estendem o problema de classificar um ponto para classificar todo o

modelo Como foi citado ele quase fornece uma representaccedilatildeo volumeacutetrica do

modelo Esta aproximada representaccedilatildeo volumeacutetrica pode nos fornecer outras

informaccedilotildees como por exemplo o volume aproximado do modelo

Aleacutem disso o uso da representaccedilatildeo impliacutecita MLS no meacutetodo de Pauly cria

uma complexidade a mais para o meacutetodo sem apresentar vantagens para a

realizaccedilatildeo de operaccedilotildees booleanas que eacute o nosso enfoque

Logo podemos dizer que o meacutetodo de Adams e Dutreacute apresenta as

seguintes vantagens em relaccedilatildeo ao de Pauly

- a estrutura de octree classificada aleacutem de ser usada para classificaccedilatildeo

fornece informaccedilotildees adicionais como volume aproximado do objeto

- o tempo de processamento no meacutetodo de Adams e Dutreacute tende a ser

melhor que no meacutetodo de Pauly se implementadas as melhorias acima citadas e

se colocaacutessemos em consideraccedilatildeo o uso da representaccedilatildeo impliacutecita MLS

(Moving Least Squares)

- o tratamento de interseccedilatildeo de Adams e Dutreacute apresenta a vantagem da

portabilidade ou seja iraacute funcionar independente do algoritmo de renderizaccedilatildeo

utilizado

E as vantagens do meacutetodo de Pauly em relaccedilatildeo ao de Adams e Dutreacute

- a colocaccedilatildeo de surfels exatamente na curva de interseccedilatildeo

- a possibilidade de trabalhar com modelos soacutelidos ou natildeo soacutelidos

E finalizando concluiacutemos que o estudo relatado nesta dissertaccedilatildeo foi

importante por

- fornecer um breve estudo sobre modelagem por pontos uma nova e

promissora aacuterea dentro da computaccedilatildeo graacutefica

Conclusatildeo 72

- por apresentar uma avaliaccedilatildeo dos dois trabalhos existentes sobre

operaccedilotildees booleanas com pontos encontrando as vantagens de cada um

e levantando questotildees que natildeo tinham sido citadas nos trabalhos originais

- por propor e implementar melhorias ao trabalho de Adams e Dutreacute

71 Trabalhos Futuros

Nossa implementaccedilatildeo pode ser ainda evoluiacuteda com as propostas

apresentadas na seccedilatildeo 62 Como observamos o tempo de processamento do

algoritmo aqui implementado ainda pode ser melhorado com o uso do meacutetodo

TINN [19] - que foi proposto em Adams[2] - para otimizar a pesquisa do surfel

mais proacuteximo a um ponto que estaacute localizado na regiatildeo de um noacute que conteacutem

surfels Aleacutem disso o trabalho Simple and Efficient Trasversal Methods for

Quadtrees and Octrees de Sara F Frisken [12] citado no capiacutetulo 2 apresenta

uma otimizaccedilatildeo no uso de octrees Outra proposta para melhorar o tempo de

processamento do algoritmo aqui implementado eacute usar a forma de trabalhar com

octrees apresentada neste trabalho

O trabalho de Adams e Dutreacute [2] eacute aplicado apenas a objetos soacutelidos O

nosso plugin portanto aplica-se somente a este tipo de objeto Jaacute o trabalho de

Pauly[3] eacute aplicado tambeacutem a modelos natildeo soacutelidos Apresentamos como

proposta a um trabalho futuro a extensatildeo do algoritmo aqui implementado para

modelos natildeo soacutelidos O surfel pode conter uma informaccedilatildeo adicional que indica

se ele estaacute delimitando um volume ou natildeo Assim pode-se ter um modelo com

ldquopartes soacutelidasrdquo e ldquopartes natildeo soacutelidasrdquo Por exemplo a uniatildeo de um plano com

uma esfera poderia resultar numa esfera com ldquoabasrdquo (seriam as partes do plano

que estariam fora da esfera) O modelo resultado teria uma parte correspondente

a um espaccedilo 3D (esfera) e outra parte que seria uma superfiacutecie 2D posicionada

no espaccedilo 3D sem delimitar algum volume (abas)

Muitos trabalhos podem ser desenvolvidos aplicando-se o modelo por

pontos em animaccedilatildeo jogos visualizaccedilatildeo de terrenos criaccedilatildeo de protoacutetipos etc

considerando-se a eficiecircncia e simplicidade do modelo E mais especificamente

as operaccedilotildees booleanas com pontos podem ser aplicadas para criaccedilatildeo de

cenaacuterios testes de colisotildees e nestes casos a representaccedilatildeo usando octrees

pode ser mais explorada considerando-se o seu potencial de representaccedilatildeo

volumeacutetrica de um objeto

Referecircncias Bibliograacuteficas 73

8 Referecircncias Bibliograacuteficas

[1] MAumlNTYLAuml M An Introduction to Solid Modeling Computer Science Press 1988

[2] ADAMS B DUTREacute P Interactive Boolean Operations on Surfel-

Bounded Solids Proceedings of SIGGRAPH 2003 San Diego USA 2003

[3] PAULY M KEISER R KOBBELT L GROSS M Shape Modeling

with Point-Sampled Geometry SIGGRAPH 2003 Computer Graphics

Proceedings Annual Conference Series ACM Press ACM SIGGRAPH 2003

[4] LEVOY M WHITTED T The Use of Points as Display Primitives

Technical Report TR 85-022 The University of North Carolina at Chapel Hill

Department of Computer Science 1985

[5] PFISTER H ZWICKER M VAN BAAR J GROSS M 2000 Surfels

Surface Elements as Rendering Primitives SIGGRAPH 2000 pp 335ndash342 New

Orleans LA July 23-28 2000

[6] ZWICKER M PFISTER H VAN BAAR J GROSS M Surface

Splatting SIGGRAPH 2001

[7] PAULY M KOBBELT L GROSS M Multiresolution Modeling of

Point-Sampled Geometry CS Techinical Report 378 September 16 2002

[8] CURLESS B New Methods for Surface Reconstruction from Range Images PhD thesis Stanford University 1997

[9] RUSINKIEWICZ S Real-time Acquisition and Rendering of Large 3D Models PhD thesis Stanford University 2001

Referecircncias Bibliograacuteficas 74

[10] AMENTA N BERN M KAMVYSSELIS M A new Voronoi-Based

Surface Reconstruction Algorithm SIGGRAPH 98 Conference proceedings pp

415-421 New York 1998

[11] ZWICKER M PAULY M KNOLL O GROSS M Pointshop 3D an

Interactive System for Point-Based Surface Editing Proceedings of SIGGRAPH 2002 San Antonio TX July 2002

[12] FRISKEN S PERRY R Simple and Efficient Traversal Methods for

Quadtrees and Octrees Journal of Graphics Tools Vol 7 Issue 3 May 2003

[13] CORREcircA W T OLIVEIRA M M Silva C T Wang J

Modeling and Rendering of Real Environments

Revista de Informaacutetica Teoacuterica e Aplicada (Brazilian Journal of Theoretic and Applied Computing) 9(2)127-156 2002

[14] DAVIS J MARSCHNER S GARR M LEVOY M Filling Holes in

Complex Surfaces Using Volumetric Diffusion First International Symposium on 3D Data Processing Visualization Transmission June 2002

[15] RAumlSAumlNEN J Surface Splatting Theory Extensions and Implementation Masterrsquos Thesis Dept of Computer Science Helsinki

University of Technology May 28 2002

[16] PAULY M Point Primitives for Interactive Modeling and Processing of 3D Geometry PhD thesis Federal Institute of Technology (ETH)

of Zurich 2003

[17] HOPPE H DEROSE T DUCHAMP T MCDONALD J

STUELZLE W Surface Reconstruction from Unorganized Points Computer Graphics 26(2)71ndash78 July 1992

[18] ALEXA M BEHR J COHEN-OR D FLEISHMAN S LEVIN D

SILVA C T Point Set Surfaces IEEE Visualization 2001 pp 21ndash28 October

2001

Referecircncias Bibliograacuteficas 75

[19] GREENSPAN M GODIN G TALBOT J Acceleration of Binning

Nearest Neighbor Methods Proceedings of Vision Interface 2000 pp 337-

344

[20] MENCL R Reconstruction of Surfaces from Unorganized Three-Dimensional Point Clouds Dissertation Dortmund Univ 2001

[21] KRIVANEK J Representing and Rendering Surfaces With Points

httpciteseernjneccomkrivanek03representinghtml Acesso em 30 jul

2003

[22] KRISTJANSSON ET AL Approximate Boolean Operations on Free-

form Solids Proceedings of SIGGRAPH 01 2001

Modelagem por Pontos 25

3D do modelo encontramos sua projeccedilatildeo 2D no plano da cacircmera e associamos

a cor do pixel nesta projeccedilatildeo agrave cor do ponto 3D

353 Correccedilatildeo das falhas da aquisiccedilatildeo

O processo de aquisiccedilatildeo deixa frequumlentemente buracos no modelo devido

a ruiacutedos no processo ou agrave impossibilidade de aquisiccedilatildeo de determinadas partes

de uma superfiacutecie Estes buracos devem ser corrigidos Pode-se usar por

exemplo um filtro de passa-baixa para remoccedilatildeo de ruiacutedos [14] Meacutetodos de

difusatildeo geomeacutetrica tecircm sido aplicados para preenchimento dos buracos [15] A

correccedilatildeo das falhas eacute tida como um preacute-processamento para o processo de

reconstruccedilatildeo da superfiacutecie contiacutenua (seccedilatildeo 36)

36 Reconstruccedilatildeo da superfiacutecie (contiacutenua) a partir do modelo (discreto)

A reconstruccedilatildeo da superfiacutecie contiacutenua consiste em a partir de um conjunto

natildeo estruturado de pontos obter um modelo contiacutenuo desta superfiacutecie Esta

reconstruccedilatildeo eacute frequumlentemente exigida para um modelo por pontos Na sua

visualizaccedilatildeo podemos desejar focar qualquer parte do modelo Para fazermos

operaccedilotildees booleanas com os modelos podemos querer determinar exatamente

onde eles se intersectam

No entanto natildeo precisamos ter necessariamente a representaccedilatildeo contiacutenua

de todo o objeto ao mesmo tempo A reconstruccedilatildeo desta superfiacutecie a partir dos

pontos amostrados pode ser feita no momento que for mais adequado agrave

aplicaccedilatildeo Na visualizaccedilatildeo a reconstruccedilatildeo pode ser feita na projeccedilatildeo 2D da

parte do modelo em foco (seccedilatildeo 37) Para operaccedilotildees booleanas pode-se

reconstruir apenas a aacuterea da interseccedilatildeo dos modelos

Este processo de reconstruccedilatildeo de superfiacutecie tem sido muito estudado em

modelagem geomeacutetrica e geometria computacional nos uacuteltimos anos O trabalho

mais importante desta aacuterea eacute o trabalho de Amenta et al [10] que foi a primeira

soluccedilatildeo com garantias demonstraacuteveis para este problema de reconstruccedilatildeo de

superfiacutecie A seccedilatildeo 44 explica estes conceitos e o trabalho [10] Este trabalho

demonstra que teoricamente para que a reconstruccedilatildeo da superfiacutecie (contiacutenua) a

partir das amostras seja correta a amostragem deve ser adequada Ele usa o

conceito de ldquoEixo Medialrdquo para definir o que eacute uma amostragem adequada

Modelagem por Pontos 26

(seccedilatildeo 44) Em duas dimensotildees os veacutertices de Voronoi de uma amostragem

densa aproximam o ldquoEixo Medialrdquo da amostragem

Por meio deste conceito de Eixo Medial [1016] obtecircm-se paracircmetros

teoacutericos para a definiccedilatildeo de amostragem adequada e baseado neste conceito

o algoritmo apresentado em [10] traz uma soluccedilatildeo praacutetica para o problema

obtendo uma malha poligonal a partir do modelo por pontos

O PointShop 3D [11] software de ediccedilatildeo de modelos por pontos utilizado

nesta pesquisa faz quando necessaacuterio a reconstruccedilatildeo da superfiacutecie Para isso

o PointShop 3D explora a vizinhanccedila local (surfels vizinhos de acordo com suas

posiccedilotildees) Ele usa o conceito de Eixo Medial para justificar seu meacutetodo de

reconstruccedilatildeo da superfiacutecie que na praacutetica apresenta resultados bastante

satisfatoacuterios apesar de teoricamente natildeo ter garantias [16]

37 Visualizaccedilatildeo do modelo

A primeira abordagem para visualizaccedilatildeo de um modelo por pontos foi

construir uma malha de poliacutegonos a partir dos surfels e renderizaacute-la Mas a

construccedilatildeo de malhas a partir dos surfels eacute um processo muito caro e lento

principalmente para modelos complexos Na tentativa de obter uma visualizaccedilatildeo

interativa do modelo por pontos estatildeo sendo estudadas teacutecnicas que utilizam

surfels como primitiva de visualizaccedilatildeo A ideacuteia foi apresentada inicialmente por

Levoy [4]

Figura 3 [21] -Modelo por pontos e sua renderizaccedilatildeo usando Surface Splatting

Modelagem por Pontos 27

O objetivo da renderizaccedilatildeo a partir dos surfels eacute projetaacute-los na tela e

reconstruir as superfiacutecies de forma contiacutenua sem buracos Para que esta

renderizaccedilatildeo seja amplamente utilizada deve-se ter cuidado com o uso de

memoacuteria e com a qualidade da imagem gerada Teacutecnicas recentes como Surface

Splatting [6] faz a renderizaccedilatildeo interativamente com qualidade (Figura 3)

comparada a outros meacutetodos de renderizaccedilatildeo como Image Based Rendering

Em geral a visualizaccedilatildeo do modelo por pontos pode ser dividida nas seguintes

etapas

- warping - projeccedilatildeo em perspectiva de cada ponto do modelo na tela

processo anaacutelogo agrave projeccedilatildeo de veacutertices dos triacircngulos na malha triangular Se

um pixel da tela estiver contido em mais de uma projeccedilatildeo de surfels (vizinhos)

ou seja mais de um ponto cobre este pixel os atributos destes pontos seratildeo

combinados

- shading por ponto - o processo de shading eacute realizado para cada ponto

visiacutevel (os pontos que natildeo satildeo vistos do ponto de vista em questatildeo devem ser

retirados) Qualquer modelo local de shading pode ser aplicado Uma nova

teacutecnica foi proposta em Surface Splatting [6]

- reconstruccedilatildeo da imagem ndash pixels que natildeo ldquoreceberamrdquo projeccedilatildeo de

nenhum ponto formam buracos na imagem Esta imagem deve ser reconstruiacuteda

sem buracos sem aliasing e as superfiacutecies devem ser reconstruiacutedas de forma

contiacutenua e devem ser ldquosuavizadasrdquo (smooth surface)

Os algoritmos de renderizaccedilatildeo por pontos podem tratar a questatildeo de

buracos na visualizaccedilatildeo de trecircs formas [17]

Detecccedilatildeo e preenchimento de buracos no espaccedilo da tela pontos satildeo

projetados na tela e pixels que natildeo receberam pontos satildeo detectados (buracos)

Para preencher estes buracos que natildeo receberam pontos eacute feita uma

interpolaccedilatildeo entre os vizinhos

Geraccedilatildeo de mais pontos a superfiacutecie eacute interpolada no espaccedilo do modelo

para garantir que todos os pixels recebam pelo menos a projeccedilatildeo de um ponto

Splatting um surfel eacute projetado na tela e sua contribuiccedilatildeo eacute espalhada de

forma diferenciada para os pixels vizinhos Agrave medida em que o vizinho se torna

mais distante a contribuiccedilatildeo do surfel diminui

Raumlsaumlnen faz uma analogia do processo de renderizaccedilatildeo proposto em [6]

com o mapeamento de textura [15] No mapeamento de textura para um

determinado pixel da tela satildeo encontrados os pontos da textura que afetam este

Modelagem por Pontos 28

pixel Num sentido inverso em splatting para um determinado surfel (que

representa a textura) satildeo encontrados os pixels da tela que este surfel afeta

38 Ediccedilatildeo do modelo

Ediccedilatildeo de um modelo 3D consiste em operaccedilotildees que modificam

caracteriacutesticas deste modelo como cor textura forma ou criam novos modelos

O software PointShop 3D [11] software de ediccedilatildeo de modelos por pontos 3D

implementa vaacuterias destas operaccedilotildees (ver seccedilatildeo 52)

Para modificar a forma de um modelo ou criar um novo satildeo muito usadas

as operaccedilotildees booleanas que eacute o nosso enfoque nesta dissertaccedilatildeo Na

modelagem CSG (Constructive Solid Geometry) as operaccedilotildees booleanas satildeo

usadas juntamente com primitivas soacutelidas para definir um modelo No entanto

em alguns tipos de modelos estas operaccedilotildees satildeo difiacuteceis como por exemplo

em malhas poligonais Com pontos elas podem ser feitas interativamente [32]

Operaccedilotildees Booleanas com Pontos 29

4 Operaccedilotildees Booleanas com Pontos

Operaccedilotildees booleanas satildeo as operaccedilotildees de uniatildeo interseccedilatildeo e diferenccedila

definidas na teoria matemaacutetica de conjuntos Estas operaccedilotildees satildeo aplicadas em

modelos soacutelidos para alteraacute-los ou para criar novos modelos A Figura 4 abaixo

mostra a criaccedilatildeo de trecircs novos modelos a partir de quatro modelos iniciais

Figura 4 [22] Trecircs modelos novos foram criados a partir dos quatro iniciais (esfera

cilindro dois cubos) O primeiro eacute a esfera menos um cubo em seguida retirou-se outro

cubo e por uacuteltimo retirou-se o cilindro

Estas operaccedilotildees satildeo aplicadas em objetos modelados por pontos em dois

trabalhos no trabalho de Bart Adams e Philip Dutreacute [2] e no trabalho de Pauly

et Al [3] Neste capiacutetulo a seccedilatildeo 41 apresenta a parte comum aos dois

trabalhos e as seccedilotildees 42 e 43 apresentam as particularidades de cada um A

seccedilatildeo 44 discute uma questatildeo natildeo explicitada em nenhum dos dois trabalhos

41 Meacutetodos para realizar operaccedilotildees booleanas em objetos modelados por pontos

A Figura 5 mostra o resultado do meacutetodo de Adams[2] operaccedilotildees de

uniatildeo diferenccedila e interseccedilatildeo de objetos soacutelidos 3D modelados por pontos

Operaccedilotildees Booleanas com Pontos 30

Figura 5 [2]-A partir de dois modelos por pontos uma heacutelice e uma cabeccedila as trecircs operaccedilotildees booleanas satildeo mostradas da esquerda para a direita uniatildeo diferenccedila e interseccedilatildeo

Sejam A e B objetos 3D soacutelidos modelados por pontos Definem-se os

seguintes elementos

Af ndash superfiacutecie (contorno) de A que estaacute fora de B

Ad ndash superfiacutecie (contorno) de A que estaacute dentro de B

Bf ndash superfiacutecie (contorno) de B que estaacute fora de A

Bd ndash superfiacutecie (contorno) de B que estaacute dentro de A

O resultado da operaccedilatildeo booleana entre A e B seraacute um modelo C cuja

superfiacutecie de contorno pode ser determinada pela seguinte regra [2] que aqui

chamamos de Regra 1

Regra 1 A U B Af + Bf

A cap B Ad + Bd

A ndash B Af + Bd (com a orientaccedilatildeo invertida)

B ndash A Ad (com a orientaccedilatildeo invertida) + Bf

A Figura 6 mostra as operaccedilotildees com dois modelos A e B

(a) (b)

Operaccedilotildees Booleanas com Pontos 31

(c) (d)

Figura 6 [22] (a) Dois modelos A e B (b) Posicionados de forma que A tem

uma parte dentro de B eacute mostrado o resultado A U B Af + Bf (c) Resultado de A ndash B Af

+ Bd (d) Resultado de A cap B Ad + Bd

Bart [2] e Pauly [3] apresentam dois meacutetodos para determinar os

elementos acima Estes dois meacutetodos satildeo construiacutedos a partir dos seguintes

conceitos os elementos Af Ad Bf Bd satildeo uma parte da superfiacutecie modelada por

pontos e portanto satildeo conjuntos de surfels Para determinaacute-los eacute necessaacuteria

entatildeo a classificaccedilatildeo de um surfel (que pode se resumir agrave classificaccedilatildeo de um

ponto que eacute o seu centro) de uma superfiacutecie como dentro ou fora de um outro

modelo Os dois meacutetodos utilizam a seguinte regra para esta classificaccedilatildeo aqui

denominada Regra 2

Regra 2 Dado um ponto x qualquer um volume V determinado por uma superfiacutecie

de contorno S uma amostragem P da superfiacutecie S um ponto p є P que eacute a

amostra mais proacutexima a x um vetor np normal agrave S em p e orientado para fora de

S temos que

(x ndash p) np gt 0 x notinV

Ou seja para classificar um ponto em relaccedilatildeo a um modelo verificamos o

produto interno entre a normal em p (surfel mais proacuteximo a x) e o vetor (x - p)

se este produto interno for maior que zero x natildeo pertence ao volume V e seraacute

classificado como fora senatildeo seraacute classificado como dentro De maneira

ainda mais informal se a normal em p apontar para a direccedilatildeo oposta a x x seraacute

classificado como dentro se apontar para x x seraacute classificado como fora

A Figura 7 mostra a Regra 2

Operaccedilotildees Booleanas com Pontos 32

Figura 7 Para classificar o ponto x encontra-se o surfel p (com normal np) mais proacuteximo

a x Se o produto interno entre np e (x ndash p) for maior que zero entatildeo x eacute classificado como

fora senatildeo seraacute classificado como dentro

A validade da Regra 2 eacute discutida na Seccedilatildeo 44 Uma das restriccedilotildees

teoacutericas para garantir-lhe a validade eacute que a superfiacutecie seja suave

Cada um dos dois meacutetodos daacute um tratamento diferente para o uso desta

regra Pauly usa a regra diretamente encontrando o surfel mais proacuteximo a um

ponto e classificando este ponto a partir deste surfel Ele utiliza tambeacutem a

representaccedilatildeo impliacutecita MLS (Moving Least Squares [18]) para casos em que a

Regra 2 poderia falhar e para tratamento de interseccedilotildees [3] Seu meacutetodo vale

para modelos soacutelidos ou natildeo soacutelidos O meacutetodo de Adams e Dutreacute [2] utiliza

octrees [1] criando uma classificaccedilatildeo dos noacutes da octree a partir desta Regra 2

Os pontos satildeo entatildeo classificados de acordo com o noacute da octree que o conteacutem

Este segundo meacutetodo aplica-se somente a modelos soacutelidos Os dois meacutetodos

seratildeo descritos em detalhes nas seccedilotildees abaixo

Como um surfel eacute considerado um disco podemos dizer que surfels de

dois modelos diferentes podem se intersectar A interseccedilatildeo destes dois surfels

corresponde agrave interseccedilatildeo destes dois discos Estes surfels geram problemas

para visualizaccedilatildeo se forem acrescentados ao resultado sem um tratamento

especiacutefico apresentaratildeo artefatos natildeo desejaacuteveis na renderizaccedilatildeo do modelo

resultado (Figura 8) se natildeo forem acrescentados ao resultado deixaratildeo buracos

no modelo

Operaccedilotildees Booleanas com Pontos 33

Figura 8 [2] -Interseccedilatildeo de duas esferas agrave esquerda sem nenhum tratamento de interseccedilatildeo agrave direita apoacutes o tratamento de interseccedilatildeo

Aleacutem disso nem sempre esta interseccedilatildeo forma uma superfiacutecie suave

Esta interseccedilatildeo pode formar uma aresta viva (seccedilatildeo 4223) gerando

problemas tambeacutem para o uso da Regra 2 que eacute vaacutelida apenas para superfiacutecies

suaves Eacute necessaacuterio entatildeo fazer um tratamento desta superfiacutecie de interseccedilatildeo

(formada por surfels originados de diferentes modelos) O tratamento de cada

um dos meacutetodos para este caso seraacute tambeacutem abaixo apresentado

42 Meacutetodo de Adams e Dutreacute

O meacutetodo aplica-se somente a modelos soacutelidos Para determinaccedilatildeo dos

elementos da aqui chamada Regra 1 (seccedilatildeo 41) este meacutetodo utiliza uma octree

[1] que subdivide o espaccedilo do modelo em trecircs fora dentro ou no contorno do

modelo Estes espaccedilos satildeo determinados pela classificaccedilatildeo dos noacutes da octree a

partir da Regra 2 Tambeacutem eacute usado o meacutetodo TINN - Triangle Inequality Nearest

Neighbour [19] - para otimizar a pesquisa dentro do noacute A seguir descrevemos o

modelo usado neste meacutetodo apresentando os dados associados aos pontos o

tipo de distribuiccedilatildeo e o algoritmo que realiza as operaccedilotildees

421 Modelo por Pontos em Adams e Dutreacute

Os surfels neste meacutetodo contecircm as seguintes informaccedilotildees posiccedilatildeo do

surfel xs orientaccedilatildeo do surfel ns e raio de alcance do surfel rs O surfel pode ser

pensado como um disco ortogonal a ns com centro xs e raio rs O raio eacute

escolhido de tal forma que a projeccedilatildeo dos discos no plano da imagem se

sobreponham

Operaccedilotildees Booleanas com Pontos 34

Os objetos representados satildeo soacutelidos A distribuiccedilatildeo dos surfels eacute

uniforme embora o algoritmo natildeo exija esta condiccedilatildeo Para cada soacutelido eacute

definido um rmax = Max rs o raio de alcance do maior surfel pertencente agrave

superfiacutecie do soacutelido Como o raio eacute escolhido de tal forma que a projeccedilatildeo dos

discos no plano da imagem se sobreponham o controle da amostragem eacute

entatildeo ligado agrave renderizaccedilatildeo

422 Algoritmo de Operaccedilotildees Booleanas

Utilizando objetos modelados da forma descrita acima o meacutetodo realiza

operaccedilotildees de uniatildeo interseccedilatildeo e diferenccedila com modelos soacutelidos Supondo dois

modelos soacutelidos S1 e S2 O algoritmo pode ser dividido nas seguintes etapas

Criaccedilatildeo de uma octree para cada modelo Teste Dentro-Fora Tratamento da

interseccedilatildeo Estas etapas satildeo apresentadas nas proacuteximas seccedilotildees

4221 Criaccedilatildeo de uma octree para cada modelo

Eacute criada uma octree [1] para cada modelo A criaccedilatildeo de uma octree eacute feita

da seguinte forma

Gera-se a ldquoCaixa envolventerdquo caixa alinhada com os eixos que conteacutem

todo o modelo A ldquoCaixa envolventerdquo corresponde ao noacute raiz da octree Este noacute

conteacutem inicialmente todos os surfels do modelo Em seguida o noacute raiz eacute

dividido em oito noacutes filhos Os surfels satildeo distribuiacutedos entre estes oito noacutes Cada

um deles caso contenha surfels eacute dividido novamente em 8 filhos e seus surfels

satildeo redistribuiacutedos entre eles Este processo eacute repetido recursivamente enquanto

o nuacutemero de surfels do noacute for maior que zero ou ateacute uma profundidade maacutexima

preacute-definida da octree ser alcanccedilada

Cada noacute da octree deve ser classificado O objetivo desta classificaccedilatildeo eacute

determinar que parte da octree estaacute dentro do modelo e que parte estaacute fora Os

noacutes da octree satildeo entatildeo classificados como ldquodentrordquo ldquoforardquo e ldquocontornordquo

Podemos ilustrar esta classificaccedilatildeo em 2D a Figura 9 mostra uma quadtree

classificada

Operaccedilotildees Booleanas com Pontos 35

Figura 9-Um objeto representado por pontos com suas normais e sua quadtree correspondente classificada os noacutes cinza claro estatildeo dentro do modelo noacutes cinza mais escuro estatildeo fora do modelo e noacutes com cinza intermediaacuterio satildeo noacutes cheios noacutes que conteacutem pontos

O noacutes que conteacutem surfels satildeo classificados como ldquocontornordquo Para

classificar um noacute vazio existem trecircs casos

o noacute vazio tem apenas um vizinho-irmatildeo natildeo vazio

o noacute vazio tem mais de um vizinho-irmatildeo natildeo vazio

o noacute vazio natildeo tem vizinhos-irmatildeos natildeo vazios

No primeiro caso o noacute vazio eacute classificado pelo seu vizinho natildeo vazio No

segundo caso considera-se qualquer um dos vizinhos natildeo vazios No terceiro

caso classifica-se primeiro os noacutes vizinhos e eacute dada a mesma classificaccedilatildeo para

o noacute vazio Como cada noacute natildeo folha de uma octree tem pelo menos um noacute filho

natildeo vazio sempre pode ser feita a classificaccedilatildeo dos noacutes vazios A classificaccedilatildeo

eacute feita da seguinte forma dentre os surfels do vizinho-irmatildeo escolhido encontra-

se o surfel mais proacuteximo ao noacute a ser classificado Se a normal deste surfel

aponta para o noacute vazio a ser classificado entatildeo ele eacute classificado como ldquoforardquo

Se a normal aponta no sentido contraacuterio entatildeo ele eacute classificado como ldquodentrordquo

De maneira mais formal sejam cv e cc coordenadas dos centros do noacute vazio e

do noacute contorno respectivamente Seja s o surfel mais proacuteximo ao noacute vazio e ns

a normal em s Se ( cv - cc )٠ ns gt 0 ( produto interno entre a normal em s e o

vetor cv - cc for maior que zero ) o noacute vazio seraacute classificado como ldquoforardquo

Senatildeo seraacute classificado como ldquodentrordquo

Em geral os noacutes ldquocontornordquo satildeo subdivididos em trecircs partes uma que estaacute

fora do modelo uma que estaacute dentro do modelo e uma terceira que conteacutem os

surfels Esta subdivisatildeo eacute feita por meio da criaccedilatildeo de dois planos paralelos que

Operaccedilotildees Booleanas com Pontos 36

dividem o noacute Para determinar estes planos calcula-se o vetor nm igual agrave

meacutedia das normais dos surfels do noacute nm = sum ns sum ns onde ns eacute a normal de

cada surfel do noacute

Em seguida encontra-se o surfel com maior produto interno entre a sua

normal e a normal meacutedia d1=Max(nm ٠ ns) Este surfel juntamente com a normal

meacutedia define um dos planos Encontra-se tambeacutem o surfel com menor produto

interno entre a sua normal e a normal meacutedia d2=Min(nm ٠ ns) Este surfel

juntamente com a normal meacutedia define o outro plano A Figura 10 mostra a

divisatildeo de um noacute de uma quadtree nas trecircs partes dentro do modelo fora do

modelo e no ldquocontornordquo

Esta subdivisatildeo aplica-se apenas a noacutes que conteacutem surfels cujas direccedilotildees

natildeo variem em mais de 90 graus Caso isso ocorra ele natildeo seraacute subdividido Ou

seja se um noacute possuir dois vetores normais (de dois surfels diferentes) que

formem um acircngulo maior que 90 graus ele natildeo seraacute subdividido

Figura 10 [2] -Divisatildeo de noacute de contorno a parte agrave esquerda estaacute fora do modelo a parte agrave direita estaacute dentro do modelo e a faixa intermediaacuteria conteacutem os surfels

4222 Teste Dentro-Fora

O Teste Dentro-Fora faz a classificaccedilatildeo dos surfels de um modelo como

ldquodentrordquo ou ldquoforardquo de outro modelo Portanto aplicaremos este mesmo teste duas

vezes uma para o modelo S1 em relaccedilatildeo ao modelo S2 e outra para S2 em

relaccedilatildeo a S1 Vamos mostrar o teste Dentro-Fora para o caso da classificaccedilatildeo

dos surfels do modelo S1 em relaccedilatildeo a S2

Operaccedilotildees Booleanas com Pontos 37

No item anterior foram criadas duas octrees uma para o modelo S1 e

outra para o modelo S2 Chamemos de A e B as octrees de S1 e S2

respectivamente Para classificar S1 em relaccedilatildeo a S2 inicialmente eacute feita uma

avaliaccedilatildeo da posiccedilatildeo de A em relaccedilatildeo a B A e B podem estar nas seguintes

situaccedilotildees

- A natildeo intersecta B

- A intersecta apenas noacutes ldquoforardquo de B

- A intersecta apenas noacutes ldquodentrordquo de B

- A intersecta noacutes ldquoforardquo e noacutes ldquodentrordquo de B

Para testar estas situaccedilotildees os noacutes satildeo aumentados de rmax o raio do

maior surfel do modelo soacutelido Isto eacute feito para compensar o fato de que o surfel

natildeo eacute apenas um ponto mas sim considerado como um disco

No primeiro e no segundo caso todos os surfels de A satildeo classificados

como ldquoforardquo No terceiro caso todos os surfels de A satildeo classificados como

ldquodentrordquo

No quarto caso temos que percorrer a octree A Comeccedilando pelo noacute raiz

percorre-se os filhos deste noacute Para cada filho os quatro testes acima satildeo feitos

Se o noacute filho encontra-se em um dos trecircs primeiros casos a classificaccedilatildeo eacute dada

como foi citada acima Se um filho estaacute no quarto caso e natildeo eacute um noacute folha

repete-se recursivamente o mesmo procedimento para seus filhos ateacute encontrar-

se um noacute folha Para um noacute que estaacute no quarto caso e eacute folha percorre-se a lista

de surfels que este noacute conteacutem classificando cada um destes surfels Seja sa um

surfel desta lista Para este caso percorre-se a octree B para classificar sa

Primeiramente encontramos o noacute de B que conteacutem sa Se este noacute de B foi

dividido testa-se de acordo com esta divisatildeo do noacute se o surfel sa estaacute na parte

do noacute que estaacute dentro do modelo ele eacute classificado como ldquodentrordquo se sa estaacute na

parte que estaacute fora do modelo ele eacute classificado como ldquoforardquo se sa estaacute na parte

intermediaacuteria ou se o noacute de B natildeo foi subdividido em planos encontra-se sb que

eacute o surfel pertencente a este noacute de B que estaacute mais proacuteximo de sa sa seraacute

entatildeo classificado de acordo com sb Se ( sa - sb )٠ nb gt 0 sa eacute classificado

como ldquoforardquo senatildeo eacute classificado como ldquodentrordquo Se os discos de sb e sa se

intersectam sa eacute marcado como interseccedilatildeo Para encontrar sb o algoritmo

implementa o meacutetodo TINN ndash Triangle Inequality Nearest Neighbour [19]

Operaccedilotildees Booleanas com Pontos 38

4223 Tratamento da interseccedilatildeo

Os surfels de A que intersectam surfels de B satildeo classificados como

ldquointerseccedilatildeordquo Se eles natildeo forem incluiacutedos no modelo resultado o soacutelido resultado

teraacute buracos Se eles forem incluiacutedos sem algum tratamento eles natildeo

representaratildeo adequadamente a regiatildeo Em geral o surfel sa (um surfel

ldquointerseccedilatildeordquo de A) eacute dividido em dois pelo plano que conteacutem o surfel sb (surfel de

B que sa intersecta) uma parte que estaacute fora de B e outra que estaacute dentro de B

Dependendo da operaccedilatildeo que estaacute sendo realizada vamos querer manter uma

destas partes do surfel sa no modelo resultado Seja xa a posiccedilatildeo do surfel sa e o

surfel sa uma circunferecircncia de centro xa e raio ra igual ao raio de alcance de sa

O plano que conteacutem o surfel sb define uma corda desta circunferecircncia como

mostra a Figura 11 O surfel sa seraacute substituiacutedo por um surfel menor que

ultrapassa esta corda de uma distacircncia e definida pelo usuaacuterio Para cobrir

completamente a interseccedilatildeo seratildeo adicionados surfels menores que cruzam a

corda de interseccedilatildeo

Figura 11 -Interseccedilatildeo do surfel s e do plano que passa pelo surfel t o surfel mais proacuteximo a s O surfel s eacute substituiacutedo por trecircs surfels menores

Operaccedilotildees Booleanas com Pontos 39

O tratamento de interseccedilatildeo proposto por Adams e Dutreacute [2] natildeo soacute evita

os buracos mas tambeacutem cria uma forma de renderizaccedilatildeo de arestas vivas A

colocaccedilatildeo de vaacuterios pequenos surfels na regiatildeo da interseccedilatildeo permite esta

correta renderizaccedilatildeo das ldquoarestas vivasrdquo Desta forma o problema das arestas

vivas eacute resolvido na modelagem (Figura 12) A vantagem de se resolver o caso

na modelagem eacute que natildeo eacute necessaacuterio fazer um tratamento especial na

renderizaccedilatildeo para que mostre esta aresta viva Diferente do tratamento feito

em Pauly (seccedilatildeo 431) que resolve esta questatildeo em tempo de renderizaccedilatildeo

Aleacutem disso o tratamento resolve alguns casos onde a Regra 2 poderia falhar

(veja em Validade da Regra 2-seccedilatildeo 44)

Figura 12 [2] -Agrave direita eacute mostrado o resultado do tratamento de interseccedilatildeo para o caso de Arestas Vivas do objeto agrave esquerda

43 Meacutetodo de Pauly

O meacutetodo aplica-se a objetos soacutelidos e natildeo soacutelidos Os modelos podem ser

obtidos a partir de diferentes entradas como nuvem de pontos irregulares ou por

meio de scanners 3D Cria um modelo hiacutebrido destes objetos usa o modelo por

pontos juntamente com a representaccedilatildeo impliacutecita Moving Least Squares - MLS

[18] Realiza operaccedilotildees booleanas com pontos e utiliza adicionalmente MLS

para alguns casos de classificaccedilatildeo de surfels e no tratamento de interseccedilatildeo A

seguir apresentamos as caracteriacutesticas do modelo por pontos deste meacutetodo e o

algoritmo que realiza as operaccedilotildees

Operaccedilotildees Booleanas com Pontos 40

431 Modelo em Pauly

O modelo eacute uma estrutura hiacutebrida de pontos com a representaccedilatildeo impliacutecita

Moving Least Squares - MLS [18] Esta estrutura eacute usada para fazer operaccedilotildees

booleanas e tambeacutem operaccedilotildees de free-form (natildeo abordadas nesta

dissertaccedilatildeo) Para operaccedilotildees booleanas a representaccedilatildeo MLS permite que a

curva de interseccedilatildeo entre os modelos seja reconstruiacuteda e surfels sejam

colocados nesta curva e em alguns casos de classificaccedilatildeo de surfels mostrados

na seccedilatildeo 432 Para este modelo natildeo existem restriccedilotildees quanto agrave forma do

objeto

Os surfels contecircm informaccedilotildees sobre sua posiccedilatildeo e sua normal Aleacutem

disso surfels podem conter informaccedilotildees adicionais como textura cor

propriedades de materiais

A distribuiccedilatildeo dos surfels eacute natildeo-uniforme e a amostragem eacute

aproximadamente adequada (Veja seccedilatildeo 44)

432 Algoritmo de Operaccedilotildees Booleanas

O algoritmo classifica surfels de um modelo como ldquodentrordquo ou ldquoforardquo de

outro modelo Antes de colocarmos como eacute feita esta classificaccedilatildeo devemos

acrescentar que Pauly estende esta classificaccedilatildeo para modelos que natildeo satildeo

soacutelidos Ou seja mesmo um modelo natildeo soacutelido divide o espaccedilo da cena (espaccedilo

em que se encontra o modelo) em dois sub-espaccedilos dentro ou fora do modelo

Pauly faz esta subdivisatildeo da seguinte forma

Como a superfiacutecie que determina o modelo eacute orientada (conteacutem vetores

normais agrave superfiacutecie que apontam para ldquoforardquo do modelo) Pauly considera que

um modelo natildeo soacutelido divide o espaccedilo em dois sub-espaccedilos um ldquoforardquo do

modelo (os vetores normais apontam para este sub-espaccedilo) e um que estaacute

ldquodentrordquo do modelo (os vetores normais apontam para direccedilatildeo oposta a este sub-

espaccedilo) Por exemplo um plano eacute representado como um conjunto de surfels

contidos num determinado espaccedilo geomeacutetrico plano π Cada surfel conteacutem um

vetor normal direcionado Este modelo divide entatildeo o espaccedilo em dois sub-

espaccedilos o sub-espaccedilo que eacute apontado por estes surfels (considerado ldquoforardquo do

modelo) e o sub-espaccedilo que estaacute na direccedilatildeo oposta (considerado ldquodentrordquo do

modelo) Desta forma ele aplica as classificaccedilotildees de ldquodentrordquo e ldquoforardquo de um

modelo tambeacutem a modelos natildeo soacutelidos A partir desta consideraccedilatildeo as

Operaccedilotildees Booleanas com Pontos 41

operaccedilotildees booleanas satildeo realizadas com os modelos natildeo soacutelidos da mesma

forma que com os modelos soacutelidos

Para determinar esta classificaccedilatildeo (dentro ou fora do modelo) Pauly utiliza

a Regra 2 Para pesquisa do surfel mais proacuteximo o meacutetodo usa a estrutura Kd-

tree [16] e tambeacutem o algoritmo ANN [16] No entanto o meacutetodo apresenta uma

restriccedilatildeo da Regra 2 ela soacute deve ser usada para classificaccedilotildees de pontos x se

a distacircncia x-p for maior que o espaccedilamento da amostragem local ηp em p

Este espaccedilamento da amostragem local ηp em p eacute um caacutelculo aproximado da

distacircncia meacutedia entre os surfels vizinhos a p Se x estaacute muito proacuteximo agrave

superfiacutecie a classificaccedilatildeo pode falhar Neste caso ele calcula o ponto exato de

S mais proacuteximo a x usando a projeccedilatildeo MLS (ldquoMoving Least Squaresrdquo)

Por questotildees de melhoria de desempenho utiliza-se o fato de que sendo

Ωp (x) a classificaccedilatildeo do ponto x em relaccedilatildeo agrave amostragem P tem-se que Ωp (x)

= Ωp (xrsquo) para todos os pontos de xrsquo que estatildeo dentro da esfera de centro x e

raio igual a x-p - ηp (onde p eacute o surfel mais proacuteximo e ηp eacute o espaccedilamento

local da amostragem em p acima citado) Ou seja sendo x um ponto qualquer p

o surfel mais proacuteximo a x ηp eacute o espaccedilamento local da amostragem em p se

desenharmos uma esfera com centro x e raio igual a x-p - ηp temos que

todos os pontos xrsquo que estatildeo dentro da esfera teratildeo a mesma classificaccedilatildeo de x

Desta forma o nuacutemero de vezes que a classificaccedilatildeo eacute feita (pesquisando-se o

surfel mais proacuteximo ao ponto e usando a Regra 2) diminui em ateacute 90 Assim

em geral a classificaccedilatildeo de um surfel eacute obtida a partir do seu surfel vizinho

Dados

S1 a superfiacutecie MLS de contorno que define o modelo A

S2 a superfiacutecie MLS de contorno que define o modelo B

P1 o conjunto de surfels que representa a superfiacutecie S1

P2 o conjunto de surfels que representa a superfiacutecie S2

Ωp1 (x) a classificaccedilatildeo do ponto p em relaccedilatildeo a uma amostragem P1

Q1 o subconjunto de P1 que vai compor o resultado

Ωp2 (x) a classificaccedilatildeo do ponto p em relaccedilatildeo a uma amostragem P2

Q2 o subconjunto de P2 que vai compor o resultado

Os conjuntos Q1 e Q2 satildeo obtidos por meio da Tabela 1 mostrada abaixo

Operaccedilotildees Booleanas com Pontos 42

Tabela 1 Classificaccedilatildeo para operaccedilotildees booleanas

Para o tratamento de interseccedilatildeo neste meacutetodo satildeo computados pontos

que caem exatamente na curva de interseccedilatildeo e estes satildeo acrescentados ao

modelo resultado Estes pontos satildeo determinados de forma que a densidade da

amostragem vai crescendo agrave medida que os surfels se aproximam da curva de

interseccedilatildeo e convergem para este ponto de interseccedilatildeo como mostra a Figura

13

(a) (b) (c)

Figura 13 - Os novos surfels satildeo colocados exatamente na curva de interseccedilatildeo

e convergem para o ponto de interseccedilatildeo

A Figura 14 mostra o processo de encontrar os surfels que caem nesta

curva de interseccedilatildeo Inicialmente satildeo encontrados todos os pontos de Q1 e Q2

que estatildeo proacuteximos agrave curva de interseccedilatildeo por meio da funccedilatildeo de distacircncia do

operador de projeccedilatildeo MLS Em seguida procura-se todos os pares mais

proacuteximos (q1 є Q1 q2 є Q2 ) e computa-se o ponto q na curva de interseccedilatildeo da

seguinte forma (veja a Figura 14)Seja r o ponto na linha de interseccedilatildeo dos dois

planos tangentes em q1 e q2 e que estaacute mais proacuteximo a estes dois pontos isto eacute

que minimiza a distacircncia ||r-q1|| + ||r-q2|| r eacute a primeira aproximaccedilatildeo de q e agora

pode ser projetado sobre S1 e S2 para obter dois novos pontos de partida q1rsquo e q2

rsquo

para a iteraccedilatildeo Este procedimento pode ser repetido iterativamente ateacute que os

pontos q1 e q2 convirjam ao ponto q na curva de interseccedilatildeo Normalmente este

processo requer menos de trecircs iteraccedilotildees

Operaccedilotildees Booleanas com Pontos 43

(a) (b)

(c)

Figura 14 (a) Suponhamos a reta que eacute a interseccedilatildeo do plano tangente a S1 em q1 e o

plano tangente a S2 em q2 O ponto r eacute o ponto desta reta que estaacute mais proacuteximo a q1 e

q2 (b) r eacute projetado sobre S1 e S2 obtendo-se q1acute e q2acute dois novos pontos de partida

para nova iteraccedilatildeo (c) A nova iteraccedilatildeo gera r que eacute uma aproximaccedilatildeo melhor de q

Pauly faz o tratamento de arestas vivas em tempo de renderizaccedilatildeo Ele

faz uma alteraccedilatildeo no renderizador Marca os surfels de interseccedilatildeo e ao

renderizaacute-los satildeo cortados para gerar uma aresta viva

44 Validade da Regra 2

Os dois meacutetodos analisados nesta dissertaccedilatildeo utilizam a seguinte regra

para a classificaccedilatildeo de um surfel

Regra 2 dado um volume V determinado por uma superfiacutecie de contorno

S uma amostragem P da superfiacutecie S um ponto x qualquer um ponto p є P que

eacute a amostra mais proacutexima a x um vetor ny normal a S em p e orientado para

fora de S temos que (x ndash p) np gt 0 x notinV

Em [16] eacute colocado que esta regra eacute tirada da seguinte propriedade da

geometria diferencial (aqui chamada Propriedade 1)

Propriedade 1 Dado um volume V determinado por uma superfiacutecie de

contorno S contiacutenua e duplamente diferenciaacutevel um ponto x qualquer um ponto

Operaccedilotildees Booleanas com Pontos 44

y є S que eacute o ponto de S mais proacuteximo a x um vetor ny normal a S em y e

orientado para fora de S temos que (x ndash y) ny gt 0 x notinV

A Figura 15 ilustra esta propriedade

Figura 15 Para verificar se o ponto x estaacute fora de um contorno C encontra-se o ponto y

de C Se o produto interno entre a normal em y e o vetor que liga y a x for maior que

zero entatildeo x estaacute fora de C senatildeo estaacute dentro de C

Pauly assume que tendo uma amostragem P da superfiacutecie S podemos

usar a Propriedade 1 substituindo y por p o surfel mais proacuteximo ao ponto x (x ndash

p) np gt 0 x notinV (Regra 2) Esta amostragem P em seu trabalho eacute

(aproximadamente) uma ldquoamostragem adequadardquo Tambeacutem seu tratamento de

interseccedilatildeo cria uma aproximaccedilatildeo dela (seccedilatildeo 43) Empiricamente a

ldquodiscretizaccedilatildeo da propriedaderdquo eacute vaacutelida a partir desta suposiccedilatildeo Mas isso natildeo foi

demonstrado teoricamente em seu trabalho

Pauly coloca em [16] que natildeo existe ainda uma teoria matemaacutetica rigorosa

de amostragem anaacuteloga a teoria de Fourier para superfiacutecies discretas

A melhor aproximaccedilatildeo teoacuterica para esta aacuterea eacute o uso do Eixo Medial que

foi colocado em [10] Vamos descrever este trabalho brevemente nesta seccedilatildeo

Este trabalho apresenta um algoritmo de reconstruccedilatildeo de superfiacutecie que parte de

uma amostragem adequada (abaixo definida) de pontos e obteacutem uma malha

que eacute topologicamente equivalente agrave superfiacutecie do objeto e agrave medida que a

densidade da amostragem cresce a saiacuteda converge para esta superfiacutecie

Para definir amostragem adequada o trabalho parte do conceito de Eixo

Medial

Operaccedilotildees Booleanas com Pontos 45

ldquoEixo Medialrdquo de uma superfiacutecie 2D posicionada no R3 eacute o conjunto

(fechado) de pontos pi para os quais buscando-se o ponto da superfiacutecie que

estaacute mais proacuteximo a pi mais de um ponto pertencentes a esta superfiacutecie satildeo

encontrados A Figura 16 abaixo ilustra o Eixo Medial em 2D

Figura 16 [10] As curvas de cor mais clara satildeo o Eixo Medial da curva em preto

Em duas dimensotildees os veacutertices de Voronoi de uma amostragem densa

aproximam o ldquoEixo Medialrdquo da amostragem (mas esta propriedade natildeo se

estende a 3D) A Figura 17 mostra o Eixo Medial em 3D

Figura 17 [10] Em 3D geralmente o Eixo Medial eacute uma superfiacutecie 2D (em cor mais

clara) Aqui o quadrado eacute o Eixo Medial da superfiacutecie transparente que o contorna

Podemos definir agora a amostragem adequada da seguinte forma

Supondo uma superfiacutecie suave que quer dizer uma 2-manifold duplamente

diferenciaacutevel posicionada no R3 uma ldquoamostragem adequadardquo desta superfiacutecie eacute

aquela na qual a densidade da amostragem eacute (pelo menos) inversamente

proporcional agrave distacircncia ao ldquoEixo Medialrdquo A Figura 18 mostra uma amostragem

adequada

Operaccedilotildees Booleanas com Pontos 46

Figura 18 [10] A figura mostra o diagrama de Voronoi de uma amostragem de pontos S

Da mesma forma que o a amostragem aproxima a curva os veacutertices de Voronoi

aproximam o Eixo Medial

Na praacutetica na reconstruccedilatildeo da superfiacutecie uma aproximaccedilatildeo deste ldquoEixo

Medialrdquo eacute computada (devido agrave dificuldade de computaacute-lo exatamente e em

alguns casos ateacute impossibilidade)

Melhorias Propostas 47

5 Melhorias Propostas

No capiacutetulo 4 apresentamos dois meacutetodos que realizam operaccedilotildees

booleanas em modelos por pontos o meacutetodo de Adams e Dutreacute [2] e o meacutetodo

de Pauly[3] Para esta dissertaccedilatildeo usamos o meacutetodo de Adams e Dutreacute [2] e

propomos as seguintes melhorias

- Alteramos o momento em que eacute feita a classificaccedilatildeo da octree Fazemos

esta classificaccedilatildeo durante a sua criaccedilatildeo Os noacutes filhos de um noacute pai P qualquer

satildeo classificados logo apoacutes a criaccedilatildeo de todos estes filhos de P

independentemente do restante da octree ter sido criada Isso pode ser feito

porque a octree eacute construiacuteda na ordem raiz-esquerda-direita (preorder

traversal) e portanto apoacutes todos os filhos de um noacute pai serem criados a parte

necessaacuteria da octree para a classificaccedilatildeo destes filhos jaacute estaacute criada

- A classificaccedilatildeo da octree eacute otimizada classificando-se os cantos dos seus

noacutes como dentro ou fora do modelo Na classificaccedilatildeo de um noacute n1 a partir de seu

vizinho n2 se os cantos que satildeo comuns a n1 e n2 tiverem a mesma

classificaccedilatildeo esta seraacute dada ao noacute Assim diminuiacutemos o nuacutemero de pesquisas

pelo surfel mais proacuteximo que eacute a parte criacutetica da classificaccedilatildeo dos noacutes da octree

em termos de tempo de processamento

- Acrescentamos um valor miacutenimo (maior que zero) para o nuacutemero de

surfels contidos em um noacute que eacute uma das condiccedilotildees de parada na criaccedilatildeo da

octree Verificamos que desta forma diminui-se a chance de erro na classificaccedilatildeo

de partes criacuteticas como ldquoarestas vivasrdquo

Uma comparaccedilatildeo entre a nossa implementaccedilatildeo e a de Pauly tambeacutem seraacute

feita no capiacutetulo 6

51 Descriccedilatildeo do algoritmo

O algoritmo implementado para esta dissertaccedilatildeo baseado no meacutetodo de

Adams e Dutreacute [2] pode ser dividido nas seguintes partes Criaccedilatildeo e

classificaccedilatildeo de uma octree para cada modelo Teste DentroFora Criaccedilatildeo do

modelo resultado Natildeo foi implementado tratamento especial algum de

interseccedilatildeo para o nosso plugin As proacuteximas seccedilotildees apresentam estas partes

Melhorias Propostas 48

511 Criaccedilatildeo e classificaccedilatildeo de uma octree para cada modelo

As ideacuteias do algoritmo satildeo aqui ilustradas em 2D mas a extensatildeo delas

para 3D eacute feita facilmente

Para cada modelo a octree eacute criada e classificada da seguinte forma

Figura 19-Quadtree classificada Os noacutes mais escuros estatildeo fora do modelo os mais claros dentro e os em tom intermediaacuterio satildeo noacutes de contorno

Gera-se uma ldquocaixa envolventerdquo do modelo contendo todos os surfels e

cria-se o noacute raiz da octree que corresponde a esta ldquocaixa envolventerdquo Este noacute

raiz eacute subdividido em oito filhos e seus surfels satildeo distribuiacutedos entre eles Ao

inveacutes de testarmos os valores de xy e z para cada surfel a fim de determinar

para qual filho ele iraacute utilizamos listas auxiliares Primeiro os surfels satildeo

subdivididos em dois grupos pelos valores de x e armazenados em uma lista

auxiliar Em seguida cada uma das listas eacute subdividida pelo valor de y e as

quatro listas obtidas seratildeo subdivididas pelo valor de z Ao final teremos 8 listas

de surfels cada uma delas pertencente a um filho

Cada noacute seraacute entatildeo novamente subdividido enquanto contiver um nuacutemero

de surfels gt nmin (valor preacute-definido) ou enquanto a profundidade da aacutervore lt pmax

(valor preacute-definido) Na figura 19 pmax = 3 e nmin = 3

Melhorias Propostas 49

Figura 20-O noacute cheio eacute dividido em trecircs partes agrave esquerda a regiatildeo estaacute dentro do modelo agrave direita estaacute fora e entre as duas linhas que dividem o noacute estaacute a regiatildeo que conteacutem os surfels

Os noacutes cheios recebem um tratamento especial Eles satildeo subdivididos em

trecircs partes da seguinte forma uma que estaacute fora do modelo outra que estaacute

dentro e uma que conteacutem os surfels Esta subdivisatildeo eacute feita por meio da criaccedilatildeo

de dois planos paralelos que dividem o noacute Para determinar estes planos

calcula-se o vetor nm igual agrave meacutedia das normais dos surfels do noacute nm = sum ns

sum ns onde ns eacute a normal de cada surfel do noacute Em seguida encontra-se o

surfel com maior produto interno entre a sua normal e a normal meacutedia

d1=Max(nm ٠ ns) Este surfel juntamente com a normal meacutedia define um dos

planos Encontra-se tambeacutem o surfel com menor produto interno entre a sua

normal e a normal meacutedia d2=Min (nm ٠ ns) Este surfel juntamente com a normal

meacutedia define o outro plano (Figura 20) Se o noacute conteacutem surfels de superfiacutecies de

orientaccedilotildees diferentes ele natildeo seraacute subdividido ou seja os planos coincidiratildeo

com os planos que delimitam o proacuteprio noacute Este teste foi implementado da

seguinte forma escolhe-se um surfel qualquer do noacute Calcula-se o produto

interno entre a normal deste surfel e as outras normais dos outros surfels deste

noacute Se algum produto interno for menor que zero este noacute natildeo seraacute subdividido

Apoacutes a etapa de subdivisatildeo classificam-se os oito cantos deste noacute como

dentro ou fora do modelo por meio da classificaccedilatildeo de um ponto que

descreveremos na sub-seccedilatildeo 5111

Melhorias Propostas 50

a b

c d

Figura 21-O noacute a eacute classificado pelo noacute c o noacute d tambeacutem eacute classificado pelo noacute c a classificaccedilatildeo do noacute a eacute propagada para o noacute b

Jaacute os noacutes vazios da octree seratildeo classificados como ldquodentrordquo ou ldquoforardquo do

modelo da seguinte forma cada noacute folha vazio eacute classificado a partir de um de

seus irmatildeos vizinhos adjacentes Se ele possuir um vizinho adjacente cheio ele

seraacute classificado por este vizinho se natildeo possuir os vizinhos adjacentes seratildeo

classificados primeiro e ele teraacute esta mesma classificaccedilatildeo (Figura 21) Como tem

que existir sempre pelo menos um noacute cheio entre os filhos de um noacute pai entatildeo

sempre esta classificaccedilatildeo poderaacute ser feita Com a classificaccedilatildeo de todos os

filhos tem-se tambeacutem a classificaccedilatildeo dos cantos do noacute pai

Mf03c003fmx a b

Figura 22-Os cantos a e b do noacute cheio possuem a mesma classificaccedilatildeo fora do modelo Esta classificaccedilatildeo foi dada ao noacute vazio adjacente

Melhorias Propostas 51

Para classificar um noacute vazio por meio de um noacute cheio verificam-se os

cantos comuns destes dois noacutes se todos os cantos tiverem a mesma

classificaccedilatildeo esta seraacute dada ao noacute vazio (Figura 22) Se houver classificaccedilotildees

diferentes escolhe-se o surfel do noacute cheio mais proacuteximo ao noacute vazio faz-se o

produto interno entre a normal deste surfel e o vetor que liga o centro do noacute

cheio ao centro do noacute vazio (ou o vetor que liga o surfel ao centro do noacute vazio)

Se o produto interno for maior que zero o noacute eacute classificado como ldquoforardquo senatildeo eacute

classificado como ldquodentrordquo Para encontrar o surfel (pertencente a um noacute cheio)

mais proacuteximo ao noacute vazio existem dois casos

- O noacute cheio eacute folha percorre-se toda a lista de surfels e escolhe o surfel

mais proacuteximo da fronteira entre o noacute cheio e o vazio

- O noacute cheio natildeo eacute um noacute folha percorrem-se os filhos do noacute cheio ou seja

esta pesquisa eacute feita descendo na octree a partir do noacute cheio procurando o

surfel mais proacuteximo agrave fronteira do pai com o noacute vazio a ser classificado

Classificando o centro do noacute vazio todo o noacute deve ter a mesma

classificaccedilatildeo pois este noacute natildeo conteacutem surfels Para encontrar o surfel do noacute

vazio mais proacuteximo da fronteira entre o noacute cheio e o vazio basta testar o valor da

coordenada se a fronteira eacute o lado direito do noacute cheio escolhe-se o surfel com

maior coordenada lsquoxrsquo se eacute o lado esquerdo escolhe-se o surfel com menor lsquoxrsquo

se lado superior surfel com maior lsquoyrsquo etc A seguir apresentamos a classificaccedilatildeo

de um ponto qualquer pertencente a um noacute cheio

Figura 23- Quadtree classificada

Melhorias Propostas 52

5111 Classificaccedilatildeo de um ponto de um noacute cheio

Figura 24 [2] A normal n eacute a normal meacutedia e os surfels s1 e s2 juntamente com a normal

n definem as retas que dividem o noacute O ponto a estaacute fora do modelo e o ponto b estaacute

dentro do modelo

Para um ponto localizado dentro do noacute faz-se o seguinte teste se o noacute foi

dividido testa-se de acordo com a divisatildeo do noacute se o ponto estaacute na parte do noacute

que estaacute dentro do modelo ele eacute classificado como ldquodentrordquo se o ponto estaacute na

parte que estaacute fora do modelo ele eacute classificado como ldquoforardquo (Figura 24) se o

ponto estaacute na parte que conteacutem os surfels encontra-se o surfel s pertencente ao

noacute mais proacuteximo do ponto e o classifica de acordo com s seja ns a normal em s

cs a coordenada de s cp a coordenada do ponto Se (cp - cs )٠ ns gt 0 o ponto

seraacute classificado como ldquoforardquo Senatildeo seraacute classificado como ldquodentrordquo

Se o noacute natildeo foi dividido em planos esta classificaccedilatildeo a partir do surfel

mais proacuteximo seraacute sempre feita

512 Teste DentroFora

Melhorias Propostas 53

Figura 25-Duas circunferecircncias e suas quadtrees correspondentes

O Teste DentroFora classifica os surfels de um modelo como dentro ou

fora de outro modelo ou na sua interseccedilatildeo Este teste foi aqui implementado

exatamente como foi proposto em Adams e Dutreacute [2] exceto que natildeo foi

implementado o meacutetodo TINN - Triangle Inequality Nearest Neighbour [19]

Cada octree eacute percorrida verificando-se se os seus noacutes ou surfels estatildeo dentro

fora ou no contorno do outro modelo (Figura 25) Sejam A e B duas octrees e

queremos classificar a octree A As duas octrees (AB) satildeo percorridas partindo

da raiz

Para cada noacute de A existem quatro casos (Figura 26) Para testar estas

situaccedilotildees os boxes dos noacutes satildeo aumentados de rmax o raio do maior surfel do

modelo Isto eacute feito para compensar o fato de que o surfel natildeo eacute apenas um

ponto mas sim considerado como um disco

Os quatro casos satildeo

Se o noacute de A natildeo intersecta B entatildeo todos os surfels deste noacute satildeo

classificados como fora

Se o noacute de A intersecta apenas noacutes de B que estatildeo fora do modelo

todos os surfels deste noacute satildeo fora

Se o noacute de A intersecta apenas noacutes de B que estatildeo dentro do modelo

todos os surfels deste noacute satildeo dentro

Melhorias Propostas 54

Se o noacute de A intersecta noacutes de B que estatildeo dentro e tambeacutem noacutes de B

que estatildeo fora testa-se se este noacute de A eacute ou natildeo folha Se natildeo for folha

percorre-se os filhos deste noacute de A ateacute encontrar um noacute folha cheio que

intersecta B Para cada surfel sa deste noacute folha de A encontra-se o surfel de B

mais proacuteximo e classifica-se a coordenada de sa da forma apresentada na seccedilatildeo

5111 Seja sb o surfel usado na classificaccedilatildeo de sa Se os discos de sb e sa

se intersectam sa eacute classificado como ldquointerseccedilatildeordquo

(a) (b)

(c) (d)

Figura 26- a modelos natildeo se intersectam b modelo intersecta noacutes fora c modelo intersecta apenas noacutes dentro d modelo intersecta noacutes dentro e noacutes fora

513 Criaccedilatildeo do modelo resultado

Um novo modelo eacute criado com os seguintes surfels (de acordo com a

operaccedilatildeo booleana escolhida pelo usuaacuterio - veja Regra 1 da seccedilatildeo 41)

Uniatildeo - surfels de A que estatildeo fora de B + surfels de B que estatildeo fora de A

Melhorias Propostas 55

Interseccedilatildeo - surfels de A que estatildeo dentro de B + surfels de B que estatildeo

dentro de A

Diferenccedila A-B - surfels de A que estatildeo fora de B + surfels de B que estatildeo

dentro de A (com orientaccedilatildeo invertida)

Como natildeo foi implementado tratamento especial algum de interseccedilatildeo para

o nosso plugin os surfels que se intersectam satildeo mantidos no modelo resultado

final sem modificaccedilotildees

Descrito o algoritmo vejamos a seguir a sua implementaccedilatildeo

52 Implementaccedilatildeo

Este algoritmo foi implementado na forma de um plugin para o software

PointShop 3D [11] Este plugin foi desenvolvido na linguagem C e no sistema

operacional Windows

A escolha deste tipo de implementaccedilatildeo permitiu-nos usar o software

PointShop para os testes do algoritmo Estes testes foram feitos com os modelos

disponibilizados para o PointShop [11] Nesta seccedilatildeo apresentaremos o software

PointShop e as principais estruturas de dados usadas em nosso plugin

O Pointshop eacute um software aberto com seu coacutedigo disponiacutevel e preparado

para trabalhar com plugins Eacute um software de ediccedilatildeo de modelos 3D por pontos

Ele permite aleacutem de visualizar o modelo alterar as suas caracteriacutesticas como

cor brilho e fazer mapeamento de textura iluminaccedilatildeo filtragem (Figura 27)

Melhorias Propostas 56

Figura 27-Software PointShop 3D com dois modelos carregados na sua cena

Aleacutem disso pode-se criar uma cena com vaacuterios modelos e visualizaacute-los de

qualquer ponto de vista Implementa o virtual trackball para rotacionaacute-los e

transladaacute-los Usa uma iluminaccedilatildeo simples direcional A sua arquitetura eacute

extensiacutevel permite que o usuaacuterio adicione seus proacuteprios componentes ao

sistema Possui trecircs tipos de componentes

ldquoToolsrdquo fornece funcionalidades para ediccedilatildeo interativa de superfiacutecie Satildeo

disponibilizados na ldquotoolbarrdquo

Plugins fornece funcionalidades para processar em um soacute passo

modelos ou partes deles selecionadas Satildeo disponibilizados no menu ldquoPluginsrdquo

Renderes fornece funcionalidades de display para os modelos

Para esta dissertaccedilatildeo foi escolhida a construccedilatildeo do componente Plugin

por adequar-se agrave nossa proposta e ser a mais simples de ser construiacuteda O

PointShop [11] jaacute conteacutem uma tool que executa operaccedilotildees booleanas e

deformaccedilatildeo free-form sobre os modelos carregados na cena usando o meacutetodo

de Pauly [3] apresentado no capiacutetulo 4 O nosso plugin Operaccedilotildees Booleanas

implementa o algoritmo descrito na seccedilatildeo anterior baseado na proposta de

Melhorias Propostas 57

Adams e Dutreacute [2] Uma comparaccedilatildeo entre o nosso plugin e a tool de Pauly [3] eacute

feita no capiacutetulo 6

Figura 28-Menu do PointShop com o plugin e as opccedilotildees para operaccedilotildees booleanas

Para se executar o plugin o usuaacuterio precisa carregar dois modelos na

cena do PointShop acionar o plugin informando a operaccedilatildeo que seraacute executada

O plugin executaraacute o algoritmo acima proposto e carregaraacute o resultado na cena

do Pointshop retirando os modelos anteriores

521 Estruturas de Dados

Como vimos o software PointShop [11] trabalha com modelos por pontos

Um modelo deste software descrito na seccedilatildeo 42 conteacutem todas as informaccedilotildees

que o algoritmo proposto em Bart [2] necessita Abaixo relacionamos as

Melhorias Propostas 58

principais estruturas de dados do PointShop usadas no plugin e as principais

estruturas de dados do nosso plugin

As principais classes do PointShop usadas no plugin satildeo

Classe Scene

Classe Objects

Classe SurfelColections

Classe Surfel

Classe StatusBar

Classe Transformer

A hierarquia de dados eacute a seguinte a Scene conteacutem vaacuterios Objects os

quais conteacutem SurfelColections Cada SurfelColections conteacutem Surfels que

suportam uma ou mais propriedades tais como cor difusa cor especular

Classe Scene Classe que representa uma cena que conteacutem modelos

Classe Object Um modelo eacute representado pela classe Object que

conteacutem uma SurfelCollection e as matrizes de transformaccedilatildeo para rotaccedilatildeo

escala e translaccedilatildeo Cada Object eacute identificado pelo seu nome que eacute uacutenico na

Scene O meacutetodo getUniqueName retorna um nome uacutenico Cada Object tem sua

proacutepria matriz de transformaccedilatildeo que pode ser modificada com setRotation

rotate setPosition translate setScale e scale Objects podem ser copiados com

copy Objects consiste em um conjunto de surfels os quais podem ser

recuperados pela getSurfelCollection O Object pode ser ativado com

setActiveObject e recuperado com getActiveObject

Objects podem ser adicionados ou removidos com addObject e

removeObject Os Objects podem ser obtidos pela getFirstObject e

getNextObject

Classe SurfelCollection representa o conjunto de surfels de um modelo

Cada surfelcollection consiste em um conjunto de surfels (SurfelInterface) de

tamanho obtido por getNofSurfels Os surfels podem ser recuperados com

getFirstSurfel getCurrentSurfel e getNextSurfel

A SurfelCollection conteacutem um PropertyDescriptor e uma SurfelList

A SurfelList eacute uma lista duplamente encadeada de surfels Possui os

atributos firstSurfel lastSurfel currentSurfel que satildeo ponteiros para uma

SurfelInterface nSurfels que eacute o nuacutemero de Surfels

A SurfelInterface define a API para os surfels que satildeo os menores

elementos que compotildeem um Object Podem ser considerados como pontos com

uma normal que define a orientaccedilatildeo do ciacuterculo (ou elipse) que seraacute desenhado

Melhorias Propostas 59

tatildeo logo o surfel seja renderizado Tem como atributos dois ponteiros (next e

prev) para SurfelInterface

PropertyDescriptor consiste em ateacute 32 valores descrevendo quais as

propriedades a SurfelInterface suporta

Classe Surfel classe que representa o surfel

Classe StatusBar classe que imprime mensagens na tela Os plugins

podem mandar mensagens para o usuaacuterio pela StatusBar

Mensagens texto podem ser impressas com showMessage O progresso

de uma operaccedilatildeo pode ser indicado com setProgress ou resetProgress

Classe Transformer representa a transformaccedilatildeo entre sistemas de

coordenadas Esta classe fornece meacutetodos para transformar pontos e vetores

entre os diferentes sistemas de coordenadas do Pointshop

A seguir apresentamos as principais estruturas de dados do plugin

Operaccedilotildees Booleanas

As principais estruturas de dados do plugin satildeo boundingbox tree no

lista_surfel surfel

Boundingbox conteacutem dois pontos 3D que definem uma caixa que conteacutem

o modelo um ponto com menores coordenadas xy e z e outro ponto com

maiores xyz

Tree representa a octree do modelo Cada registro conteacutem um ponteiro

para um noacute e oito ponteiros para as 8 octrees filhas

No representa um noacute da octree Conteacutem os seguintes dados

- localizaccedilatildeo do noacute que eacute o canto inferior esquerdo do noacute

- lista_surfel (preenchida apenas para noacutes folha cheios)

- quantidade de surfels do noacute

- classificaccedilatildeo do noacute como dentro fora ou contorno

- classificaccedilatildeo do noacute em relaccedilatildeo a outro modelo

- indica se o noacute eacute folha ou natildeo

- vetor que eacute a meacutedia das normais dos surfels do noacute

- ponto que eacute a meacutedia das localizaccedilotildees dos surfels do noacute

- surfel que tem (entre todos os surfels do noacute) o maior produto interno

entre a sua normal e a normal meacutedia

- surfel que tem (entre todos os surfels do noacute) o menor produto interno

entre a sua normal e a normal meacutedia

- produto interno maacuteximo e miacutenimo entre as normais dos surfels do noacute e a

normal meacutedia deste noacute

Melhorias Propostas 60

- indica se o noacute conteacutem surfels com normais em sentido oposto (produto

interno entre elas eacute menor que zero)

- classificaccedilatildeo dos oito cantos do noacute

lista_surfels lista em que cada registro conteacutem um apontador para um

surfel e um apontador para o proacuteximo registro

surfel representa o surfel da octree Conteacutem a classificaccedilatildeo em relaccedilatildeo a

outro modelo e um ponteiro para o surfel do Poinshop

Resultados 61

6 Resultados

Neste capiacutetulo apresentamos os testes realizados com o plugin para o

PointShop implementado para esta dissertaccedilatildeo a comparaccedilatildeo deste plugin com

o plugin de Pauly [3] e a comparaccedilatildeo entre o meacutetodo de Adams e Dutreacute [2] e o

meacutetodo de Pauly [3]

61 Testes

Os testes foram feitos em um PC x86 Family 6 261600 KB de RAM sem

placa graacutefica sistema operacional Windows 2000 O plugin foi implementado na

linguagem C

Os modelos usados para os testes satildeo modelos disponibilizados no

PointShop [11] Vale lembrar que o meacutetodo implementado em nosso plugin eacute

restrito a modelos soacutelidos e portanto foram usados apenas estes modelos

soacutelidos para os testes

O modelo na Figura 29 que eacute um dos modelos disponibilizados no

PointShop [11] foi usado para mostrar o resultado das operaccedilotildees realizadas

pelo plugin implementado nesta dissertaccedilatildeo O modelo Igea eacute um modelo soacutelido

que conteacutem 134345 surfels

Resultados 62

Figura 29-Modelo do PointShop Igea

Para realizar as operaccedilotildees este modelo foi carregado na cena do

PointShop duas vezes e um deles colorido de vermelho As Figuras 30 31 32

mostram o resultado da operaccedilatildeo de uniatildeo interseccedilatildeo e diferenccedila

respectivamente Os nuacutemeros de surfels dos modelos resultantes satildeo mostrados

na Tabela 2

Resultados 63

Figura 30-Resultado da uniatildeo de duas Igeas

Figura 31-Resultado da interseccedilatildeo de duas Igeas

Resultados 64

Figura 32-Resultado da diferenccedila entre duas Igeas

Tabela 2-Nuacutemero de surfels dos modelos resultantes

Observamos que o nuacutemero de surfels dos modelos resultantes estaacute

coerente com as figuras dos seus modelos

Para avaliar o tempo de processamento das operaccedilotildees foram realizados

vaacuterios testes com o objetivo de obter uma meacutedia dos tempos de realizaccedilatildeo de

cada operaccedilatildeo Tambeacutem foram armazenados os tempos da criaccedilatildeo das duas

octrees e da classificaccedilatildeo de todos os surfels dos dois objetos (como dentro ou

fora do outro modelo) Estes testes foram feitos usando o modelo Igea A meacutedia

dos tempos de processamento foi calculada e os resultados satildeo mostrados na

Tabela 3 Verificamos que o maior tempo gasto eacute para criaccedilatildeo das octrees

Verificamos tambeacutem que este resultado apresentado eacute similar ao resultado

verificado empiricamente com o plugin de Pauly [3] Os tempos gastos para

realizar as operaccedilotildees satildeo similares e o maior tempo gasto no plugin de Pauly

tambeacutem eacute para inicializaccedilatildeo de suas estruturas de dados que incluem a kd-tree

Operaccedilatildeo Nuacutemero de surfels do modelo resultado

Uniatildeo 189715

Interseccedilatildeo 72225

Diferenccedila 134552

Resultados 65

Operaccedilatildeo Criaccedilatildeo das

Octrees (seg)

Classificaccedilatildeo

(seg)

Criaccedilatildeo do

resultado (seg)

Total (seg)

Uniatildeo 39375 1324 18925 7154

Interseccedilatildeo 38585 1585 09547 63982

Diferenccedila 399875 1504 1729 729475

Tabela 3- Meacutedia dos tempos de processamento para as operaccedilotildees com duas Igeas

Com o objetivo de expor melhor os resultados deste trabalho

apresentamos abaixo mais um teste das operaccedilotildees booleanas usando o nosso

plugin Os modelos usados para este segundo teste satildeo o Max Planck e o Male

ambos modelos soacutelidos disponibilizados no PointShop Estes modelos satildeo

mostrados nas figura 33 e 34

O primeiro Max Planck conteacutem 52809 surfels

Figura 33-Modelo do PointShop MaxPlanck

O segundo modelo abaixo Male conteacutem 148138 surfels

Resultados 66

Figura 34-Modelo do PointShop Male

As Figuras 353637 mostram o resultado da operaccedilatildeo de uniatildeo interseccedilatildeo

e diferenccedila respectivamente usando os dois modelos acima Podemos observar

pela figura 35 que o resultado da operaccedilatildeo de diferenccedila neste caso gerou um

modelo resultado com trecircs partes desconexas Os nuacutemeros de surfels de cada

modelo resultado satildeo mostrados na Tabela 5

Figura 35- Resultado da Uniatildeo do modelo Male com MaxPlanck

Resultados 67

Figura 36-Resultado da interseccedilatildeo do modelo Male com o MaxPlanck

Figura 37-Resultado da diferenccedila do modelo Male do modelo MaxPlanck

As meacutedias de tempos de processamento foram calculadas da mesma

forma que o primeiro teste com o modelo Igea acima apresentado Os

resultados satildeo mostrados na Tabela 4 Podemos observar que este teste

Resultados 68

apresenta tempos um pouco menores que o teste com o modelo Igea Isto se

deve ao fato de que o modelo MaxPlanck ser significativamente menor que o

modelo Igea MaxPlanck possui 52809 surfels e Igea conteacutem 134345 surfels

Operaccedilatildeo Criaccedilatildeo das

Octrees (seg)

Classificaccedilatildeo

(seg)

Criaccedilatildeo do

resultado (seg)

Total

(seg)

Uniatildeo 3012 1254 102 5285

Interseccedilatildeo 2985 0901 0861 4747

Diferenccedila 2965 0911 0791 4667

Tabela 4-Tempo de processamento das operaccedilotildees com os modelos MaxPlanck e Male

Operaccedilatildeo Nuacutemero de surfels do resultado

Uniatildeo 126532

Interseccedilatildeo 88414

Diferenccedila 77635

Tabela 5-Nuacutemero de surfels dos modelos resultados das operaccedilotildees com os modelos MaxPlanck e Male

Em seguida apresentaremos uma comparaccedilatildeo entre o nosso plugin e o

plugin de Pauly[3] e tambeacutem uma comparaccedilatildeo entre o meacutetodo de Adams e Dutreacute

[2] e o meacutetodo de Pauly [3]

62 Comparaccedilatildeo entre os dois meacutetodos que realizam operaccedilotildees booleanas

A comparaccedilatildeo entre os meacutetodos de Pauly[3] e de Adams e Dutreacute foi feita

em termos de tempo de processamento e em termos conceituais Em termos de

tempo de processamento comparamos o plugin de Pauly[3] com o nosso plugin

Em termos de tempo de processamento verifica-se empiricamente que os

dois meacutetodos apresentam tempos bastante similares Entretanto o tempo de

processamento do algoritmo aqui implementado ainda pode ser melhorado com

Resultados 69

o uso do meacutetodo TINN [19] que foi proposto em Adams[2] - para otimizar a

pesquisa do surfel mais proacuteximo a um ponto que estaacute localizado na regiatildeo de um

noacute que conteacutem surfels - veja seccedilatildeo 42 O uso deste meacutetodo natildeo foi

implementado para este trabalho e a sua implementaccedilatildeo melhoraria o tempo de

resposta do algoritmo Aleacutem disso o trabalho de Sara F Frisken [12] citado no

capiacutetulo 2 apresenta uma otimizaccedilatildeo no uso de octrees que pode ser

incorporada no algoritmo implementado neste trabalho

Em termos conceituais vamos fazer a comparaccedilatildeo do uso do que

chamamos aqui de Regra 2 do tratamento de interseccedilatildeo e do tratamento de

ldquoarestas vivasrdquo

Como vimos na seccedilatildeo 41 tanto o algoritmo implementado nesta

dissertaccedilatildeo baseado no trabalho de Adams e Dutreacute como o meacutetodo de Pauly

[3] parte do que chamamos aqui de Regra 2 para realizar operaccedilotildees booleanas

com pontos Mas cada um destes meacutetodos daacute um tratamento diferente para o

uso desta regra

O meacutetodo de Pauly usa a Regra 2 para classificaccedilatildeo de cada ponto ou de

cada surfel Para classificar um surfel de B sb como dentro ou fora de A eacute

encontrado o surfel de A sa mais proacuteximo a sb e sb eacute classificado a partir de sa

Para encontrar sa Pauly utiliza uma kd-tree Como esta pesquisa para encontrar

sa eacute cara (mesmo usando uma kd-tree) Pauly utiliza uma esfera que conteacutem

pontos com a mesma classificaccedilatildeo (seccedilatildeo 432) e diminui em 90 este nuacutemero

de pesquisas Pauly utiliza tambeacutem a representaccedilatildeo impliacutecita MLS (Moving Least

Squares) para casos em que a Regra 2 poderia falhar e para tratamento de

interseccedilotildees Entretanto o nuacutemero destes casos em que a Regra 2 poderia falhar

eacute muito pequeno E a representaccedilatildeo MLS natildeo eacute uma estrutura simples de ser

implementada Portanto natildeo encontramos vantagens em usar MLS para estes

casos O meacutetodo de Adams e Dutreacute natildeo trata estes casos e na praacutetica

apresenta resultados bastante satisfatoacuterios como foi mostrado Portanto

consideramos que valeria a pena fazer algum tratamento especial para estes

casos se fosse um procedimento simples Para a execuccedilatildeo do algoritmo de

Pauly o uso de MLS natildeo interfere significativamente porque a construccedilatildeo desta

representaccedilatildeo natildeo eacute feita somente para realizar operaccedilotildees booleanas Os testes

empiacutericos que fizemos com o algoritmo de Pauly natildeo incluem a construccedilatildeo desta

representaccedilatildeo

Aparentemente os dois algoritmos satildeo bastante parecidos um usa octrees

e o outro usa kd-tree As duas estruturas de dados satildeo simples e otimizam a

classificaccedilatildeo dos surfels de um modelo como dentro ou fora do outro modelo

Resultados 70

Mas existe uma diferenccedila conceitual entre dois que merece ser destacada O

algoritmo aqui implementado usa a Regra 2 para classificaccedilatildeo dos noacutes de uma

octree e armazena esta octree classificada (ver capiacutetulo 5) Assim na maioria dos

casos natildeo seraacute necessaacuterio encontrar o surfel mais proacuteximo para classificar um

ponto (ou um surfel) como fora ou dentro de um modelo Caso o ponto esteja em

uma aacuterea da octree classificada ele teraacute a classificaccedilatildeo dada agravequela aacuterea A

pesquisa ao surfel mais proacuteximo seraacute feita apenas nos casos em que o ponto a

ser classificado estaacute localizado entre os planos que subdividem um noacute cheio

O uso desta octree classificada levanta uma questatildeo que natildeo foi citada no

trabalho de Adams e Dutreacute que eacute a proximidade desta estrutura (armazenada)

de octree classificada com uma representaccedilatildeo volumeacutetrica do objeto Sendo

assim esta estrutura pode ser aproveitada para outras funccedilotildees aleacutem da

classificaccedilatildeo dos surfels Por exemplo podemos ter uma aproximaccedilatildeo do

volume de uma cena somando os volumes aproximados dos modelos que a

compotildeem Como o enfoque deste trabalho eacute operaccedilatildeo booleana natildeo vamos nos

aprofundar nesta questatildeo

Outra importante diferenccedila entre os dois trabalhos que jaacute foi explicada na

seccedilatildeo 432 eacute que o meacutetodo de Pauly aplica-se a modelos soacutelidos ou natildeo

soacutelidos enquanto que o meacutetodo de Adams e Dutreacute aplica-se somente a modelos

soacutelidos

Quanto ao tratamento de interseccedilatildeo em termos de visualizaccedilatildeo todos os

dois resolvem bem o problema O tratamento de interseccedilatildeo nos dois trabalhos

tambeacutem resolve o problema da validade da Regra 2 (ver seccedilatildeo 44) Entretanto

o tratamento de Adams e Dutreacute natildeo depende da renderizaccedilatildeo sendo portanto

mais portaacutevel Aleacutem disso uma desvantagem do meacutetodo de Pauly eacute o uso da

representaccedilatildeo impliacutecita MLS (ldquoMoving Least Squaresrdquo) do objeto para obter os

pontos exatamente na curva de interseccedilatildeo Esta representaccedilatildeo torna o

tratamento de interseccedilatildeo mais complexo e a vantagem apresentada natildeo eacute tatildeo

significativa para este tratamento de interseccedilatildeo

Conclusatildeo 71

7 Conclusatildeo

Concluiacutemos entatildeo que as escolhas de Adams e Dutreacute por usar uma

octree classificada e pelo tratamento dado agrave interseccedilatildeo satildeo mais abrangentes

que a escolha de Pauly E consideramos que quanto mais abrangente for uma

escolha conceitual mais resultados poderemos tirar dela No caso de Adams e

Dutreacute eles estendem o problema de classificar um ponto para classificar todo o

modelo Como foi citado ele quase fornece uma representaccedilatildeo volumeacutetrica do

modelo Esta aproximada representaccedilatildeo volumeacutetrica pode nos fornecer outras

informaccedilotildees como por exemplo o volume aproximado do modelo

Aleacutem disso o uso da representaccedilatildeo impliacutecita MLS no meacutetodo de Pauly cria

uma complexidade a mais para o meacutetodo sem apresentar vantagens para a

realizaccedilatildeo de operaccedilotildees booleanas que eacute o nosso enfoque

Logo podemos dizer que o meacutetodo de Adams e Dutreacute apresenta as

seguintes vantagens em relaccedilatildeo ao de Pauly

- a estrutura de octree classificada aleacutem de ser usada para classificaccedilatildeo

fornece informaccedilotildees adicionais como volume aproximado do objeto

- o tempo de processamento no meacutetodo de Adams e Dutreacute tende a ser

melhor que no meacutetodo de Pauly se implementadas as melhorias acima citadas e

se colocaacutessemos em consideraccedilatildeo o uso da representaccedilatildeo impliacutecita MLS

(Moving Least Squares)

- o tratamento de interseccedilatildeo de Adams e Dutreacute apresenta a vantagem da

portabilidade ou seja iraacute funcionar independente do algoritmo de renderizaccedilatildeo

utilizado

E as vantagens do meacutetodo de Pauly em relaccedilatildeo ao de Adams e Dutreacute

- a colocaccedilatildeo de surfels exatamente na curva de interseccedilatildeo

- a possibilidade de trabalhar com modelos soacutelidos ou natildeo soacutelidos

E finalizando concluiacutemos que o estudo relatado nesta dissertaccedilatildeo foi

importante por

- fornecer um breve estudo sobre modelagem por pontos uma nova e

promissora aacuterea dentro da computaccedilatildeo graacutefica

Conclusatildeo 72

- por apresentar uma avaliaccedilatildeo dos dois trabalhos existentes sobre

operaccedilotildees booleanas com pontos encontrando as vantagens de cada um

e levantando questotildees que natildeo tinham sido citadas nos trabalhos originais

- por propor e implementar melhorias ao trabalho de Adams e Dutreacute

71 Trabalhos Futuros

Nossa implementaccedilatildeo pode ser ainda evoluiacuteda com as propostas

apresentadas na seccedilatildeo 62 Como observamos o tempo de processamento do

algoritmo aqui implementado ainda pode ser melhorado com o uso do meacutetodo

TINN [19] - que foi proposto em Adams[2] - para otimizar a pesquisa do surfel

mais proacuteximo a um ponto que estaacute localizado na regiatildeo de um noacute que conteacutem

surfels Aleacutem disso o trabalho Simple and Efficient Trasversal Methods for

Quadtrees and Octrees de Sara F Frisken [12] citado no capiacutetulo 2 apresenta

uma otimizaccedilatildeo no uso de octrees Outra proposta para melhorar o tempo de

processamento do algoritmo aqui implementado eacute usar a forma de trabalhar com

octrees apresentada neste trabalho

O trabalho de Adams e Dutreacute [2] eacute aplicado apenas a objetos soacutelidos O

nosso plugin portanto aplica-se somente a este tipo de objeto Jaacute o trabalho de

Pauly[3] eacute aplicado tambeacutem a modelos natildeo soacutelidos Apresentamos como

proposta a um trabalho futuro a extensatildeo do algoritmo aqui implementado para

modelos natildeo soacutelidos O surfel pode conter uma informaccedilatildeo adicional que indica

se ele estaacute delimitando um volume ou natildeo Assim pode-se ter um modelo com

ldquopartes soacutelidasrdquo e ldquopartes natildeo soacutelidasrdquo Por exemplo a uniatildeo de um plano com

uma esfera poderia resultar numa esfera com ldquoabasrdquo (seriam as partes do plano

que estariam fora da esfera) O modelo resultado teria uma parte correspondente

a um espaccedilo 3D (esfera) e outra parte que seria uma superfiacutecie 2D posicionada

no espaccedilo 3D sem delimitar algum volume (abas)

Muitos trabalhos podem ser desenvolvidos aplicando-se o modelo por

pontos em animaccedilatildeo jogos visualizaccedilatildeo de terrenos criaccedilatildeo de protoacutetipos etc

considerando-se a eficiecircncia e simplicidade do modelo E mais especificamente

as operaccedilotildees booleanas com pontos podem ser aplicadas para criaccedilatildeo de

cenaacuterios testes de colisotildees e nestes casos a representaccedilatildeo usando octrees

pode ser mais explorada considerando-se o seu potencial de representaccedilatildeo

volumeacutetrica de um objeto

Referecircncias Bibliograacuteficas 73

8 Referecircncias Bibliograacuteficas

[1] MAumlNTYLAuml M An Introduction to Solid Modeling Computer Science Press 1988

[2] ADAMS B DUTREacute P Interactive Boolean Operations on Surfel-

Bounded Solids Proceedings of SIGGRAPH 2003 San Diego USA 2003

[3] PAULY M KEISER R KOBBELT L GROSS M Shape Modeling

with Point-Sampled Geometry SIGGRAPH 2003 Computer Graphics

Proceedings Annual Conference Series ACM Press ACM SIGGRAPH 2003

[4] LEVOY M WHITTED T The Use of Points as Display Primitives

Technical Report TR 85-022 The University of North Carolina at Chapel Hill

Department of Computer Science 1985

[5] PFISTER H ZWICKER M VAN BAAR J GROSS M 2000 Surfels

Surface Elements as Rendering Primitives SIGGRAPH 2000 pp 335ndash342 New

Orleans LA July 23-28 2000

[6] ZWICKER M PFISTER H VAN BAAR J GROSS M Surface

Splatting SIGGRAPH 2001

[7] PAULY M KOBBELT L GROSS M Multiresolution Modeling of

Point-Sampled Geometry CS Techinical Report 378 September 16 2002

[8] CURLESS B New Methods for Surface Reconstruction from Range Images PhD thesis Stanford University 1997

[9] RUSINKIEWICZ S Real-time Acquisition and Rendering of Large 3D Models PhD thesis Stanford University 2001

Referecircncias Bibliograacuteficas 74

[10] AMENTA N BERN M KAMVYSSELIS M A new Voronoi-Based

Surface Reconstruction Algorithm SIGGRAPH 98 Conference proceedings pp

415-421 New York 1998

[11] ZWICKER M PAULY M KNOLL O GROSS M Pointshop 3D an

Interactive System for Point-Based Surface Editing Proceedings of SIGGRAPH 2002 San Antonio TX July 2002

[12] FRISKEN S PERRY R Simple and Efficient Traversal Methods for

Quadtrees and Octrees Journal of Graphics Tools Vol 7 Issue 3 May 2003

[13] CORREcircA W T OLIVEIRA M M Silva C T Wang J

Modeling and Rendering of Real Environments

Revista de Informaacutetica Teoacuterica e Aplicada (Brazilian Journal of Theoretic and Applied Computing) 9(2)127-156 2002

[14] DAVIS J MARSCHNER S GARR M LEVOY M Filling Holes in

Complex Surfaces Using Volumetric Diffusion First International Symposium on 3D Data Processing Visualization Transmission June 2002

[15] RAumlSAumlNEN J Surface Splatting Theory Extensions and Implementation Masterrsquos Thesis Dept of Computer Science Helsinki

University of Technology May 28 2002

[16] PAULY M Point Primitives for Interactive Modeling and Processing of 3D Geometry PhD thesis Federal Institute of Technology (ETH)

of Zurich 2003

[17] HOPPE H DEROSE T DUCHAMP T MCDONALD J

STUELZLE W Surface Reconstruction from Unorganized Points Computer Graphics 26(2)71ndash78 July 1992

[18] ALEXA M BEHR J COHEN-OR D FLEISHMAN S LEVIN D

SILVA C T Point Set Surfaces IEEE Visualization 2001 pp 21ndash28 October

2001

Referecircncias Bibliograacuteficas 75

[19] GREENSPAN M GODIN G TALBOT J Acceleration of Binning

Nearest Neighbor Methods Proceedings of Vision Interface 2000 pp 337-

344

[20] MENCL R Reconstruction of Surfaces from Unorganized Three-Dimensional Point Clouds Dissertation Dortmund Univ 2001

[21] KRIVANEK J Representing and Rendering Surfaces With Points

httpciteseernjneccomkrivanek03representinghtml Acesso em 30 jul

2003

[22] KRISTJANSSON ET AL Approximate Boolean Operations on Free-

form Solids Proceedings of SIGGRAPH 01 2001

Modelagem por Pontos 26

(seccedilatildeo 44) Em duas dimensotildees os veacutertices de Voronoi de uma amostragem

densa aproximam o ldquoEixo Medialrdquo da amostragem

Por meio deste conceito de Eixo Medial [1016] obtecircm-se paracircmetros

teoacutericos para a definiccedilatildeo de amostragem adequada e baseado neste conceito

o algoritmo apresentado em [10] traz uma soluccedilatildeo praacutetica para o problema

obtendo uma malha poligonal a partir do modelo por pontos

O PointShop 3D [11] software de ediccedilatildeo de modelos por pontos utilizado

nesta pesquisa faz quando necessaacuterio a reconstruccedilatildeo da superfiacutecie Para isso

o PointShop 3D explora a vizinhanccedila local (surfels vizinhos de acordo com suas

posiccedilotildees) Ele usa o conceito de Eixo Medial para justificar seu meacutetodo de

reconstruccedilatildeo da superfiacutecie que na praacutetica apresenta resultados bastante

satisfatoacuterios apesar de teoricamente natildeo ter garantias [16]

37 Visualizaccedilatildeo do modelo

A primeira abordagem para visualizaccedilatildeo de um modelo por pontos foi

construir uma malha de poliacutegonos a partir dos surfels e renderizaacute-la Mas a

construccedilatildeo de malhas a partir dos surfels eacute um processo muito caro e lento

principalmente para modelos complexos Na tentativa de obter uma visualizaccedilatildeo

interativa do modelo por pontos estatildeo sendo estudadas teacutecnicas que utilizam

surfels como primitiva de visualizaccedilatildeo A ideacuteia foi apresentada inicialmente por

Levoy [4]

Figura 3 [21] -Modelo por pontos e sua renderizaccedilatildeo usando Surface Splatting

Modelagem por Pontos 27

O objetivo da renderizaccedilatildeo a partir dos surfels eacute projetaacute-los na tela e

reconstruir as superfiacutecies de forma contiacutenua sem buracos Para que esta

renderizaccedilatildeo seja amplamente utilizada deve-se ter cuidado com o uso de

memoacuteria e com a qualidade da imagem gerada Teacutecnicas recentes como Surface

Splatting [6] faz a renderizaccedilatildeo interativamente com qualidade (Figura 3)

comparada a outros meacutetodos de renderizaccedilatildeo como Image Based Rendering

Em geral a visualizaccedilatildeo do modelo por pontos pode ser dividida nas seguintes

etapas

- warping - projeccedilatildeo em perspectiva de cada ponto do modelo na tela

processo anaacutelogo agrave projeccedilatildeo de veacutertices dos triacircngulos na malha triangular Se

um pixel da tela estiver contido em mais de uma projeccedilatildeo de surfels (vizinhos)

ou seja mais de um ponto cobre este pixel os atributos destes pontos seratildeo

combinados

- shading por ponto - o processo de shading eacute realizado para cada ponto

visiacutevel (os pontos que natildeo satildeo vistos do ponto de vista em questatildeo devem ser

retirados) Qualquer modelo local de shading pode ser aplicado Uma nova

teacutecnica foi proposta em Surface Splatting [6]

- reconstruccedilatildeo da imagem ndash pixels que natildeo ldquoreceberamrdquo projeccedilatildeo de

nenhum ponto formam buracos na imagem Esta imagem deve ser reconstruiacuteda

sem buracos sem aliasing e as superfiacutecies devem ser reconstruiacutedas de forma

contiacutenua e devem ser ldquosuavizadasrdquo (smooth surface)

Os algoritmos de renderizaccedilatildeo por pontos podem tratar a questatildeo de

buracos na visualizaccedilatildeo de trecircs formas [17]

Detecccedilatildeo e preenchimento de buracos no espaccedilo da tela pontos satildeo

projetados na tela e pixels que natildeo receberam pontos satildeo detectados (buracos)

Para preencher estes buracos que natildeo receberam pontos eacute feita uma

interpolaccedilatildeo entre os vizinhos

Geraccedilatildeo de mais pontos a superfiacutecie eacute interpolada no espaccedilo do modelo

para garantir que todos os pixels recebam pelo menos a projeccedilatildeo de um ponto

Splatting um surfel eacute projetado na tela e sua contribuiccedilatildeo eacute espalhada de

forma diferenciada para os pixels vizinhos Agrave medida em que o vizinho se torna

mais distante a contribuiccedilatildeo do surfel diminui

Raumlsaumlnen faz uma analogia do processo de renderizaccedilatildeo proposto em [6]

com o mapeamento de textura [15] No mapeamento de textura para um

determinado pixel da tela satildeo encontrados os pontos da textura que afetam este

Modelagem por Pontos 28

pixel Num sentido inverso em splatting para um determinado surfel (que

representa a textura) satildeo encontrados os pixels da tela que este surfel afeta

38 Ediccedilatildeo do modelo

Ediccedilatildeo de um modelo 3D consiste em operaccedilotildees que modificam

caracteriacutesticas deste modelo como cor textura forma ou criam novos modelos

O software PointShop 3D [11] software de ediccedilatildeo de modelos por pontos 3D

implementa vaacuterias destas operaccedilotildees (ver seccedilatildeo 52)

Para modificar a forma de um modelo ou criar um novo satildeo muito usadas

as operaccedilotildees booleanas que eacute o nosso enfoque nesta dissertaccedilatildeo Na

modelagem CSG (Constructive Solid Geometry) as operaccedilotildees booleanas satildeo

usadas juntamente com primitivas soacutelidas para definir um modelo No entanto

em alguns tipos de modelos estas operaccedilotildees satildeo difiacuteceis como por exemplo

em malhas poligonais Com pontos elas podem ser feitas interativamente [32]

Operaccedilotildees Booleanas com Pontos 29

4 Operaccedilotildees Booleanas com Pontos

Operaccedilotildees booleanas satildeo as operaccedilotildees de uniatildeo interseccedilatildeo e diferenccedila

definidas na teoria matemaacutetica de conjuntos Estas operaccedilotildees satildeo aplicadas em

modelos soacutelidos para alteraacute-los ou para criar novos modelos A Figura 4 abaixo

mostra a criaccedilatildeo de trecircs novos modelos a partir de quatro modelos iniciais

Figura 4 [22] Trecircs modelos novos foram criados a partir dos quatro iniciais (esfera

cilindro dois cubos) O primeiro eacute a esfera menos um cubo em seguida retirou-se outro

cubo e por uacuteltimo retirou-se o cilindro

Estas operaccedilotildees satildeo aplicadas em objetos modelados por pontos em dois

trabalhos no trabalho de Bart Adams e Philip Dutreacute [2] e no trabalho de Pauly

et Al [3] Neste capiacutetulo a seccedilatildeo 41 apresenta a parte comum aos dois

trabalhos e as seccedilotildees 42 e 43 apresentam as particularidades de cada um A

seccedilatildeo 44 discute uma questatildeo natildeo explicitada em nenhum dos dois trabalhos

41 Meacutetodos para realizar operaccedilotildees booleanas em objetos modelados por pontos

A Figura 5 mostra o resultado do meacutetodo de Adams[2] operaccedilotildees de

uniatildeo diferenccedila e interseccedilatildeo de objetos soacutelidos 3D modelados por pontos

Operaccedilotildees Booleanas com Pontos 30

Figura 5 [2]-A partir de dois modelos por pontos uma heacutelice e uma cabeccedila as trecircs operaccedilotildees booleanas satildeo mostradas da esquerda para a direita uniatildeo diferenccedila e interseccedilatildeo

Sejam A e B objetos 3D soacutelidos modelados por pontos Definem-se os

seguintes elementos

Af ndash superfiacutecie (contorno) de A que estaacute fora de B

Ad ndash superfiacutecie (contorno) de A que estaacute dentro de B

Bf ndash superfiacutecie (contorno) de B que estaacute fora de A

Bd ndash superfiacutecie (contorno) de B que estaacute dentro de A

O resultado da operaccedilatildeo booleana entre A e B seraacute um modelo C cuja

superfiacutecie de contorno pode ser determinada pela seguinte regra [2] que aqui

chamamos de Regra 1

Regra 1 A U B Af + Bf

A cap B Ad + Bd

A ndash B Af + Bd (com a orientaccedilatildeo invertida)

B ndash A Ad (com a orientaccedilatildeo invertida) + Bf

A Figura 6 mostra as operaccedilotildees com dois modelos A e B

(a) (b)

Operaccedilotildees Booleanas com Pontos 31

(c) (d)

Figura 6 [22] (a) Dois modelos A e B (b) Posicionados de forma que A tem

uma parte dentro de B eacute mostrado o resultado A U B Af + Bf (c) Resultado de A ndash B Af

+ Bd (d) Resultado de A cap B Ad + Bd

Bart [2] e Pauly [3] apresentam dois meacutetodos para determinar os

elementos acima Estes dois meacutetodos satildeo construiacutedos a partir dos seguintes

conceitos os elementos Af Ad Bf Bd satildeo uma parte da superfiacutecie modelada por

pontos e portanto satildeo conjuntos de surfels Para determinaacute-los eacute necessaacuteria

entatildeo a classificaccedilatildeo de um surfel (que pode se resumir agrave classificaccedilatildeo de um

ponto que eacute o seu centro) de uma superfiacutecie como dentro ou fora de um outro

modelo Os dois meacutetodos utilizam a seguinte regra para esta classificaccedilatildeo aqui

denominada Regra 2

Regra 2 Dado um ponto x qualquer um volume V determinado por uma superfiacutecie

de contorno S uma amostragem P da superfiacutecie S um ponto p є P que eacute a

amostra mais proacutexima a x um vetor np normal agrave S em p e orientado para fora de

S temos que

(x ndash p) np gt 0 x notinV

Ou seja para classificar um ponto em relaccedilatildeo a um modelo verificamos o

produto interno entre a normal em p (surfel mais proacuteximo a x) e o vetor (x - p)

se este produto interno for maior que zero x natildeo pertence ao volume V e seraacute

classificado como fora senatildeo seraacute classificado como dentro De maneira

ainda mais informal se a normal em p apontar para a direccedilatildeo oposta a x x seraacute

classificado como dentro se apontar para x x seraacute classificado como fora

A Figura 7 mostra a Regra 2

Operaccedilotildees Booleanas com Pontos 32

Figura 7 Para classificar o ponto x encontra-se o surfel p (com normal np) mais proacuteximo

a x Se o produto interno entre np e (x ndash p) for maior que zero entatildeo x eacute classificado como

fora senatildeo seraacute classificado como dentro

A validade da Regra 2 eacute discutida na Seccedilatildeo 44 Uma das restriccedilotildees

teoacutericas para garantir-lhe a validade eacute que a superfiacutecie seja suave

Cada um dos dois meacutetodos daacute um tratamento diferente para o uso desta

regra Pauly usa a regra diretamente encontrando o surfel mais proacuteximo a um

ponto e classificando este ponto a partir deste surfel Ele utiliza tambeacutem a

representaccedilatildeo impliacutecita MLS (Moving Least Squares [18]) para casos em que a

Regra 2 poderia falhar e para tratamento de interseccedilotildees [3] Seu meacutetodo vale

para modelos soacutelidos ou natildeo soacutelidos O meacutetodo de Adams e Dutreacute [2] utiliza

octrees [1] criando uma classificaccedilatildeo dos noacutes da octree a partir desta Regra 2

Os pontos satildeo entatildeo classificados de acordo com o noacute da octree que o conteacutem

Este segundo meacutetodo aplica-se somente a modelos soacutelidos Os dois meacutetodos

seratildeo descritos em detalhes nas seccedilotildees abaixo

Como um surfel eacute considerado um disco podemos dizer que surfels de

dois modelos diferentes podem se intersectar A interseccedilatildeo destes dois surfels

corresponde agrave interseccedilatildeo destes dois discos Estes surfels geram problemas

para visualizaccedilatildeo se forem acrescentados ao resultado sem um tratamento

especiacutefico apresentaratildeo artefatos natildeo desejaacuteveis na renderizaccedilatildeo do modelo

resultado (Figura 8) se natildeo forem acrescentados ao resultado deixaratildeo buracos

no modelo

Operaccedilotildees Booleanas com Pontos 33

Figura 8 [2] -Interseccedilatildeo de duas esferas agrave esquerda sem nenhum tratamento de interseccedilatildeo agrave direita apoacutes o tratamento de interseccedilatildeo

Aleacutem disso nem sempre esta interseccedilatildeo forma uma superfiacutecie suave

Esta interseccedilatildeo pode formar uma aresta viva (seccedilatildeo 4223) gerando

problemas tambeacutem para o uso da Regra 2 que eacute vaacutelida apenas para superfiacutecies

suaves Eacute necessaacuterio entatildeo fazer um tratamento desta superfiacutecie de interseccedilatildeo

(formada por surfels originados de diferentes modelos) O tratamento de cada

um dos meacutetodos para este caso seraacute tambeacutem abaixo apresentado

42 Meacutetodo de Adams e Dutreacute

O meacutetodo aplica-se somente a modelos soacutelidos Para determinaccedilatildeo dos

elementos da aqui chamada Regra 1 (seccedilatildeo 41) este meacutetodo utiliza uma octree

[1] que subdivide o espaccedilo do modelo em trecircs fora dentro ou no contorno do

modelo Estes espaccedilos satildeo determinados pela classificaccedilatildeo dos noacutes da octree a

partir da Regra 2 Tambeacutem eacute usado o meacutetodo TINN - Triangle Inequality Nearest

Neighbour [19] - para otimizar a pesquisa dentro do noacute A seguir descrevemos o

modelo usado neste meacutetodo apresentando os dados associados aos pontos o

tipo de distribuiccedilatildeo e o algoritmo que realiza as operaccedilotildees

421 Modelo por Pontos em Adams e Dutreacute

Os surfels neste meacutetodo contecircm as seguintes informaccedilotildees posiccedilatildeo do

surfel xs orientaccedilatildeo do surfel ns e raio de alcance do surfel rs O surfel pode ser

pensado como um disco ortogonal a ns com centro xs e raio rs O raio eacute

escolhido de tal forma que a projeccedilatildeo dos discos no plano da imagem se

sobreponham

Operaccedilotildees Booleanas com Pontos 34

Os objetos representados satildeo soacutelidos A distribuiccedilatildeo dos surfels eacute

uniforme embora o algoritmo natildeo exija esta condiccedilatildeo Para cada soacutelido eacute

definido um rmax = Max rs o raio de alcance do maior surfel pertencente agrave

superfiacutecie do soacutelido Como o raio eacute escolhido de tal forma que a projeccedilatildeo dos

discos no plano da imagem se sobreponham o controle da amostragem eacute

entatildeo ligado agrave renderizaccedilatildeo

422 Algoritmo de Operaccedilotildees Booleanas

Utilizando objetos modelados da forma descrita acima o meacutetodo realiza

operaccedilotildees de uniatildeo interseccedilatildeo e diferenccedila com modelos soacutelidos Supondo dois

modelos soacutelidos S1 e S2 O algoritmo pode ser dividido nas seguintes etapas

Criaccedilatildeo de uma octree para cada modelo Teste Dentro-Fora Tratamento da

interseccedilatildeo Estas etapas satildeo apresentadas nas proacuteximas seccedilotildees

4221 Criaccedilatildeo de uma octree para cada modelo

Eacute criada uma octree [1] para cada modelo A criaccedilatildeo de uma octree eacute feita

da seguinte forma

Gera-se a ldquoCaixa envolventerdquo caixa alinhada com os eixos que conteacutem

todo o modelo A ldquoCaixa envolventerdquo corresponde ao noacute raiz da octree Este noacute

conteacutem inicialmente todos os surfels do modelo Em seguida o noacute raiz eacute

dividido em oito noacutes filhos Os surfels satildeo distribuiacutedos entre estes oito noacutes Cada

um deles caso contenha surfels eacute dividido novamente em 8 filhos e seus surfels

satildeo redistribuiacutedos entre eles Este processo eacute repetido recursivamente enquanto

o nuacutemero de surfels do noacute for maior que zero ou ateacute uma profundidade maacutexima

preacute-definida da octree ser alcanccedilada

Cada noacute da octree deve ser classificado O objetivo desta classificaccedilatildeo eacute

determinar que parte da octree estaacute dentro do modelo e que parte estaacute fora Os

noacutes da octree satildeo entatildeo classificados como ldquodentrordquo ldquoforardquo e ldquocontornordquo

Podemos ilustrar esta classificaccedilatildeo em 2D a Figura 9 mostra uma quadtree

classificada

Operaccedilotildees Booleanas com Pontos 35

Figura 9-Um objeto representado por pontos com suas normais e sua quadtree correspondente classificada os noacutes cinza claro estatildeo dentro do modelo noacutes cinza mais escuro estatildeo fora do modelo e noacutes com cinza intermediaacuterio satildeo noacutes cheios noacutes que conteacutem pontos

O noacutes que conteacutem surfels satildeo classificados como ldquocontornordquo Para

classificar um noacute vazio existem trecircs casos

o noacute vazio tem apenas um vizinho-irmatildeo natildeo vazio

o noacute vazio tem mais de um vizinho-irmatildeo natildeo vazio

o noacute vazio natildeo tem vizinhos-irmatildeos natildeo vazios

No primeiro caso o noacute vazio eacute classificado pelo seu vizinho natildeo vazio No

segundo caso considera-se qualquer um dos vizinhos natildeo vazios No terceiro

caso classifica-se primeiro os noacutes vizinhos e eacute dada a mesma classificaccedilatildeo para

o noacute vazio Como cada noacute natildeo folha de uma octree tem pelo menos um noacute filho

natildeo vazio sempre pode ser feita a classificaccedilatildeo dos noacutes vazios A classificaccedilatildeo

eacute feita da seguinte forma dentre os surfels do vizinho-irmatildeo escolhido encontra-

se o surfel mais proacuteximo ao noacute a ser classificado Se a normal deste surfel

aponta para o noacute vazio a ser classificado entatildeo ele eacute classificado como ldquoforardquo

Se a normal aponta no sentido contraacuterio entatildeo ele eacute classificado como ldquodentrordquo

De maneira mais formal sejam cv e cc coordenadas dos centros do noacute vazio e

do noacute contorno respectivamente Seja s o surfel mais proacuteximo ao noacute vazio e ns

a normal em s Se ( cv - cc )٠ ns gt 0 ( produto interno entre a normal em s e o

vetor cv - cc for maior que zero ) o noacute vazio seraacute classificado como ldquoforardquo

Senatildeo seraacute classificado como ldquodentrordquo

Em geral os noacutes ldquocontornordquo satildeo subdivididos em trecircs partes uma que estaacute

fora do modelo uma que estaacute dentro do modelo e uma terceira que conteacutem os

surfels Esta subdivisatildeo eacute feita por meio da criaccedilatildeo de dois planos paralelos que

Operaccedilotildees Booleanas com Pontos 36

dividem o noacute Para determinar estes planos calcula-se o vetor nm igual agrave

meacutedia das normais dos surfels do noacute nm = sum ns sum ns onde ns eacute a normal de

cada surfel do noacute

Em seguida encontra-se o surfel com maior produto interno entre a sua

normal e a normal meacutedia d1=Max(nm ٠ ns) Este surfel juntamente com a normal

meacutedia define um dos planos Encontra-se tambeacutem o surfel com menor produto

interno entre a sua normal e a normal meacutedia d2=Min(nm ٠ ns) Este surfel

juntamente com a normal meacutedia define o outro plano A Figura 10 mostra a

divisatildeo de um noacute de uma quadtree nas trecircs partes dentro do modelo fora do

modelo e no ldquocontornordquo

Esta subdivisatildeo aplica-se apenas a noacutes que conteacutem surfels cujas direccedilotildees

natildeo variem em mais de 90 graus Caso isso ocorra ele natildeo seraacute subdividido Ou

seja se um noacute possuir dois vetores normais (de dois surfels diferentes) que

formem um acircngulo maior que 90 graus ele natildeo seraacute subdividido

Figura 10 [2] -Divisatildeo de noacute de contorno a parte agrave esquerda estaacute fora do modelo a parte agrave direita estaacute dentro do modelo e a faixa intermediaacuteria conteacutem os surfels

4222 Teste Dentro-Fora

O Teste Dentro-Fora faz a classificaccedilatildeo dos surfels de um modelo como

ldquodentrordquo ou ldquoforardquo de outro modelo Portanto aplicaremos este mesmo teste duas

vezes uma para o modelo S1 em relaccedilatildeo ao modelo S2 e outra para S2 em

relaccedilatildeo a S1 Vamos mostrar o teste Dentro-Fora para o caso da classificaccedilatildeo

dos surfels do modelo S1 em relaccedilatildeo a S2

Operaccedilotildees Booleanas com Pontos 37

No item anterior foram criadas duas octrees uma para o modelo S1 e

outra para o modelo S2 Chamemos de A e B as octrees de S1 e S2

respectivamente Para classificar S1 em relaccedilatildeo a S2 inicialmente eacute feita uma

avaliaccedilatildeo da posiccedilatildeo de A em relaccedilatildeo a B A e B podem estar nas seguintes

situaccedilotildees

- A natildeo intersecta B

- A intersecta apenas noacutes ldquoforardquo de B

- A intersecta apenas noacutes ldquodentrordquo de B

- A intersecta noacutes ldquoforardquo e noacutes ldquodentrordquo de B

Para testar estas situaccedilotildees os noacutes satildeo aumentados de rmax o raio do

maior surfel do modelo soacutelido Isto eacute feito para compensar o fato de que o surfel

natildeo eacute apenas um ponto mas sim considerado como um disco

No primeiro e no segundo caso todos os surfels de A satildeo classificados

como ldquoforardquo No terceiro caso todos os surfels de A satildeo classificados como

ldquodentrordquo

No quarto caso temos que percorrer a octree A Comeccedilando pelo noacute raiz

percorre-se os filhos deste noacute Para cada filho os quatro testes acima satildeo feitos

Se o noacute filho encontra-se em um dos trecircs primeiros casos a classificaccedilatildeo eacute dada

como foi citada acima Se um filho estaacute no quarto caso e natildeo eacute um noacute folha

repete-se recursivamente o mesmo procedimento para seus filhos ateacute encontrar-

se um noacute folha Para um noacute que estaacute no quarto caso e eacute folha percorre-se a lista

de surfels que este noacute conteacutem classificando cada um destes surfels Seja sa um

surfel desta lista Para este caso percorre-se a octree B para classificar sa

Primeiramente encontramos o noacute de B que conteacutem sa Se este noacute de B foi

dividido testa-se de acordo com esta divisatildeo do noacute se o surfel sa estaacute na parte

do noacute que estaacute dentro do modelo ele eacute classificado como ldquodentrordquo se sa estaacute na

parte que estaacute fora do modelo ele eacute classificado como ldquoforardquo se sa estaacute na parte

intermediaacuteria ou se o noacute de B natildeo foi subdividido em planos encontra-se sb que

eacute o surfel pertencente a este noacute de B que estaacute mais proacuteximo de sa sa seraacute

entatildeo classificado de acordo com sb Se ( sa - sb )٠ nb gt 0 sa eacute classificado

como ldquoforardquo senatildeo eacute classificado como ldquodentrordquo Se os discos de sb e sa se

intersectam sa eacute marcado como interseccedilatildeo Para encontrar sb o algoritmo

implementa o meacutetodo TINN ndash Triangle Inequality Nearest Neighbour [19]

Operaccedilotildees Booleanas com Pontos 38

4223 Tratamento da interseccedilatildeo

Os surfels de A que intersectam surfels de B satildeo classificados como

ldquointerseccedilatildeordquo Se eles natildeo forem incluiacutedos no modelo resultado o soacutelido resultado

teraacute buracos Se eles forem incluiacutedos sem algum tratamento eles natildeo

representaratildeo adequadamente a regiatildeo Em geral o surfel sa (um surfel

ldquointerseccedilatildeordquo de A) eacute dividido em dois pelo plano que conteacutem o surfel sb (surfel de

B que sa intersecta) uma parte que estaacute fora de B e outra que estaacute dentro de B

Dependendo da operaccedilatildeo que estaacute sendo realizada vamos querer manter uma

destas partes do surfel sa no modelo resultado Seja xa a posiccedilatildeo do surfel sa e o

surfel sa uma circunferecircncia de centro xa e raio ra igual ao raio de alcance de sa

O plano que conteacutem o surfel sb define uma corda desta circunferecircncia como

mostra a Figura 11 O surfel sa seraacute substituiacutedo por um surfel menor que

ultrapassa esta corda de uma distacircncia e definida pelo usuaacuterio Para cobrir

completamente a interseccedilatildeo seratildeo adicionados surfels menores que cruzam a

corda de interseccedilatildeo

Figura 11 -Interseccedilatildeo do surfel s e do plano que passa pelo surfel t o surfel mais proacuteximo a s O surfel s eacute substituiacutedo por trecircs surfels menores

Operaccedilotildees Booleanas com Pontos 39

O tratamento de interseccedilatildeo proposto por Adams e Dutreacute [2] natildeo soacute evita

os buracos mas tambeacutem cria uma forma de renderizaccedilatildeo de arestas vivas A

colocaccedilatildeo de vaacuterios pequenos surfels na regiatildeo da interseccedilatildeo permite esta

correta renderizaccedilatildeo das ldquoarestas vivasrdquo Desta forma o problema das arestas

vivas eacute resolvido na modelagem (Figura 12) A vantagem de se resolver o caso

na modelagem eacute que natildeo eacute necessaacuterio fazer um tratamento especial na

renderizaccedilatildeo para que mostre esta aresta viva Diferente do tratamento feito

em Pauly (seccedilatildeo 431) que resolve esta questatildeo em tempo de renderizaccedilatildeo

Aleacutem disso o tratamento resolve alguns casos onde a Regra 2 poderia falhar

(veja em Validade da Regra 2-seccedilatildeo 44)

Figura 12 [2] -Agrave direita eacute mostrado o resultado do tratamento de interseccedilatildeo para o caso de Arestas Vivas do objeto agrave esquerda

43 Meacutetodo de Pauly

O meacutetodo aplica-se a objetos soacutelidos e natildeo soacutelidos Os modelos podem ser

obtidos a partir de diferentes entradas como nuvem de pontos irregulares ou por

meio de scanners 3D Cria um modelo hiacutebrido destes objetos usa o modelo por

pontos juntamente com a representaccedilatildeo impliacutecita Moving Least Squares - MLS

[18] Realiza operaccedilotildees booleanas com pontos e utiliza adicionalmente MLS

para alguns casos de classificaccedilatildeo de surfels e no tratamento de interseccedilatildeo A

seguir apresentamos as caracteriacutesticas do modelo por pontos deste meacutetodo e o

algoritmo que realiza as operaccedilotildees

Operaccedilotildees Booleanas com Pontos 40

431 Modelo em Pauly

O modelo eacute uma estrutura hiacutebrida de pontos com a representaccedilatildeo impliacutecita

Moving Least Squares - MLS [18] Esta estrutura eacute usada para fazer operaccedilotildees

booleanas e tambeacutem operaccedilotildees de free-form (natildeo abordadas nesta

dissertaccedilatildeo) Para operaccedilotildees booleanas a representaccedilatildeo MLS permite que a

curva de interseccedilatildeo entre os modelos seja reconstruiacuteda e surfels sejam

colocados nesta curva e em alguns casos de classificaccedilatildeo de surfels mostrados

na seccedilatildeo 432 Para este modelo natildeo existem restriccedilotildees quanto agrave forma do

objeto

Os surfels contecircm informaccedilotildees sobre sua posiccedilatildeo e sua normal Aleacutem

disso surfels podem conter informaccedilotildees adicionais como textura cor

propriedades de materiais

A distribuiccedilatildeo dos surfels eacute natildeo-uniforme e a amostragem eacute

aproximadamente adequada (Veja seccedilatildeo 44)

432 Algoritmo de Operaccedilotildees Booleanas

O algoritmo classifica surfels de um modelo como ldquodentrordquo ou ldquoforardquo de

outro modelo Antes de colocarmos como eacute feita esta classificaccedilatildeo devemos

acrescentar que Pauly estende esta classificaccedilatildeo para modelos que natildeo satildeo

soacutelidos Ou seja mesmo um modelo natildeo soacutelido divide o espaccedilo da cena (espaccedilo

em que se encontra o modelo) em dois sub-espaccedilos dentro ou fora do modelo

Pauly faz esta subdivisatildeo da seguinte forma

Como a superfiacutecie que determina o modelo eacute orientada (conteacutem vetores

normais agrave superfiacutecie que apontam para ldquoforardquo do modelo) Pauly considera que

um modelo natildeo soacutelido divide o espaccedilo em dois sub-espaccedilos um ldquoforardquo do

modelo (os vetores normais apontam para este sub-espaccedilo) e um que estaacute

ldquodentrordquo do modelo (os vetores normais apontam para direccedilatildeo oposta a este sub-

espaccedilo) Por exemplo um plano eacute representado como um conjunto de surfels

contidos num determinado espaccedilo geomeacutetrico plano π Cada surfel conteacutem um

vetor normal direcionado Este modelo divide entatildeo o espaccedilo em dois sub-

espaccedilos o sub-espaccedilo que eacute apontado por estes surfels (considerado ldquoforardquo do

modelo) e o sub-espaccedilo que estaacute na direccedilatildeo oposta (considerado ldquodentrordquo do

modelo) Desta forma ele aplica as classificaccedilotildees de ldquodentrordquo e ldquoforardquo de um

modelo tambeacutem a modelos natildeo soacutelidos A partir desta consideraccedilatildeo as

Operaccedilotildees Booleanas com Pontos 41

operaccedilotildees booleanas satildeo realizadas com os modelos natildeo soacutelidos da mesma

forma que com os modelos soacutelidos

Para determinar esta classificaccedilatildeo (dentro ou fora do modelo) Pauly utiliza

a Regra 2 Para pesquisa do surfel mais proacuteximo o meacutetodo usa a estrutura Kd-

tree [16] e tambeacutem o algoritmo ANN [16] No entanto o meacutetodo apresenta uma

restriccedilatildeo da Regra 2 ela soacute deve ser usada para classificaccedilotildees de pontos x se

a distacircncia x-p for maior que o espaccedilamento da amostragem local ηp em p

Este espaccedilamento da amostragem local ηp em p eacute um caacutelculo aproximado da

distacircncia meacutedia entre os surfels vizinhos a p Se x estaacute muito proacuteximo agrave

superfiacutecie a classificaccedilatildeo pode falhar Neste caso ele calcula o ponto exato de

S mais proacuteximo a x usando a projeccedilatildeo MLS (ldquoMoving Least Squaresrdquo)

Por questotildees de melhoria de desempenho utiliza-se o fato de que sendo

Ωp (x) a classificaccedilatildeo do ponto x em relaccedilatildeo agrave amostragem P tem-se que Ωp (x)

= Ωp (xrsquo) para todos os pontos de xrsquo que estatildeo dentro da esfera de centro x e

raio igual a x-p - ηp (onde p eacute o surfel mais proacuteximo e ηp eacute o espaccedilamento

local da amostragem em p acima citado) Ou seja sendo x um ponto qualquer p

o surfel mais proacuteximo a x ηp eacute o espaccedilamento local da amostragem em p se

desenharmos uma esfera com centro x e raio igual a x-p - ηp temos que

todos os pontos xrsquo que estatildeo dentro da esfera teratildeo a mesma classificaccedilatildeo de x

Desta forma o nuacutemero de vezes que a classificaccedilatildeo eacute feita (pesquisando-se o

surfel mais proacuteximo ao ponto e usando a Regra 2) diminui em ateacute 90 Assim

em geral a classificaccedilatildeo de um surfel eacute obtida a partir do seu surfel vizinho

Dados

S1 a superfiacutecie MLS de contorno que define o modelo A

S2 a superfiacutecie MLS de contorno que define o modelo B

P1 o conjunto de surfels que representa a superfiacutecie S1

P2 o conjunto de surfels que representa a superfiacutecie S2

Ωp1 (x) a classificaccedilatildeo do ponto p em relaccedilatildeo a uma amostragem P1

Q1 o subconjunto de P1 que vai compor o resultado

Ωp2 (x) a classificaccedilatildeo do ponto p em relaccedilatildeo a uma amostragem P2

Q2 o subconjunto de P2 que vai compor o resultado

Os conjuntos Q1 e Q2 satildeo obtidos por meio da Tabela 1 mostrada abaixo

Operaccedilotildees Booleanas com Pontos 42

Tabela 1 Classificaccedilatildeo para operaccedilotildees booleanas

Para o tratamento de interseccedilatildeo neste meacutetodo satildeo computados pontos

que caem exatamente na curva de interseccedilatildeo e estes satildeo acrescentados ao

modelo resultado Estes pontos satildeo determinados de forma que a densidade da

amostragem vai crescendo agrave medida que os surfels se aproximam da curva de

interseccedilatildeo e convergem para este ponto de interseccedilatildeo como mostra a Figura

13

(a) (b) (c)

Figura 13 - Os novos surfels satildeo colocados exatamente na curva de interseccedilatildeo

e convergem para o ponto de interseccedilatildeo

A Figura 14 mostra o processo de encontrar os surfels que caem nesta

curva de interseccedilatildeo Inicialmente satildeo encontrados todos os pontos de Q1 e Q2

que estatildeo proacuteximos agrave curva de interseccedilatildeo por meio da funccedilatildeo de distacircncia do

operador de projeccedilatildeo MLS Em seguida procura-se todos os pares mais

proacuteximos (q1 є Q1 q2 є Q2 ) e computa-se o ponto q na curva de interseccedilatildeo da

seguinte forma (veja a Figura 14)Seja r o ponto na linha de interseccedilatildeo dos dois

planos tangentes em q1 e q2 e que estaacute mais proacuteximo a estes dois pontos isto eacute

que minimiza a distacircncia ||r-q1|| + ||r-q2|| r eacute a primeira aproximaccedilatildeo de q e agora

pode ser projetado sobre S1 e S2 para obter dois novos pontos de partida q1rsquo e q2

rsquo

para a iteraccedilatildeo Este procedimento pode ser repetido iterativamente ateacute que os

pontos q1 e q2 convirjam ao ponto q na curva de interseccedilatildeo Normalmente este

processo requer menos de trecircs iteraccedilotildees

Operaccedilotildees Booleanas com Pontos 43

(a) (b)

(c)

Figura 14 (a) Suponhamos a reta que eacute a interseccedilatildeo do plano tangente a S1 em q1 e o

plano tangente a S2 em q2 O ponto r eacute o ponto desta reta que estaacute mais proacuteximo a q1 e

q2 (b) r eacute projetado sobre S1 e S2 obtendo-se q1acute e q2acute dois novos pontos de partida

para nova iteraccedilatildeo (c) A nova iteraccedilatildeo gera r que eacute uma aproximaccedilatildeo melhor de q

Pauly faz o tratamento de arestas vivas em tempo de renderizaccedilatildeo Ele

faz uma alteraccedilatildeo no renderizador Marca os surfels de interseccedilatildeo e ao

renderizaacute-los satildeo cortados para gerar uma aresta viva

44 Validade da Regra 2

Os dois meacutetodos analisados nesta dissertaccedilatildeo utilizam a seguinte regra

para a classificaccedilatildeo de um surfel

Regra 2 dado um volume V determinado por uma superfiacutecie de contorno

S uma amostragem P da superfiacutecie S um ponto x qualquer um ponto p є P que

eacute a amostra mais proacutexima a x um vetor ny normal a S em p e orientado para

fora de S temos que (x ndash p) np gt 0 x notinV

Em [16] eacute colocado que esta regra eacute tirada da seguinte propriedade da

geometria diferencial (aqui chamada Propriedade 1)

Propriedade 1 Dado um volume V determinado por uma superfiacutecie de

contorno S contiacutenua e duplamente diferenciaacutevel um ponto x qualquer um ponto

Operaccedilotildees Booleanas com Pontos 44

y є S que eacute o ponto de S mais proacuteximo a x um vetor ny normal a S em y e

orientado para fora de S temos que (x ndash y) ny gt 0 x notinV

A Figura 15 ilustra esta propriedade

Figura 15 Para verificar se o ponto x estaacute fora de um contorno C encontra-se o ponto y

de C Se o produto interno entre a normal em y e o vetor que liga y a x for maior que

zero entatildeo x estaacute fora de C senatildeo estaacute dentro de C

Pauly assume que tendo uma amostragem P da superfiacutecie S podemos

usar a Propriedade 1 substituindo y por p o surfel mais proacuteximo ao ponto x (x ndash

p) np gt 0 x notinV (Regra 2) Esta amostragem P em seu trabalho eacute

(aproximadamente) uma ldquoamostragem adequadardquo Tambeacutem seu tratamento de

interseccedilatildeo cria uma aproximaccedilatildeo dela (seccedilatildeo 43) Empiricamente a

ldquodiscretizaccedilatildeo da propriedaderdquo eacute vaacutelida a partir desta suposiccedilatildeo Mas isso natildeo foi

demonstrado teoricamente em seu trabalho

Pauly coloca em [16] que natildeo existe ainda uma teoria matemaacutetica rigorosa

de amostragem anaacuteloga a teoria de Fourier para superfiacutecies discretas

A melhor aproximaccedilatildeo teoacuterica para esta aacuterea eacute o uso do Eixo Medial que

foi colocado em [10] Vamos descrever este trabalho brevemente nesta seccedilatildeo

Este trabalho apresenta um algoritmo de reconstruccedilatildeo de superfiacutecie que parte de

uma amostragem adequada (abaixo definida) de pontos e obteacutem uma malha

que eacute topologicamente equivalente agrave superfiacutecie do objeto e agrave medida que a

densidade da amostragem cresce a saiacuteda converge para esta superfiacutecie

Para definir amostragem adequada o trabalho parte do conceito de Eixo

Medial

Operaccedilotildees Booleanas com Pontos 45

ldquoEixo Medialrdquo de uma superfiacutecie 2D posicionada no R3 eacute o conjunto

(fechado) de pontos pi para os quais buscando-se o ponto da superfiacutecie que

estaacute mais proacuteximo a pi mais de um ponto pertencentes a esta superfiacutecie satildeo

encontrados A Figura 16 abaixo ilustra o Eixo Medial em 2D

Figura 16 [10] As curvas de cor mais clara satildeo o Eixo Medial da curva em preto

Em duas dimensotildees os veacutertices de Voronoi de uma amostragem densa

aproximam o ldquoEixo Medialrdquo da amostragem (mas esta propriedade natildeo se

estende a 3D) A Figura 17 mostra o Eixo Medial em 3D

Figura 17 [10] Em 3D geralmente o Eixo Medial eacute uma superfiacutecie 2D (em cor mais

clara) Aqui o quadrado eacute o Eixo Medial da superfiacutecie transparente que o contorna

Podemos definir agora a amostragem adequada da seguinte forma

Supondo uma superfiacutecie suave que quer dizer uma 2-manifold duplamente

diferenciaacutevel posicionada no R3 uma ldquoamostragem adequadardquo desta superfiacutecie eacute

aquela na qual a densidade da amostragem eacute (pelo menos) inversamente

proporcional agrave distacircncia ao ldquoEixo Medialrdquo A Figura 18 mostra uma amostragem

adequada

Operaccedilotildees Booleanas com Pontos 46

Figura 18 [10] A figura mostra o diagrama de Voronoi de uma amostragem de pontos S

Da mesma forma que o a amostragem aproxima a curva os veacutertices de Voronoi

aproximam o Eixo Medial

Na praacutetica na reconstruccedilatildeo da superfiacutecie uma aproximaccedilatildeo deste ldquoEixo

Medialrdquo eacute computada (devido agrave dificuldade de computaacute-lo exatamente e em

alguns casos ateacute impossibilidade)

Melhorias Propostas 47

5 Melhorias Propostas

No capiacutetulo 4 apresentamos dois meacutetodos que realizam operaccedilotildees

booleanas em modelos por pontos o meacutetodo de Adams e Dutreacute [2] e o meacutetodo

de Pauly[3] Para esta dissertaccedilatildeo usamos o meacutetodo de Adams e Dutreacute [2] e

propomos as seguintes melhorias

- Alteramos o momento em que eacute feita a classificaccedilatildeo da octree Fazemos

esta classificaccedilatildeo durante a sua criaccedilatildeo Os noacutes filhos de um noacute pai P qualquer

satildeo classificados logo apoacutes a criaccedilatildeo de todos estes filhos de P

independentemente do restante da octree ter sido criada Isso pode ser feito

porque a octree eacute construiacuteda na ordem raiz-esquerda-direita (preorder

traversal) e portanto apoacutes todos os filhos de um noacute pai serem criados a parte

necessaacuteria da octree para a classificaccedilatildeo destes filhos jaacute estaacute criada

- A classificaccedilatildeo da octree eacute otimizada classificando-se os cantos dos seus

noacutes como dentro ou fora do modelo Na classificaccedilatildeo de um noacute n1 a partir de seu

vizinho n2 se os cantos que satildeo comuns a n1 e n2 tiverem a mesma

classificaccedilatildeo esta seraacute dada ao noacute Assim diminuiacutemos o nuacutemero de pesquisas

pelo surfel mais proacuteximo que eacute a parte criacutetica da classificaccedilatildeo dos noacutes da octree

em termos de tempo de processamento

- Acrescentamos um valor miacutenimo (maior que zero) para o nuacutemero de

surfels contidos em um noacute que eacute uma das condiccedilotildees de parada na criaccedilatildeo da

octree Verificamos que desta forma diminui-se a chance de erro na classificaccedilatildeo

de partes criacuteticas como ldquoarestas vivasrdquo

Uma comparaccedilatildeo entre a nossa implementaccedilatildeo e a de Pauly tambeacutem seraacute

feita no capiacutetulo 6

51 Descriccedilatildeo do algoritmo

O algoritmo implementado para esta dissertaccedilatildeo baseado no meacutetodo de

Adams e Dutreacute [2] pode ser dividido nas seguintes partes Criaccedilatildeo e

classificaccedilatildeo de uma octree para cada modelo Teste DentroFora Criaccedilatildeo do

modelo resultado Natildeo foi implementado tratamento especial algum de

interseccedilatildeo para o nosso plugin As proacuteximas seccedilotildees apresentam estas partes

Melhorias Propostas 48

511 Criaccedilatildeo e classificaccedilatildeo de uma octree para cada modelo

As ideacuteias do algoritmo satildeo aqui ilustradas em 2D mas a extensatildeo delas

para 3D eacute feita facilmente

Para cada modelo a octree eacute criada e classificada da seguinte forma

Figura 19-Quadtree classificada Os noacutes mais escuros estatildeo fora do modelo os mais claros dentro e os em tom intermediaacuterio satildeo noacutes de contorno

Gera-se uma ldquocaixa envolventerdquo do modelo contendo todos os surfels e

cria-se o noacute raiz da octree que corresponde a esta ldquocaixa envolventerdquo Este noacute

raiz eacute subdividido em oito filhos e seus surfels satildeo distribuiacutedos entre eles Ao

inveacutes de testarmos os valores de xy e z para cada surfel a fim de determinar

para qual filho ele iraacute utilizamos listas auxiliares Primeiro os surfels satildeo

subdivididos em dois grupos pelos valores de x e armazenados em uma lista

auxiliar Em seguida cada uma das listas eacute subdividida pelo valor de y e as

quatro listas obtidas seratildeo subdivididas pelo valor de z Ao final teremos 8 listas

de surfels cada uma delas pertencente a um filho

Cada noacute seraacute entatildeo novamente subdividido enquanto contiver um nuacutemero

de surfels gt nmin (valor preacute-definido) ou enquanto a profundidade da aacutervore lt pmax

(valor preacute-definido) Na figura 19 pmax = 3 e nmin = 3

Melhorias Propostas 49

Figura 20-O noacute cheio eacute dividido em trecircs partes agrave esquerda a regiatildeo estaacute dentro do modelo agrave direita estaacute fora e entre as duas linhas que dividem o noacute estaacute a regiatildeo que conteacutem os surfels

Os noacutes cheios recebem um tratamento especial Eles satildeo subdivididos em

trecircs partes da seguinte forma uma que estaacute fora do modelo outra que estaacute

dentro e uma que conteacutem os surfels Esta subdivisatildeo eacute feita por meio da criaccedilatildeo

de dois planos paralelos que dividem o noacute Para determinar estes planos

calcula-se o vetor nm igual agrave meacutedia das normais dos surfels do noacute nm = sum ns

sum ns onde ns eacute a normal de cada surfel do noacute Em seguida encontra-se o

surfel com maior produto interno entre a sua normal e a normal meacutedia

d1=Max(nm ٠ ns) Este surfel juntamente com a normal meacutedia define um dos

planos Encontra-se tambeacutem o surfel com menor produto interno entre a sua

normal e a normal meacutedia d2=Min (nm ٠ ns) Este surfel juntamente com a normal

meacutedia define o outro plano (Figura 20) Se o noacute conteacutem surfels de superfiacutecies de

orientaccedilotildees diferentes ele natildeo seraacute subdividido ou seja os planos coincidiratildeo

com os planos que delimitam o proacuteprio noacute Este teste foi implementado da

seguinte forma escolhe-se um surfel qualquer do noacute Calcula-se o produto

interno entre a normal deste surfel e as outras normais dos outros surfels deste

noacute Se algum produto interno for menor que zero este noacute natildeo seraacute subdividido

Apoacutes a etapa de subdivisatildeo classificam-se os oito cantos deste noacute como

dentro ou fora do modelo por meio da classificaccedilatildeo de um ponto que

descreveremos na sub-seccedilatildeo 5111

Melhorias Propostas 50

a b

c d

Figura 21-O noacute a eacute classificado pelo noacute c o noacute d tambeacutem eacute classificado pelo noacute c a classificaccedilatildeo do noacute a eacute propagada para o noacute b

Jaacute os noacutes vazios da octree seratildeo classificados como ldquodentrordquo ou ldquoforardquo do

modelo da seguinte forma cada noacute folha vazio eacute classificado a partir de um de

seus irmatildeos vizinhos adjacentes Se ele possuir um vizinho adjacente cheio ele

seraacute classificado por este vizinho se natildeo possuir os vizinhos adjacentes seratildeo

classificados primeiro e ele teraacute esta mesma classificaccedilatildeo (Figura 21) Como tem

que existir sempre pelo menos um noacute cheio entre os filhos de um noacute pai entatildeo

sempre esta classificaccedilatildeo poderaacute ser feita Com a classificaccedilatildeo de todos os

filhos tem-se tambeacutem a classificaccedilatildeo dos cantos do noacute pai

Mf03c003fmx a b

Figura 22-Os cantos a e b do noacute cheio possuem a mesma classificaccedilatildeo fora do modelo Esta classificaccedilatildeo foi dada ao noacute vazio adjacente

Melhorias Propostas 51

Para classificar um noacute vazio por meio de um noacute cheio verificam-se os

cantos comuns destes dois noacutes se todos os cantos tiverem a mesma

classificaccedilatildeo esta seraacute dada ao noacute vazio (Figura 22) Se houver classificaccedilotildees

diferentes escolhe-se o surfel do noacute cheio mais proacuteximo ao noacute vazio faz-se o

produto interno entre a normal deste surfel e o vetor que liga o centro do noacute

cheio ao centro do noacute vazio (ou o vetor que liga o surfel ao centro do noacute vazio)

Se o produto interno for maior que zero o noacute eacute classificado como ldquoforardquo senatildeo eacute

classificado como ldquodentrordquo Para encontrar o surfel (pertencente a um noacute cheio)

mais proacuteximo ao noacute vazio existem dois casos

- O noacute cheio eacute folha percorre-se toda a lista de surfels e escolhe o surfel

mais proacuteximo da fronteira entre o noacute cheio e o vazio

- O noacute cheio natildeo eacute um noacute folha percorrem-se os filhos do noacute cheio ou seja

esta pesquisa eacute feita descendo na octree a partir do noacute cheio procurando o

surfel mais proacuteximo agrave fronteira do pai com o noacute vazio a ser classificado

Classificando o centro do noacute vazio todo o noacute deve ter a mesma

classificaccedilatildeo pois este noacute natildeo conteacutem surfels Para encontrar o surfel do noacute

vazio mais proacuteximo da fronteira entre o noacute cheio e o vazio basta testar o valor da

coordenada se a fronteira eacute o lado direito do noacute cheio escolhe-se o surfel com

maior coordenada lsquoxrsquo se eacute o lado esquerdo escolhe-se o surfel com menor lsquoxrsquo

se lado superior surfel com maior lsquoyrsquo etc A seguir apresentamos a classificaccedilatildeo

de um ponto qualquer pertencente a um noacute cheio

Figura 23- Quadtree classificada

Melhorias Propostas 52

5111 Classificaccedilatildeo de um ponto de um noacute cheio

Figura 24 [2] A normal n eacute a normal meacutedia e os surfels s1 e s2 juntamente com a normal

n definem as retas que dividem o noacute O ponto a estaacute fora do modelo e o ponto b estaacute

dentro do modelo

Para um ponto localizado dentro do noacute faz-se o seguinte teste se o noacute foi

dividido testa-se de acordo com a divisatildeo do noacute se o ponto estaacute na parte do noacute

que estaacute dentro do modelo ele eacute classificado como ldquodentrordquo se o ponto estaacute na

parte que estaacute fora do modelo ele eacute classificado como ldquoforardquo (Figura 24) se o

ponto estaacute na parte que conteacutem os surfels encontra-se o surfel s pertencente ao

noacute mais proacuteximo do ponto e o classifica de acordo com s seja ns a normal em s

cs a coordenada de s cp a coordenada do ponto Se (cp - cs )٠ ns gt 0 o ponto

seraacute classificado como ldquoforardquo Senatildeo seraacute classificado como ldquodentrordquo

Se o noacute natildeo foi dividido em planos esta classificaccedilatildeo a partir do surfel

mais proacuteximo seraacute sempre feita

512 Teste DentroFora

Melhorias Propostas 53

Figura 25-Duas circunferecircncias e suas quadtrees correspondentes

O Teste DentroFora classifica os surfels de um modelo como dentro ou

fora de outro modelo ou na sua interseccedilatildeo Este teste foi aqui implementado

exatamente como foi proposto em Adams e Dutreacute [2] exceto que natildeo foi

implementado o meacutetodo TINN - Triangle Inequality Nearest Neighbour [19]

Cada octree eacute percorrida verificando-se se os seus noacutes ou surfels estatildeo dentro

fora ou no contorno do outro modelo (Figura 25) Sejam A e B duas octrees e

queremos classificar a octree A As duas octrees (AB) satildeo percorridas partindo

da raiz

Para cada noacute de A existem quatro casos (Figura 26) Para testar estas

situaccedilotildees os boxes dos noacutes satildeo aumentados de rmax o raio do maior surfel do

modelo Isto eacute feito para compensar o fato de que o surfel natildeo eacute apenas um

ponto mas sim considerado como um disco

Os quatro casos satildeo

Se o noacute de A natildeo intersecta B entatildeo todos os surfels deste noacute satildeo

classificados como fora

Se o noacute de A intersecta apenas noacutes de B que estatildeo fora do modelo

todos os surfels deste noacute satildeo fora

Se o noacute de A intersecta apenas noacutes de B que estatildeo dentro do modelo

todos os surfels deste noacute satildeo dentro

Melhorias Propostas 54

Se o noacute de A intersecta noacutes de B que estatildeo dentro e tambeacutem noacutes de B

que estatildeo fora testa-se se este noacute de A eacute ou natildeo folha Se natildeo for folha

percorre-se os filhos deste noacute de A ateacute encontrar um noacute folha cheio que

intersecta B Para cada surfel sa deste noacute folha de A encontra-se o surfel de B

mais proacuteximo e classifica-se a coordenada de sa da forma apresentada na seccedilatildeo

5111 Seja sb o surfel usado na classificaccedilatildeo de sa Se os discos de sb e sa

se intersectam sa eacute classificado como ldquointerseccedilatildeordquo

(a) (b)

(c) (d)

Figura 26- a modelos natildeo se intersectam b modelo intersecta noacutes fora c modelo intersecta apenas noacutes dentro d modelo intersecta noacutes dentro e noacutes fora

513 Criaccedilatildeo do modelo resultado

Um novo modelo eacute criado com os seguintes surfels (de acordo com a

operaccedilatildeo booleana escolhida pelo usuaacuterio - veja Regra 1 da seccedilatildeo 41)

Uniatildeo - surfels de A que estatildeo fora de B + surfels de B que estatildeo fora de A

Melhorias Propostas 55

Interseccedilatildeo - surfels de A que estatildeo dentro de B + surfels de B que estatildeo

dentro de A

Diferenccedila A-B - surfels de A que estatildeo fora de B + surfels de B que estatildeo

dentro de A (com orientaccedilatildeo invertida)

Como natildeo foi implementado tratamento especial algum de interseccedilatildeo para

o nosso plugin os surfels que se intersectam satildeo mantidos no modelo resultado

final sem modificaccedilotildees

Descrito o algoritmo vejamos a seguir a sua implementaccedilatildeo

52 Implementaccedilatildeo

Este algoritmo foi implementado na forma de um plugin para o software

PointShop 3D [11] Este plugin foi desenvolvido na linguagem C e no sistema

operacional Windows

A escolha deste tipo de implementaccedilatildeo permitiu-nos usar o software

PointShop para os testes do algoritmo Estes testes foram feitos com os modelos

disponibilizados para o PointShop [11] Nesta seccedilatildeo apresentaremos o software

PointShop e as principais estruturas de dados usadas em nosso plugin

O Pointshop eacute um software aberto com seu coacutedigo disponiacutevel e preparado

para trabalhar com plugins Eacute um software de ediccedilatildeo de modelos 3D por pontos

Ele permite aleacutem de visualizar o modelo alterar as suas caracteriacutesticas como

cor brilho e fazer mapeamento de textura iluminaccedilatildeo filtragem (Figura 27)

Melhorias Propostas 56

Figura 27-Software PointShop 3D com dois modelos carregados na sua cena

Aleacutem disso pode-se criar uma cena com vaacuterios modelos e visualizaacute-los de

qualquer ponto de vista Implementa o virtual trackball para rotacionaacute-los e

transladaacute-los Usa uma iluminaccedilatildeo simples direcional A sua arquitetura eacute

extensiacutevel permite que o usuaacuterio adicione seus proacuteprios componentes ao

sistema Possui trecircs tipos de componentes

ldquoToolsrdquo fornece funcionalidades para ediccedilatildeo interativa de superfiacutecie Satildeo

disponibilizados na ldquotoolbarrdquo

Plugins fornece funcionalidades para processar em um soacute passo

modelos ou partes deles selecionadas Satildeo disponibilizados no menu ldquoPluginsrdquo

Renderes fornece funcionalidades de display para os modelos

Para esta dissertaccedilatildeo foi escolhida a construccedilatildeo do componente Plugin

por adequar-se agrave nossa proposta e ser a mais simples de ser construiacuteda O

PointShop [11] jaacute conteacutem uma tool que executa operaccedilotildees booleanas e

deformaccedilatildeo free-form sobre os modelos carregados na cena usando o meacutetodo

de Pauly [3] apresentado no capiacutetulo 4 O nosso plugin Operaccedilotildees Booleanas

implementa o algoritmo descrito na seccedilatildeo anterior baseado na proposta de

Melhorias Propostas 57

Adams e Dutreacute [2] Uma comparaccedilatildeo entre o nosso plugin e a tool de Pauly [3] eacute

feita no capiacutetulo 6

Figura 28-Menu do PointShop com o plugin e as opccedilotildees para operaccedilotildees booleanas

Para se executar o plugin o usuaacuterio precisa carregar dois modelos na

cena do PointShop acionar o plugin informando a operaccedilatildeo que seraacute executada

O plugin executaraacute o algoritmo acima proposto e carregaraacute o resultado na cena

do Pointshop retirando os modelos anteriores

521 Estruturas de Dados

Como vimos o software PointShop [11] trabalha com modelos por pontos

Um modelo deste software descrito na seccedilatildeo 42 conteacutem todas as informaccedilotildees

que o algoritmo proposto em Bart [2] necessita Abaixo relacionamos as

Melhorias Propostas 58

principais estruturas de dados do PointShop usadas no plugin e as principais

estruturas de dados do nosso plugin

As principais classes do PointShop usadas no plugin satildeo

Classe Scene

Classe Objects

Classe SurfelColections

Classe Surfel

Classe StatusBar

Classe Transformer

A hierarquia de dados eacute a seguinte a Scene conteacutem vaacuterios Objects os

quais conteacutem SurfelColections Cada SurfelColections conteacutem Surfels que

suportam uma ou mais propriedades tais como cor difusa cor especular

Classe Scene Classe que representa uma cena que conteacutem modelos

Classe Object Um modelo eacute representado pela classe Object que

conteacutem uma SurfelCollection e as matrizes de transformaccedilatildeo para rotaccedilatildeo

escala e translaccedilatildeo Cada Object eacute identificado pelo seu nome que eacute uacutenico na

Scene O meacutetodo getUniqueName retorna um nome uacutenico Cada Object tem sua

proacutepria matriz de transformaccedilatildeo que pode ser modificada com setRotation

rotate setPosition translate setScale e scale Objects podem ser copiados com

copy Objects consiste em um conjunto de surfels os quais podem ser

recuperados pela getSurfelCollection O Object pode ser ativado com

setActiveObject e recuperado com getActiveObject

Objects podem ser adicionados ou removidos com addObject e

removeObject Os Objects podem ser obtidos pela getFirstObject e

getNextObject

Classe SurfelCollection representa o conjunto de surfels de um modelo

Cada surfelcollection consiste em um conjunto de surfels (SurfelInterface) de

tamanho obtido por getNofSurfels Os surfels podem ser recuperados com

getFirstSurfel getCurrentSurfel e getNextSurfel

A SurfelCollection conteacutem um PropertyDescriptor e uma SurfelList

A SurfelList eacute uma lista duplamente encadeada de surfels Possui os

atributos firstSurfel lastSurfel currentSurfel que satildeo ponteiros para uma

SurfelInterface nSurfels que eacute o nuacutemero de Surfels

A SurfelInterface define a API para os surfels que satildeo os menores

elementos que compotildeem um Object Podem ser considerados como pontos com

uma normal que define a orientaccedilatildeo do ciacuterculo (ou elipse) que seraacute desenhado

Melhorias Propostas 59

tatildeo logo o surfel seja renderizado Tem como atributos dois ponteiros (next e

prev) para SurfelInterface

PropertyDescriptor consiste em ateacute 32 valores descrevendo quais as

propriedades a SurfelInterface suporta

Classe Surfel classe que representa o surfel

Classe StatusBar classe que imprime mensagens na tela Os plugins

podem mandar mensagens para o usuaacuterio pela StatusBar

Mensagens texto podem ser impressas com showMessage O progresso

de uma operaccedilatildeo pode ser indicado com setProgress ou resetProgress

Classe Transformer representa a transformaccedilatildeo entre sistemas de

coordenadas Esta classe fornece meacutetodos para transformar pontos e vetores

entre os diferentes sistemas de coordenadas do Pointshop

A seguir apresentamos as principais estruturas de dados do plugin

Operaccedilotildees Booleanas

As principais estruturas de dados do plugin satildeo boundingbox tree no

lista_surfel surfel

Boundingbox conteacutem dois pontos 3D que definem uma caixa que conteacutem

o modelo um ponto com menores coordenadas xy e z e outro ponto com

maiores xyz

Tree representa a octree do modelo Cada registro conteacutem um ponteiro

para um noacute e oito ponteiros para as 8 octrees filhas

No representa um noacute da octree Conteacutem os seguintes dados

- localizaccedilatildeo do noacute que eacute o canto inferior esquerdo do noacute

- lista_surfel (preenchida apenas para noacutes folha cheios)

- quantidade de surfels do noacute

- classificaccedilatildeo do noacute como dentro fora ou contorno

- classificaccedilatildeo do noacute em relaccedilatildeo a outro modelo

- indica se o noacute eacute folha ou natildeo

- vetor que eacute a meacutedia das normais dos surfels do noacute

- ponto que eacute a meacutedia das localizaccedilotildees dos surfels do noacute

- surfel que tem (entre todos os surfels do noacute) o maior produto interno

entre a sua normal e a normal meacutedia

- surfel que tem (entre todos os surfels do noacute) o menor produto interno

entre a sua normal e a normal meacutedia

- produto interno maacuteximo e miacutenimo entre as normais dos surfels do noacute e a

normal meacutedia deste noacute

Melhorias Propostas 60

- indica se o noacute conteacutem surfels com normais em sentido oposto (produto

interno entre elas eacute menor que zero)

- classificaccedilatildeo dos oito cantos do noacute

lista_surfels lista em que cada registro conteacutem um apontador para um

surfel e um apontador para o proacuteximo registro

surfel representa o surfel da octree Conteacutem a classificaccedilatildeo em relaccedilatildeo a

outro modelo e um ponteiro para o surfel do Poinshop

Resultados 61

6 Resultados

Neste capiacutetulo apresentamos os testes realizados com o plugin para o

PointShop implementado para esta dissertaccedilatildeo a comparaccedilatildeo deste plugin com

o plugin de Pauly [3] e a comparaccedilatildeo entre o meacutetodo de Adams e Dutreacute [2] e o

meacutetodo de Pauly [3]

61 Testes

Os testes foram feitos em um PC x86 Family 6 261600 KB de RAM sem

placa graacutefica sistema operacional Windows 2000 O plugin foi implementado na

linguagem C

Os modelos usados para os testes satildeo modelos disponibilizados no

PointShop [11] Vale lembrar que o meacutetodo implementado em nosso plugin eacute

restrito a modelos soacutelidos e portanto foram usados apenas estes modelos

soacutelidos para os testes

O modelo na Figura 29 que eacute um dos modelos disponibilizados no

PointShop [11] foi usado para mostrar o resultado das operaccedilotildees realizadas

pelo plugin implementado nesta dissertaccedilatildeo O modelo Igea eacute um modelo soacutelido

que conteacutem 134345 surfels

Resultados 62

Figura 29-Modelo do PointShop Igea

Para realizar as operaccedilotildees este modelo foi carregado na cena do

PointShop duas vezes e um deles colorido de vermelho As Figuras 30 31 32

mostram o resultado da operaccedilatildeo de uniatildeo interseccedilatildeo e diferenccedila

respectivamente Os nuacutemeros de surfels dos modelos resultantes satildeo mostrados

na Tabela 2

Resultados 63

Figura 30-Resultado da uniatildeo de duas Igeas

Figura 31-Resultado da interseccedilatildeo de duas Igeas

Resultados 64

Figura 32-Resultado da diferenccedila entre duas Igeas

Tabela 2-Nuacutemero de surfels dos modelos resultantes

Observamos que o nuacutemero de surfels dos modelos resultantes estaacute

coerente com as figuras dos seus modelos

Para avaliar o tempo de processamento das operaccedilotildees foram realizados

vaacuterios testes com o objetivo de obter uma meacutedia dos tempos de realizaccedilatildeo de

cada operaccedilatildeo Tambeacutem foram armazenados os tempos da criaccedilatildeo das duas

octrees e da classificaccedilatildeo de todos os surfels dos dois objetos (como dentro ou

fora do outro modelo) Estes testes foram feitos usando o modelo Igea A meacutedia

dos tempos de processamento foi calculada e os resultados satildeo mostrados na

Tabela 3 Verificamos que o maior tempo gasto eacute para criaccedilatildeo das octrees

Verificamos tambeacutem que este resultado apresentado eacute similar ao resultado

verificado empiricamente com o plugin de Pauly [3] Os tempos gastos para

realizar as operaccedilotildees satildeo similares e o maior tempo gasto no plugin de Pauly

tambeacutem eacute para inicializaccedilatildeo de suas estruturas de dados que incluem a kd-tree

Operaccedilatildeo Nuacutemero de surfels do modelo resultado

Uniatildeo 189715

Interseccedilatildeo 72225

Diferenccedila 134552

Resultados 65

Operaccedilatildeo Criaccedilatildeo das

Octrees (seg)

Classificaccedilatildeo

(seg)

Criaccedilatildeo do

resultado (seg)

Total (seg)

Uniatildeo 39375 1324 18925 7154

Interseccedilatildeo 38585 1585 09547 63982

Diferenccedila 399875 1504 1729 729475

Tabela 3- Meacutedia dos tempos de processamento para as operaccedilotildees com duas Igeas

Com o objetivo de expor melhor os resultados deste trabalho

apresentamos abaixo mais um teste das operaccedilotildees booleanas usando o nosso

plugin Os modelos usados para este segundo teste satildeo o Max Planck e o Male

ambos modelos soacutelidos disponibilizados no PointShop Estes modelos satildeo

mostrados nas figura 33 e 34

O primeiro Max Planck conteacutem 52809 surfels

Figura 33-Modelo do PointShop MaxPlanck

O segundo modelo abaixo Male conteacutem 148138 surfels

Resultados 66

Figura 34-Modelo do PointShop Male

As Figuras 353637 mostram o resultado da operaccedilatildeo de uniatildeo interseccedilatildeo

e diferenccedila respectivamente usando os dois modelos acima Podemos observar

pela figura 35 que o resultado da operaccedilatildeo de diferenccedila neste caso gerou um

modelo resultado com trecircs partes desconexas Os nuacutemeros de surfels de cada

modelo resultado satildeo mostrados na Tabela 5

Figura 35- Resultado da Uniatildeo do modelo Male com MaxPlanck

Resultados 67

Figura 36-Resultado da interseccedilatildeo do modelo Male com o MaxPlanck

Figura 37-Resultado da diferenccedila do modelo Male do modelo MaxPlanck

As meacutedias de tempos de processamento foram calculadas da mesma

forma que o primeiro teste com o modelo Igea acima apresentado Os

resultados satildeo mostrados na Tabela 4 Podemos observar que este teste

Resultados 68

apresenta tempos um pouco menores que o teste com o modelo Igea Isto se

deve ao fato de que o modelo MaxPlanck ser significativamente menor que o

modelo Igea MaxPlanck possui 52809 surfels e Igea conteacutem 134345 surfels

Operaccedilatildeo Criaccedilatildeo das

Octrees (seg)

Classificaccedilatildeo

(seg)

Criaccedilatildeo do

resultado (seg)

Total

(seg)

Uniatildeo 3012 1254 102 5285

Interseccedilatildeo 2985 0901 0861 4747

Diferenccedila 2965 0911 0791 4667

Tabela 4-Tempo de processamento das operaccedilotildees com os modelos MaxPlanck e Male

Operaccedilatildeo Nuacutemero de surfels do resultado

Uniatildeo 126532

Interseccedilatildeo 88414

Diferenccedila 77635

Tabela 5-Nuacutemero de surfels dos modelos resultados das operaccedilotildees com os modelos MaxPlanck e Male

Em seguida apresentaremos uma comparaccedilatildeo entre o nosso plugin e o

plugin de Pauly[3] e tambeacutem uma comparaccedilatildeo entre o meacutetodo de Adams e Dutreacute

[2] e o meacutetodo de Pauly [3]

62 Comparaccedilatildeo entre os dois meacutetodos que realizam operaccedilotildees booleanas

A comparaccedilatildeo entre os meacutetodos de Pauly[3] e de Adams e Dutreacute foi feita

em termos de tempo de processamento e em termos conceituais Em termos de

tempo de processamento comparamos o plugin de Pauly[3] com o nosso plugin

Em termos de tempo de processamento verifica-se empiricamente que os

dois meacutetodos apresentam tempos bastante similares Entretanto o tempo de

processamento do algoritmo aqui implementado ainda pode ser melhorado com

Resultados 69

o uso do meacutetodo TINN [19] que foi proposto em Adams[2] - para otimizar a

pesquisa do surfel mais proacuteximo a um ponto que estaacute localizado na regiatildeo de um

noacute que conteacutem surfels - veja seccedilatildeo 42 O uso deste meacutetodo natildeo foi

implementado para este trabalho e a sua implementaccedilatildeo melhoraria o tempo de

resposta do algoritmo Aleacutem disso o trabalho de Sara F Frisken [12] citado no

capiacutetulo 2 apresenta uma otimizaccedilatildeo no uso de octrees que pode ser

incorporada no algoritmo implementado neste trabalho

Em termos conceituais vamos fazer a comparaccedilatildeo do uso do que

chamamos aqui de Regra 2 do tratamento de interseccedilatildeo e do tratamento de

ldquoarestas vivasrdquo

Como vimos na seccedilatildeo 41 tanto o algoritmo implementado nesta

dissertaccedilatildeo baseado no trabalho de Adams e Dutreacute como o meacutetodo de Pauly

[3] parte do que chamamos aqui de Regra 2 para realizar operaccedilotildees booleanas

com pontos Mas cada um destes meacutetodos daacute um tratamento diferente para o

uso desta regra

O meacutetodo de Pauly usa a Regra 2 para classificaccedilatildeo de cada ponto ou de

cada surfel Para classificar um surfel de B sb como dentro ou fora de A eacute

encontrado o surfel de A sa mais proacuteximo a sb e sb eacute classificado a partir de sa

Para encontrar sa Pauly utiliza uma kd-tree Como esta pesquisa para encontrar

sa eacute cara (mesmo usando uma kd-tree) Pauly utiliza uma esfera que conteacutem

pontos com a mesma classificaccedilatildeo (seccedilatildeo 432) e diminui em 90 este nuacutemero

de pesquisas Pauly utiliza tambeacutem a representaccedilatildeo impliacutecita MLS (Moving Least

Squares) para casos em que a Regra 2 poderia falhar e para tratamento de

interseccedilotildees Entretanto o nuacutemero destes casos em que a Regra 2 poderia falhar

eacute muito pequeno E a representaccedilatildeo MLS natildeo eacute uma estrutura simples de ser

implementada Portanto natildeo encontramos vantagens em usar MLS para estes

casos O meacutetodo de Adams e Dutreacute natildeo trata estes casos e na praacutetica

apresenta resultados bastante satisfatoacuterios como foi mostrado Portanto

consideramos que valeria a pena fazer algum tratamento especial para estes

casos se fosse um procedimento simples Para a execuccedilatildeo do algoritmo de

Pauly o uso de MLS natildeo interfere significativamente porque a construccedilatildeo desta

representaccedilatildeo natildeo eacute feita somente para realizar operaccedilotildees booleanas Os testes

empiacutericos que fizemos com o algoritmo de Pauly natildeo incluem a construccedilatildeo desta

representaccedilatildeo

Aparentemente os dois algoritmos satildeo bastante parecidos um usa octrees

e o outro usa kd-tree As duas estruturas de dados satildeo simples e otimizam a

classificaccedilatildeo dos surfels de um modelo como dentro ou fora do outro modelo

Resultados 70

Mas existe uma diferenccedila conceitual entre dois que merece ser destacada O

algoritmo aqui implementado usa a Regra 2 para classificaccedilatildeo dos noacutes de uma

octree e armazena esta octree classificada (ver capiacutetulo 5) Assim na maioria dos

casos natildeo seraacute necessaacuterio encontrar o surfel mais proacuteximo para classificar um

ponto (ou um surfel) como fora ou dentro de um modelo Caso o ponto esteja em

uma aacuterea da octree classificada ele teraacute a classificaccedilatildeo dada agravequela aacuterea A

pesquisa ao surfel mais proacuteximo seraacute feita apenas nos casos em que o ponto a

ser classificado estaacute localizado entre os planos que subdividem um noacute cheio

O uso desta octree classificada levanta uma questatildeo que natildeo foi citada no

trabalho de Adams e Dutreacute que eacute a proximidade desta estrutura (armazenada)

de octree classificada com uma representaccedilatildeo volumeacutetrica do objeto Sendo

assim esta estrutura pode ser aproveitada para outras funccedilotildees aleacutem da

classificaccedilatildeo dos surfels Por exemplo podemos ter uma aproximaccedilatildeo do

volume de uma cena somando os volumes aproximados dos modelos que a

compotildeem Como o enfoque deste trabalho eacute operaccedilatildeo booleana natildeo vamos nos

aprofundar nesta questatildeo

Outra importante diferenccedila entre os dois trabalhos que jaacute foi explicada na

seccedilatildeo 432 eacute que o meacutetodo de Pauly aplica-se a modelos soacutelidos ou natildeo

soacutelidos enquanto que o meacutetodo de Adams e Dutreacute aplica-se somente a modelos

soacutelidos

Quanto ao tratamento de interseccedilatildeo em termos de visualizaccedilatildeo todos os

dois resolvem bem o problema O tratamento de interseccedilatildeo nos dois trabalhos

tambeacutem resolve o problema da validade da Regra 2 (ver seccedilatildeo 44) Entretanto

o tratamento de Adams e Dutreacute natildeo depende da renderizaccedilatildeo sendo portanto

mais portaacutevel Aleacutem disso uma desvantagem do meacutetodo de Pauly eacute o uso da

representaccedilatildeo impliacutecita MLS (ldquoMoving Least Squaresrdquo) do objeto para obter os

pontos exatamente na curva de interseccedilatildeo Esta representaccedilatildeo torna o

tratamento de interseccedilatildeo mais complexo e a vantagem apresentada natildeo eacute tatildeo

significativa para este tratamento de interseccedilatildeo

Conclusatildeo 71

7 Conclusatildeo

Concluiacutemos entatildeo que as escolhas de Adams e Dutreacute por usar uma

octree classificada e pelo tratamento dado agrave interseccedilatildeo satildeo mais abrangentes

que a escolha de Pauly E consideramos que quanto mais abrangente for uma

escolha conceitual mais resultados poderemos tirar dela No caso de Adams e

Dutreacute eles estendem o problema de classificar um ponto para classificar todo o

modelo Como foi citado ele quase fornece uma representaccedilatildeo volumeacutetrica do

modelo Esta aproximada representaccedilatildeo volumeacutetrica pode nos fornecer outras

informaccedilotildees como por exemplo o volume aproximado do modelo

Aleacutem disso o uso da representaccedilatildeo impliacutecita MLS no meacutetodo de Pauly cria

uma complexidade a mais para o meacutetodo sem apresentar vantagens para a

realizaccedilatildeo de operaccedilotildees booleanas que eacute o nosso enfoque

Logo podemos dizer que o meacutetodo de Adams e Dutreacute apresenta as

seguintes vantagens em relaccedilatildeo ao de Pauly

- a estrutura de octree classificada aleacutem de ser usada para classificaccedilatildeo

fornece informaccedilotildees adicionais como volume aproximado do objeto

- o tempo de processamento no meacutetodo de Adams e Dutreacute tende a ser

melhor que no meacutetodo de Pauly se implementadas as melhorias acima citadas e

se colocaacutessemos em consideraccedilatildeo o uso da representaccedilatildeo impliacutecita MLS

(Moving Least Squares)

- o tratamento de interseccedilatildeo de Adams e Dutreacute apresenta a vantagem da

portabilidade ou seja iraacute funcionar independente do algoritmo de renderizaccedilatildeo

utilizado

E as vantagens do meacutetodo de Pauly em relaccedilatildeo ao de Adams e Dutreacute

- a colocaccedilatildeo de surfels exatamente na curva de interseccedilatildeo

- a possibilidade de trabalhar com modelos soacutelidos ou natildeo soacutelidos

E finalizando concluiacutemos que o estudo relatado nesta dissertaccedilatildeo foi

importante por

- fornecer um breve estudo sobre modelagem por pontos uma nova e

promissora aacuterea dentro da computaccedilatildeo graacutefica

Conclusatildeo 72

- por apresentar uma avaliaccedilatildeo dos dois trabalhos existentes sobre

operaccedilotildees booleanas com pontos encontrando as vantagens de cada um

e levantando questotildees que natildeo tinham sido citadas nos trabalhos originais

- por propor e implementar melhorias ao trabalho de Adams e Dutreacute

71 Trabalhos Futuros

Nossa implementaccedilatildeo pode ser ainda evoluiacuteda com as propostas

apresentadas na seccedilatildeo 62 Como observamos o tempo de processamento do

algoritmo aqui implementado ainda pode ser melhorado com o uso do meacutetodo

TINN [19] - que foi proposto em Adams[2] - para otimizar a pesquisa do surfel

mais proacuteximo a um ponto que estaacute localizado na regiatildeo de um noacute que conteacutem

surfels Aleacutem disso o trabalho Simple and Efficient Trasversal Methods for

Quadtrees and Octrees de Sara F Frisken [12] citado no capiacutetulo 2 apresenta

uma otimizaccedilatildeo no uso de octrees Outra proposta para melhorar o tempo de

processamento do algoritmo aqui implementado eacute usar a forma de trabalhar com

octrees apresentada neste trabalho

O trabalho de Adams e Dutreacute [2] eacute aplicado apenas a objetos soacutelidos O

nosso plugin portanto aplica-se somente a este tipo de objeto Jaacute o trabalho de

Pauly[3] eacute aplicado tambeacutem a modelos natildeo soacutelidos Apresentamos como

proposta a um trabalho futuro a extensatildeo do algoritmo aqui implementado para

modelos natildeo soacutelidos O surfel pode conter uma informaccedilatildeo adicional que indica

se ele estaacute delimitando um volume ou natildeo Assim pode-se ter um modelo com

ldquopartes soacutelidasrdquo e ldquopartes natildeo soacutelidasrdquo Por exemplo a uniatildeo de um plano com

uma esfera poderia resultar numa esfera com ldquoabasrdquo (seriam as partes do plano

que estariam fora da esfera) O modelo resultado teria uma parte correspondente

a um espaccedilo 3D (esfera) e outra parte que seria uma superfiacutecie 2D posicionada

no espaccedilo 3D sem delimitar algum volume (abas)

Muitos trabalhos podem ser desenvolvidos aplicando-se o modelo por

pontos em animaccedilatildeo jogos visualizaccedilatildeo de terrenos criaccedilatildeo de protoacutetipos etc

considerando-se a eficiecircncia e simplicidade do modelo E mais especificamente

as operaccedilotildees booleanas com pontos podem ser aplicadas para criaccedilatildeo de

cenaacuterios testes de colisotildees e nestes casos a representaccedilatildeo usando octrees

pode ser mais explorada considerando-se o seu potencial de representaccedilatildeo

volumeacutetrica de um objeto

Referecircncias Bibliograacuteficas 73

8 Referecircncias Bibliograacuteficas

[1] MAumlNTYLAuml M An Introduction to Solid Modeling Computer Science Press 1988

[2] ADAMS B DUTREacute P Interactive Boolean Operations on Surfel-

Bounded Solids Proceedings of SIGGRAPH 2003 San Diego USA 2003

[3] PAULY M KEISER R KOBBELT L GROSS M Shape Modeling

with Point-Sampled Geometry SIGGRAPH 2003 Computer Graphics

Proceedings Annual Conference Series ACM Press ACM SIGGRAPH 2003

[4] LEVOY M WHITTED T The Use of Points as Display Primitives

Technical Report TR 85-022 The University of North Carolina at Chapel Hill

Department of Computer Science 1985

[5] PFISTER H ZWICKER M VAN BAAR J GROSS M 2000 Surfels

Surface Elements as Rendering Primitives SIGGRAPH 2000 pp 335ndash342 New

Orleans LA July 23-28 2000

[6] ZWICKER M PFISTER H VAN BAAR J GROSS M Surface

Splatting SIGGRAPH 2001

[7] PAULY M KOBBELT L GROSS M Multiresolution Modeling of

Point-Sampled Geometry CS Techinical Report 378 September 16 2002

[8] CURLESS B New Methods for Surface Reconstruction from Range Images PhD thesis Stanford University 1997

[9] RUSINKIEWICZ S Real-time Acquisition and Rendering of Large 3D Models PhD thesis Stanford University 2001

Referecircncias Bibliograacuteficas 74

[10] AMENTA N BERN M KAMVYSSELIS M A new Voronoi-Based

Surface Reconstruction Algorithm SIGGRAPH 98 Conference proceedings pp

415-421 New York 1998

[11] ZWICKER M PAULY M KNOLL O GROSS M Pointshop 3D an

Interactive System for Point-Based Surface Editing Proceedings of SIGGRAPH 2002 San Antonio TX July 2002

[12] FRISKEN S PERRY R Simple and Efficient Traversal Methods for

Quadtrees and Octrees Journal of Graphics Tools Vol 7 Issue 3 May 2003

[13] CORREcircA W T OLIVEIRA M M Silva C T Wang J

Modeling and Rendering of Real Environments

Revista de Informaacutetica Teoacuterica e Aplicada (Brazilian Journal of Theoretic and Applied Computing) 9(2)127-156 2002

[14] DAVIS J MARSCHNER S GARR M LEVOY M Filling Holes in

Complex Surfaces Using Volumetric Diffusion First International Symposium on 3D Data Processing Visualization Transmission June 2002

[15] RAumlSAumlNEN J Surface Splatting Theory Extensions and Implementation Masterrsquos Thesis Dept of Computer Science Helsinki

University of Technology May 28 2002

[16] PAULY M Point Primitives for Interactive Modeling and Processing of 3D Geometry PhD thesis Federal Institute of Technology (ETH)

of Zurich 2003

[17] HOPPE H DEROSE T DUCHAMP T MCDONALD J

STUELZLE W Surface Reconstruction from Unorganized Points Computer Graphics 26(2)71ndash78 July 1992

[18] ALEXA M BEHR J COHEN-OR D FLEISHMAN S LEVIN D

SILVA C T Point Set Surfaces IEEE Visualization 2001 pp 21ndash28 October

2001

Referecircncias Bibliograacuteficas 75

[19] GREENSPAN M GODIN G TALBOT J Acceleration of Binning

Nearest Neighbor Methods Proceedings of Vision Interface 2000 pp 337-

344

[20] MENCL R Reconstruction of Surfaces from Unorganized Three-Dimensional Point Clouds Dissertation Dortmund Univ 2001

[21] KRIVANEK J Representing and Rendering Surfaces With Points

httpciteseernjneccomkrivanek03representinghtml Acesso em 30 jul

2003

[22] KRISTJANSSON ET AL Approximate Boolean Operations on Free-

form Solids Proceedings of SIGGRAPH 01 2001

Modelagem por Pontos 27

O objetivo da renderizaccedilatildeo a partir dos surfels eacute projetaacute-los na tela e

reconstruir as superfiacutecies de forma contiacutenua sem buracos Para que esta

renderizaccedilatildeo seja amplamente utilizada deve-se ter cuidado com o uso de

memoacuteria e com a qualidade da imagem gerada Teacutecnicas recentes como Surface

Splatting [6] faz a renderizaccedilatildeo interativamente com qualidade (Figura 3)

comparada a outros meacutetodos de renderizaccedilatildeo como Image Based Rendering

Em geral a visualizaccedilatildeo do modelo por pontos pode ser dividida nas seguintes

etapas

- warping - projeccedilatildeo em perspectiva de cada ponto do modelo na tela

processo anaacutelogo agrave projeccedilatildeo de veacutertices dos triacircngulos na malha triangular Se

um pixel da tela estiver contido em mais de uma projeccedilatildeo de surfels (vizinhos)

ou seja mais de um ponto cobre este pixel os atributos destes pontos seratildeo

combinados

- shading por ponto - o processo de shading eacute realizado para cada ponto

visiacutevel (os pontos que natildeo satildeo vistos do ponto de vista em questatildeo devem ser

retirados) Qualquer modelo local de shading pode ser aplicado Uma nova

teacutecnica foi proposta em Surface Splatting [6]

- reconstruccedilatildeo da imagem ndash pixels que natildeo ldquoreceberamrdquo projeccedilatildeo de

nenhum ponto formam buracos na imagem Esta imagem deve ser reconstruiacuteda

sem buracos sem aliasing e as superfiacutecies devem ser reconstruiacutedas de forma

contiacutenua e devem ser ldquosuavizadasrdquo (smooth surface)

Os algoritmos de renderizaccedilatildeo por pontos podem tratar a questatildeo de

buracos na visualizaccedilatildeo de trecircs formas [17]

Detecccedilatildeo e preenchimento de buracos no espaccedilo da tela pontos satildeo

projetados na tela e pixels que natildeo receberam pontos satildeo detectados (buracos)

Para preencher estes buracos que natildeo receberam pontos eacute feita uma

interpolaccedilatildeo entre os vizinhos

Geraccedilatildeo de mais pontos a superfiacutecie eacute interpolada no espaccedilo do modelo

para garantir que todos os pixels recebam pelo menos a projeccedilatildeo de um ponto

Splatting um surfel eacute projetado na tela e sua contribuiccedilatildeo eacute espalhada de

forma diferenciada para os pixels vizinhos Agrave medida em que o vizinho se torna

mais distante a contribuiccedilatildeo do surfel diminui

Raumlsaumlnen faz uma analogia do processo de renderizaccedilatildeo proposto em [6]

com o mapeamento de textura [15] No mapeamento de textura para um

determinado pixel da tela satildeo encontrados os pontos da textura que afetam este

Modelagem por Pontos 28

pixel Num sentido inverso em splatting para um determinado surfel (que

representa a textura) satildeo encontrados os pixels da tela que este surfel afeta

38 Ediccedilatildeo do modelo

Ediccedilatildeo de um modelo 3D consiste em operaccedilotildees que modificam

caracteriacutesticas deste modelo como cor textura forma ou criam novos modelos

O software PointShop 3D [11] software de ediccedilatildeo de modelos por pontos 3D

implementa vaacuterias destas operaccedilotildees (ver seccedilatildeo 52)

Para modificar a forma de um modelo ou criar um novo satildeo muito usadas

as operaccedilotildees booleanas que eacute o nosso enfoque nesta dissertaccedilatildeo Na

modelagem CSG (Constructive Solid Geometry) as operaccedilotildees booleanas satildeo

usadas juntamente com primitivas soacutelidas para definir um modelo No entanto

em alguns tipos de modelos estas operaccedilotildees satildeo difiacuteceis como por exemplo

em malhas poligonais Com pontos elas podem ser feitas interativamente [32]

Operaccedilotildees Booleanas com Pontos 29

4 Operaccedilotildees Booleanas com Pontos

Operaccedilotildees booleanas satildeo as operaccedilotildees de uniatildeo interseccedilatildeo e diferenccedila

definidas na teoria matemaacutetica de conjuntos Estas operaccedilotildees satildeo aplicadas em

modelos soacutelidos para alteraacute-los ou para criar novos modelos A Figura 4 abaixo

mostra a criaccedilatildeo de trecircs novos modelos a partir de quatro modelos iniciais

Figura 4 [22] Trecircs modelos novos foram criados a partir dos quatro iniciais (esfera

cilindro dois cubos) O primeiro eacute a esfera menos um cubo em seguida retirou-se outro

cubo e por uacuteltimo retirou-se o cilindro

Estas operaccedilotildees satildeo aplicadas em objetos modelados por pontos em dois

trabalhos no trabalho de Bart Adams e Philip Dutreacute [2] e no trabalho de Pauly

et Al [3] Neste capiacutetulo a seccedilatildeo 41 apresenta a parte comum aos dois

trabalhos e as seccedilotildees 42 e 43 apresentam as particularidades de cada um A

seccedilatildeo 44 discute uma questatildeo natildeo explicitada em nenhum dos dois trabalhos

41 Meacutetodos para realizar operaccedilotildees booleanas em objetos modelados por pontos

A Figura 5 mostra o resultado do meacutetodo de Adams[2] operaccedilotildees de

uniatildeo diferenccedila e interseccedilatildeo de objetos soacutelidos 3D modelados por pontos

Operaccedilotildees Booleanas com Pontos 30

Figura 5 [2]-A partir de dois modelos por pontos uma heacutelice e uma cabeccedila as trecircs operaccedilotildees booleanas satildeo mostradas da esquerda para a direita uniatildeo diferenccedila e interseccedilatildeo

Sejam A e B objetos 3D soacutelidos modelados por pontos Definem-se os

seguintes elementos

Af ndash superfiacutecie (contorno) de A que estaacute fora de B

Ad ndash superfiacutecie (contorno) de A que estaacute dentro de B

Bf ndash superfiacutecie (contorno) de B que estaacute fora de A

Bd ndash superfiacutecie (contorno) de B que estaacute dentro de A

O resultado da operaccedilatildeo booleana entre A e B seraacute um modelo C cuja

superfiacutecie de contorno pode ser determinada pela seguinte regra [2] que aqui

chamamos de Regra 1

Regra 1 A U B Af + Bf

A cap B Ad + Bd

A ndash B Af + Bd (com a orientaccedilatildeo invertida)

B ndash A Ad (com a orientaccedilatildeo invertida) + Bf

A Figura 6 mostra as operaccedilotildees com dois modelos A e B

(a) (b)

Operaccedilotildees Booleanas com Pontos 31

(c) (d)

Figura 6 [22] (a) Dois modelos A e B (b) Posicionados de forma que A tem

uma parte dentro de B eacute mostrado o resultado A U B Af + Bf (c) Resultado de A ndash B Af

+ Bd (d) Resultado de A cap B Ad + Bd

Bart [2] e Pauly [3] apresentam dois meacutetodos para determinar os

elementos acima Estes dois meacutetodos satildeo construiacutedos a partir dos seguintes

conceitos os elementos Af Ad Bf Bd satildeo uma parte da superfiacutecie modelada por

pontos e portanto satildeo conjuntos de surfels Para determinaacute-los eacute necessaacuteria

entatildeo a classificaccedilatildeo de um surfel (que pode se resumir agrave classificaccedilatildeo de um

ponto que eacute o seu centro) de uma superfiacutecie como dentro ou fora de um outro

modelo Os dois meacutetodos utilizam a seguinte regra para esta classificaccedilatildeo aqui

denominada Regra 2

Regra 2 Dado um ponto x qualquer um volume V determinado por uma superfiacutecie

de contorno S uma amostragem P da superfiacutecie S um ponto p є P que eacute a

amostra mais proacutexima a x um vetor np normal agrave S em p e orientado para fora de

S temos que

(x ndash p) np gt 0 x notinV

Ou seja para classificar um ponto em relaccedilatildeo a um modelo verificamos o

produto interno entre a normal em p (surfel mais proacuteximo a x) e o vetor (x - p)

se este produto interno for maior que zero x natildeo pertence ao volume V e seraacute

classificado como fora senatildeo seraacute classificado como dentro De maneira

ainda mais informal se a normal em p apontar para a direccedilatildeo oposta a x x seraacute

classificado como dentro se apontar para x x seraacute classificado como fora

A Figura 7 mostra a Regra 2

Operaccedilotildees Booleanas com Pontos 32

Figura 7 Para classificar o ponto x encontra-se o surfel p (com normal np) mais proacuteximo

a x Se o produto interno entre np e (x ndash p) for maior que zero entatildeo x eacute classificado como

fora senatildeo seraacute classificado como dentro

A validade da Regra 2 eacute discutida na Seccedilatildeo 44 Uma das restriccedilotildees

teoacutericas para garantir-lhe a validade eacute que a superfiacutecie seja suave

Cada um dos dois meacutetodos daacute um tratamento diferente para o uso desta

regra Pauly usa a regra diretamente encontrando o surfel mais proacuteximo a um

ponto e classificando este ponto a partir deste surfel Ele utiliza tambeacutem a

representaccedilatildeo impliacutecita MLS (Moving Least Squares [18]) para casos em que a

Regra 2 poderia falhar e para tratamento de interseccedilotildees [3] Seu meacutetodo vale

para modelos soacutelidos ou natildeo soacutelidos O meacutetodo de Adams e Dutreacute [2] utiliza

octrees [1] criando uma classificaccedilatildeo dos noacutes da octree a partir desta Regra 2

Os pontos satildeo entatildeo classificados de acordo com o noacute da octree que o conteacutem

Este segundo meacutetodo aplica-se somente a modelos soacutelidos Os dois meacutetodos

seratildeo descritos em detalhes nas seccedilotildees abaixo

Como um surfel eacute considerado um disco podemos dizer que surfels de

dois modelos diferentes podem se intersectar A interseccedilatildeo destes dois surfels

corresponde agrave interseccedilatildeo destes dois discos Estes surfels geram problemas

para visualizaccedilatildeo se forem acrescentados ao resultado sem um tratamento

especiacutefico apresentaratildeo artefatos natildeo desejaacuteveis na renderizaccedilatildeo do modelo

resultado (Figura 8) se natildeo forem acrescentados ao resultado deixaratildeo buracos

no modelo

Operaccedilotildees Booleanas com Pontos 33

Figura 8 [2] -Interseccedilatildeo de duas esferas agrave esquerda sem nenhum tratamento de interseccedilatildeo agrave direita apoacutes o tratamento de interseccedilatildeo

Aleacutem disso nem sempre esta interseccedilatildeo forma uma superfiacutecie suave

Esta interseccedilatildeo pode formar uma aresta viva (seccedilatildeo 4223) gerando

problemas tambeacutem para o uso da Regra 2 que eacute vaacutelida apenas para superfiacutecies

suaves Eacute necessaacuterio entatildeo fazer um tratamento desta superfiacutecie de interseccedilatildeo

(formada por surfels originados de diferentes modelos) O tratamento de cada

um dos meacutetodos para este caso seraacute tambeacutem abaixo apresentado

42 Meacutetodo de Adams e Dutreacute

O meacutetodo aplica-se somente a modelos soacutelidos Para determinaccedilatildeo dos

elementos da aqui chamada Regra 1 (seccedilatildeo 41) este meacutetodo utiliza uma octree

[1] que subdivide o espaccedilo do modelo em trecircs fora dentro ou no contorno do

modelo Estes espaccedilos satildeo determinados pela classificaccedilatildeo dos noacutes da octree a

partir da Regra 2 Tambeacutem eacute usado o meacutetodo TINN - Triangle Inequality Nearest

Neighbour [19] - para otimizar a pesquisa dentro do noacute A seguir descrevemos o

modelo usado neste meacutetodo apresentando os dados associados aos pontos o

tipo de distribuiccedilatildeo e o algoritmo que realiza as operaccedilotildees

421 Modelo por Pontos em Adams e Dutreacute

Os surfels neste meacutetodo contecircm as seguintes informaccedilotildees posiccedilatildeo do

surfel xs orientaccedilatildeo do surfel ns e raio de alcance do surfel rs O surfel pode ser

pensado como um disco ortogonal a ns com centro xs e raio rs O raio eacute

escolhido de tal forma que a projeccedilatildeo dos discos no plano da imagem se

sobreponham

Operaccedilotildees Booleanas com Pontos 34

Os objetos representados satildeo soacutelidos A distribuiccedilatildeo dos surfels eacute

uniforme embora o algoritmo natildeo exija esta condiccedilatildeo Para cada soacutelido eacute

definido um rmax = Max rs o raio de alcance do maior surfel pertencente agrave

superfiacutecie do soacutelido Como o raio eacute escolhido de tal forma que a projeccedilatildeo dos

discos no plano da imagem se sobreponham o controle da amostragem eacute

entatildeo ligado agrave renderizaccedilatildeo

422 Algoritmo de Operaccedilotildees Booleanas

Utilizando objetos modelados da forma descrita acima o meacutetodo realiza

operaccedilotildees de uniatildeo interseccedilatildeo e diferenccedila com modelos soacutelidos Supondo dois

modelos soacutelidos S1 e S2 O algoritmo pode ser dividido nas seguintes etapas

Criaccedilatildeo de uma octree para cada modelo Teste Dentro-Fora Tratamento da

interseccedilatildeo Estas etapas satildeo apresentadas nas proacuteximas seccedilotildees

4221 Criaccedilatildeo de uma octree para cada modelo

Eacute criada uma octree [1] para cada modelo A criaccedilatildeo de uma octree eacute feita

da seguinte forma

Gera-se a ldquoCaixa envolventerdquo caixa alinhada com os eixos que conteacutem

todo o modelo A ldquoCaixa envolventerdquo corresponde ao noacute raiz da octree Este noacute

conteacutem inicialmente todos os surfels do modelo Em seguida o noacute raiz eacute

dividido em oito noacutes filhos Os surfels satildeo distribuiacutedos entre estes oito noacutes Cada

um deles caso contenha surfels eacute dividido novamente em 8 filhos e seus surfels

satildeo redistribuiacutedos entre eles Este processo eacute repetido recursivamente enquanto

o nuacutemero de surfels do noacute for maior que zero ou ateacute uma profundidade maacutexima

preacute-definida da octree ser alcanccedilada

Cada noacute da octree deve ser classificado O objetivo desta classificaccedilatildeo eacute

determinar que parte da octree estaacute dentro do modelo e que parte estaacute fora Os

noacutes da octree satildeo entatildeo classificados como ldquodentrordquo ldquoforardquo e ldquocontornordquo

Podemos ilustrar esta classificaccedilatildeo em 2D a Figura 9 mostra uma quadtree

classificada

Operaccedilotildees Booleanas com Pontos 35

Figura 9-Um objeto representado por pontos com suas normais e sua quadtree correspondente classificada os noacutes cinza claro estatildeo dentro do modelo noacutes cinza mais escuro estatildeo fora do modelo e noacutes com cinza intermediaacuterio satildeo noacutes cheios noacutes que conteacutem pontos

O noacutes que conteacutem surfels satildeo classificados como ldquocontornordquo Para

classificar um noacute vazio existem trecircs casos

o noacute vazio tem apenas um vizinho-irmatildeo natildeo vazio

o noacute vazio tem mais de um vizinho-irmatildeo natildeo vazio

o noacute vazio natildeo tem vizinhos-irmatildeos natildeo vazios

No primeiro caso o noacute vazio eacute classificado pelo seu vizinho natildeo vazio No

segundo caso considera-se qualquer um dos vizinhos natildeo vazios No terceiro

caso classifica-se primeiro os noacutes vizinhos e eacute dada a mesma classificaccedilatildeo para

o noacute vazio Como cada noacute natildeo folha de uma octree tem pelo menos um noacute filho

natildeo vazio sempre pode ser feita a classificaccedilatildeo dos noacutes vazios A classificaccedilatildeo

eacute feita da seguinte forma dentre os surfels do vizinho-irmatildeo escolhido encontra-

se o surfel mais proacuteximo ao noacute a ser classificado Se a normal deste surfel

aponta para o noacute vazio a ser classificado entatildeo ele eacute classificado como ldquoforardquo

Se a normal aponta no sentido contraacuterio entatildeo ele eacute classificado como ldquodentrordquo

De maneira mais formal sejam cv e cc coordenadas dos centros do noacute vazio e

do noacute contorno respectivamente Seja s o surfel mais proacuteximo ao noacute vazio e ns

a normal em s Se ( cv - cc )٠ ns gt 0 ( produto interno entre a normal em s e o

vetor cv - cc for maior que zero ) o noacute vazio seraacute classificado como ldquoforardquo

Senatildeo seraacute classificado como ldquodentrordquo

Em geral os noacutes ldquocontornordquo satildeo subdivididos em trecircs partes uma que estaacute

fora do modelo uma que estaacute dentro do modelo e uma terceira que conteacutem os

surfels Esta subdivisatildeo eacute feita por meio da criaccedilatildeo de dois planos paralelos que

Operaccedilotildees Booleanas com Pontos 36

dividem o noacute Para determinar estes planos calcula-se o vetor nm igual agrave

meacutedia das normais dos surfels do noacute nm = sum ns sum ns onde ns eacute a normal de

cada surfel do noacute

Em seguida encontra-se o surfel com maior produto interno entre a sua

normal e a normal meacutedia d1=Max(nm ٠ ns) Este surfel juntamente com a normal

meacutedia define um dos planos Encontra-se tambeacutem o surfel com menor produto

interno entre a sua normal e a normal meacutedia d2=Min(nm ٠ ns) Este surfel

juntamente com a normal meacutedia define o outro plano A Figura 10 mostra a

divisatildeo de um noacute de uma quadtree nas trecircs partes dentro do modelo fora do

modelo e no ldquocontornordquo

Esta subdivisatildeo aplica-se apenas a noacutes que conteacutem surfels cujas direccedilotildees

natildeo variem em mais de 90 graus Caso isso ocorra ele natildeo seraacute subdividido Ou

seja se um noacute possuir dois vetores normais (de dois surfels diferentes) que

formem um acircngulo maior que 90 graus ele natildeo seraacute subdividido

Figura 10 [2] -Divisatildeo de noacute de contorno a parte agrave esquerda estaacute fora do modelo a parte agrave direita estaacute dentro do modelo e a faixa intermediaacuteria conteacutem os surfels

4222 Teste Dentro-Fora

O Teste Dentro-Fora faz a classificaccedilatildeo dos surfels de um modelo como

ldquodentrordquo ou ldquoforardquo de outro modelo Portanto aplicaremos este mesmo teste duas

vezes uma para o modelo S1 em relaccedilatildeo ao modelo S2 e outra para S2 em

relaccedilatildeo a S1 Vamos mostrar o teste Dentro-Fora para o caso da classificaccedilatildeo

dos surfels do modelo S1 em relaccedilatildeo a S2

Operaccedilotildees Booleanas com Pontos 37

No item anterior foram criadas duas octrees uma para o modelo S1 e

outra para o modelo S2 Chamemos de A e B as octrees de S1 e S2

respectivamente Para classificar S1 em relaccedilatildeo a S2 inicialmente eacute feita uma

avaliaccedilatildeo da posiccedilatildeo de A em relaccedilatildeo a B A e B podem estar nas seguintes

situaccedilotildees

- A natildeo intersecta B

- A intersecta apenas noacutes ldquoforardquo de B

- A intersecta apenas noacutes ldquodentrordquo de B

- A intersecta noacutes ldquoforardquo e noacutes ldquodentrordquo de B

Para testar estas situaccedilotildees os noacutes satildeo aumentados de rmax o raio do

maior surfel do modelo soacutelido Isto eacute feito para compensar o fato de que o surfel

natildeo eacute apenas um ponto mas sim considerado como um disco

No primeiro e no segundo caso todos os surfels de A satildeo classificados

como ldquoforardquo No terceiro caso todos os surfels de A satildeo classificados como

ldquodentrordquo

No quarto caso temos que percorrer a octree A Comeccedilando pelo noacute raiz

percorre-se os filhos deste noacute Para cada filho os quatro testes acima satildeo feitos

Se o noacute filho encontra-se em um dos trecircs primeiros casos a classificaccedilatildeo eacute dada

como foi citada acima Se um filho estaacute no quarto caso e natildeo eacute um noacute folha

repete-se recursivamente o mesmo procedimento para seus filhos ateacute encontrar-

se um noacute folha Para um noacute que estaacute no quarto caso e eacute folha percorre-se a lista

de surfels que este noacute conteacutem classificando cada um destes surfels Seja sa um

surfel desta lista Para este caso percorre-se a octree B para classificar sa

Primeiramente encontramos o noacute de B que conteacutem sa Se este noacute de B foi

dividido testa-se de acordo com esta divisatildeo do noacute se o surfel sa estaacute na parte

do noacute que estaacute dentro do modelo ele eacute classificado como ldquodentrordquo se sa estaacute na

parte que estaacute fora do modelo ele eacute classificado como ldquoforardquo se sa estaacute na parte

intermediaacuteria ou se o noacute de B natildeo foi subdividido em planos encontra-se sb que

eacute o surfel pertencente a este noacute de B que estaacute mais proacuteximo de sa sa seraacute

entatildeo classificado de acordo com sb Se ( sa - sb )٠ nb gt 0 sa eacute classificado

como ldquoforardquo senatildeo eacute classificado como ldquodentrordquo Se os discos de sb e sa se

intersectam sa eacute marcado como interseccedilatildeo Para encontrar sb o algoritmo

implementa o meacutetodo TINN ndash Triangle Inequality Nearest Neighbour [19]

Operaccedilotildees Booleanas com Pontos 38

4223 Tratamento da interseccedilatildeo

Os surfels de A que intersectam surfels de B satildeo classificados como

ldquointerseccedilatildeordquo Se eles natildeo forem incluiacutedos no modelo resultado o soacutelido resultado

teraacute buracos Se eles forem incluiacutedos sem algum tratamento eles natildeo

representaratildeo adequadamente a regiatildeo Em geral o surfel sa (um surfel

ldquointerseccedilatildeordquo de A) eacute dividido em dois pelo plano que conteacutem o surfel sb (surfel de

B que sa intersecta) uma parte que estaacute fora de B e outra que estaacute dentro de B

Dependendo da operaccedilatildeo que estaacute sendo realizada vamos querer manter uma

destas partes do surfel sa no modelo resultado Seja xa a posiccedilatildeo do surfel sa e o

surfel sa uma circunferecircncia de centro xa e raio ra igual ao raio de alcance de sa

O plano que conteacutem o surfel sb define uma corda desta circunferecircncia como

mostra a Figura 11 O surfel sa seraacute substituiacutedo por um surfel menor que

ultrapassa esta corda de uma distacircncia e definida pelo usuaacuterio Para cobrir

completamente a interseccedilatildeo seratildeo adicionados surfels menores que cruzam a

corda de interseccedilatildeo

Figura 11 -Interseccedilatildeo do surfel s e do plano que passa pelo surfel t o surfel mais proacuteximo a s O surfel s eacute substituiacutedo por trecircs surfels menores

Operaccedilotildees Booleanas com Pontos 39

O tratamento de interseccedilatildeo proposto por Adams e Dutreacute [2] natildeo soacute evita

os buracos mas tambeacutem cria uma forma de renderizaccedilatildeo de arestas vivas A

colocaccedilatildeo de vaacuterios pequenos surfels na regiatildeo da interseccedilatildeo permite esta

correta renderizaccedilatildeo das ldquoarestas vivasrdquo Desta forma o problema das arestas

vivas eacute resolvido na modelagem (Figura 12) A vantagem de se resolver o caso

na modelagem eacute que natildeo eacute necessaacuterio fazer um tratamento especial na

renderizaccedilatildeo para que mostre esta aresta viva Diferente do tratamento feito

em Pauly (seccedilatildeo 431) que resolve esta questatildeo em tempo de renderizaccedilatildeo

Aleacutem disso o tratamento resolve alguns casos onde a Regra 2 poderia falhar

(veja em Validade da Regra 2-seccedilatildeo 44)

Figura 12 [2] -Agrave direita eacute mostrado o resultado do tratamento de interseccedilatildeo para o caso de Arestas Vivas do objeto agrave esquerda

43 Meacutetodo de Pauly

O meacutetodo aplica-se a objetos soacutelidos e natildeo soacutelidos Os modelos podem ser

obtidos a partir de diferentes entradas como nuvem de pontos irregulares ou por

meio de scanners 3D Cria um modelo hiacutebrido destes objetos usa o modelo por

pontos juntamente com a representaccedilatildeo impliacutecita Moving Least Squares - MLS

[18] Realiza operaccedilotildees booleanas com pontos e utiliza adicionalmente MLS

para alguns casos de classificaccedilatildeo de surfels e no tratamento de interseccedilatildeo A

seguir apresentamos as caracteriacutesticas do modelo por pontos deste meacutetodo e o

algoritmo que realiza as operaccedilotildees

Operaccedilotildees Booleanas com Pontos 40

431 Modelo em Pauly

O modelo eacute uma estrutura hiacutebrida de pontos com a representaccedilatildeo impliacutecita

Moving Least Squares - MLS [18] Esta estrutura eacute usada para fazer operaccedilotildees

booleanas e tambeacutem operaccedilotildees de free-form (natildeo abordadas nesta

dissertaccedilatildeo) Para operaccedilotildees booleanas a representaccedilatildeo MLS permite que a

curva de interseccedilatildeo entre os modelos seja reconstruiacuteda e surfels sejam

colocados nesta curva e em alguns casos de classificaccedilatildeo de surfels mostrados

na seccedilatildeo 432 Para este modelo natildeo existem restriccedilotildees quanto agrave forma do

objeto

Os surfels contecircm informaccedilotildees sobre sua posiccedilatildeo e sua normal Aleacutem

disso surfels podem conter informaccedilotildees adicionais como textura cor

propriedades de materiais

A distribuiccedilatildeo dos surfels eacute natildeo-uniforme e a amostragem eacute

aproximadamente adequada (Veja seccedilatildeo 44)

432 Algoritmo de Operaccedilotildees Booleanas

O algoritmo classifica surfels de um modelo como ldquodentrordquo ou ldquoforardquo de

outro modelo Antes de colocarmos como eacute feita esta classificaccedilatildeo devemos

acrescentar que Pauly estende esta classificaccedilatildeo para modelos que natildeo satildeo

soacutelidos Ou seja mesmo um modelo natildeo soacutelido divide o espaccedilo da cena (espaccedilo

em que se encontra o modelo) em dois sub-espaccedilos dentro ou fora do modelo

Pauly faz esta subdivisatildeo da seguinte forma

Como a superfiacutecie que determina o modelo eacute orientada (conteacutem vetores

normais agrave superfiacutecie que apontam para ldquoforardquo do modelo) Pauly considera que

um modelo natildeo soacutelido divide o espaccedilo em dois sub-espaccedilos um ldquoforardquo do

modelo (os vetores normais apontam para este sub-espaccedilo) e um que estaacute

ldquodentrordquo do modelo (os vetores normais apontam para direccedilatildeo oposta a este sub-

espaccedilo) Por exemplo um plano eacute representado como um conjunto de surfels

contidos num determinado espaccedilo geomeacutetrico plano π Cada surfel conteacutem um

vetor normal direcionado Este modelo divide entatildeo o espaccedilo em dois sub-

espaccedilos o sub-espaccedilo que eacute apontado por estes surfels (considerado ldquoforardquo do

modelo) e o sub-espaccedilo que estaacute na direccedilatildeo oposta (considerado ldquodentrordquo do

modelo) Desta forma ele aplica as classificaccedilotildees de ldquodentrordquo e ldquoforardquo de um

modelo tambeacutem a modelos natildeo soacutelidos A partir desta consideraccedilatildeo as

Operaccedilotildees Booleanas com Pontos 41

operaccedilotildees booleanas satildeo realizadas com os modelos natildeo soacutelidos da mesma

forma que com os modelos soacutelidos

Para determinar esta classificaccedilatildeo (dentro ou fora do modelo) Pauly utiliza

a Regra 2 Para pesquisa do surfel mais proacuteximo o meacutetodo usa a estrutura Kd-

tree [16] e tambeacutem o algoritmo ANN [16] No entanto o meacutetodo apresenta uma

restriccedilatildeo da Regra 2 ela soacute deve ser usada para classificaccedilotildees de pontos x se

a distacircncia x-p for maior que o espaccedilamento da amostragem local ηp em p

Este espaccedilamento da amostragem local ηp em p eacute um caacutelculo aproximado da

distacircncia meacutedia entre os surfels vizinhos a p Se x estaacute muito proacuteximo agrave

superfiacutecie a classificaccedilatildeo pode falhar Neste caso ele calcula o ponto exato de

S mais proacuteximo a x usando a projeccedilatildeo MLS (ldquoMoving Least Squaresrdquo)

Por questotildees de melhoria de desempenho utiliza-se o fato de que sendo

Ωp (x) a classificaccedilatildeo do ponto x em relaccedilatildeo agrave amostragem P tem-se que Ωp (x)

= Ωp (xrsquo) para todos os pontos de xrsquo que estatildeo dentro da esfera de centro x e

raio igual a x-p - ηp (onde p eacute o surfel mais proacuteximo e ηp eacute o espaccedilamento

local da amostragem em p acima citado) Ou seja sendo x um ponto qualquer p

o surfel mais proacuteximo a x ηp eacute o espaccedilamento local da amostragem em p se

desenharmos uma esfera com centro x e raio igual a x-p - ηp temos que

todos os pontos xrsquo que estatildeo dentro da esfera teratildeo a mesma classificaccedilatildeo de x

Desta forma o nuacutemero de vezes que a classificaccedilatildeo eacute feita (pesquisando-se o

surfel mais proacuteximo ao ponto e usando a Regra 2) diminui em ateacute 90 Assim

em geral a classificaccedilatildeo de um surfel eacute obtida a partir do seu surfel vizinho

Dados

S1 a superfiacutecie MLS de contorno que define o modelo A

S2 a superfiacutecie MLS de contorno que define o modelo B

P1 o conjunto de surfels que representa a superfiacutecie S1

P2 o conjunto de surfels que representa a superfiacutecie S2

Ωp1 (x) a classificaccedilatildeo do ponto p em relaccedilatildeo a uma amostragem P1

Q1 o subconjunto de P1 que vai compor o resultado

Ωp2 (x) a classificaccedilatildeo do ponto p em relaccedilatildeo a uma amostragem P2

Q2 o subconjunto de P2 que vai compor o resultado

Os conjuntos Q1 e Q2 satildeo obtidos por meio da Tabela 1 mostrada abaixo

Operaccedilotildees Booleanas com Pontos 42

Tabela 1 Classificaccedilatildeo para operaccedilotildees booleanas

Para o tratamento de interseccedilatildeo neste meacutetodo satildeo computados pontos

que caem exatamente na curva de interseccedilatildeo e estes satildeo acrescentados ao

modelo resultado Estes pontos satildeo determinados de forma que a densidade da

amostragem vai crescendo agrave medida que os surfels se aproximam da curva de

interseccedilatildeo e convergem para este ponto de interseccedilatildeo como mostra a Figura

13

(a) (b) (c)

Figura 13 - Os novos surfels satildeo colocados exatamente na curva de interseccedilatildeo

e convergem para o ponto de interseccedilatildeo

A Figura 14 mostra o processo de encontrar os surfels que caem nesta

curva de interseccedilatildeo Inicialmente satildeo encontrados todos os pontos de Q1 e Q2

que estatildeo proacuteximos agrave curva de interseccedilatildeo por meio da funccedilatildeo de distacircncia do

operador de projeccedilatildeo MLS Em seguida procura-se todos os pares mais

proacuteximos (q1 є Q1 q2 є Q2 ) e computa-se o ponto q na curva de interseccedilatildeo da

seguinte forma (veja a Figura 14)Seja r o ponto na linha de interseccedilatildeo dos dois

planos tangentes em q1 e q2 e que estaacute mais proacuteximo a estes dois pontos isto eacute

que minimiza a distacircncia ||r-q1|| + ||r-q2|| r eacute a primeira aproximaccedilatildeo de q e agora

pode ser projetado sobre S1 e S2 para obter dois novos pontos de partida q1rsquo e q2

rsquo

para a iteraccedilatildeo Este procedimento pode ser repetido iterativamente ateacute que os

pontos q1 e q2 convirjam ao ponto q na curva de interseccedilatildeo Normalmente este

processo requer menos de trecircs iteraccedilotildees

Operaccedilotildees Booleanas com Pontos 43

(a) (b)

(c)

Figura 14 (a) Suponhamos a reta que eacute a interseccedilatildeo do plano tangente a S1 em q1 e o

plano tangente a S2 em q2 O ponto r eacute o ponto desta reta que estaacute mais proacuteximo a q1 e

q2 (b) r eacute projetado sobre S1 e S2 obtendo-se q1acute e q2acute dois novos pontos de partida

para nova iteraccedilatildeo (c) A nova iteraccedilatildeo gera r que eacute uma aproximaccedilatildeo melhor de q

Pauly faz o tratamento de arestas vivas em tempo de renderizaccedilatildeo Ele

faz uma alteraccedilatildeo no renderizador Marca os surfels de interseccedilatildeo e ao

renderizaacute-los satildeo cortados para gerar uma aresta viva

44 Validade da Regra 2

Os dois meacutetodos analisados nesta dissertaccedilatildeo utilizam a seguinte regra

para a classificaccedilatildeo de um surfel

Regra 2 dado um volume V determinado por uma superfiacutecie de contorno

S uma amostragem P da superfiacutecie S um ponto x qualquer um ponto p є P que

eacute a amostra mais proacutexima a x um vetor ny normal a S em p e orientado para

fora de S temos que (x ndash p) np gt 0 x notinV

Em [16] eacute colocado que esta regra eacute tirada da seguinte propriedade da

geometria diferencial (aqui chamada Propriedade 1)

Propriedade 1 Dado um volume V determinado por uma superfiacutecie de

contorno S contiacutenua e duplamente diferenciaacutevel um ponto x qualquer um ponto

Operaccedilotildees Booleanas com Pontos 44

y є S que eacute o ponto de S mais proacuteximo a x um vetor ny normal a S em y e

orientado para fora de S temos que (x ndash y) ny gt 0 x notinV

A Figura 15 ilustra esta propriedade

Figura 15 Para verificar se o ponto x estaacute fora de um contorno C encontra-se o ponto y

de C Se o produto interno entre a normal em y e o vetor que liga y a x for maior que

zero entatildeo x estaacute fora de C senatildeo estaacute dentro de C

Pauly assume que tendo uma amostragem P da superfiacutecie S podemos

usar a Propriedade 1 substituindo y por p o surfel mais proacuteximo ao ponto x (x ndash

p) np gt 0 x notinV (Regra 2) Esta amostragem P em seu trabalho eacute

(aproximadamente) uma ldquoamostragem adequadardquo Tambeacutem seu tratamento de

interseccedilatildeo cria uma aproximaccedilatildeo dela (seccedilatildeo 43) Empiricamente a

ldquodiscretizaccedilatildeo da propriedaderdquo eacute vaacutelida a partir desta suposiccedilatildeo Mas isso natildeo foi

demonstrado teoricamente em seu trabalho

Pauly coloca em [16] que natildeo existe ainda uma teoria matemaacutetica rigorosa

de amostragem anaacuteloga a teoria de Fourier para superfiacutecies discretas

A melhor aproximaccedilatildeo teoacuterica para esta aacuterea eacute o uso do Eixo Medial que

foi colocado em [10] Vamos descrever este trabalho brevemente nesta seccedilatildeo

Este trabalho apresenta um algoritmo de reconstruccedilatildeo de superfiacutecie que parte de

uma amostragem adequada (abaixo definida) de pontos e obteacutem uma malha

que eacute topologicamente equivalente agrave superfiacutecie do objeto e agrave medida que a

densidade da amostragem cresce a saiacuteda converge para esta superfiacutecie

Para definir amostragem adequada o trabalho parte do conceito de Eixo

Medial

Operaccedilotildees Booleanas com Pontos 45

ldquoEixo Medialrdquo de uma superfiacutecie 2D posicionada no R3 eacute o conjunto

(fechado) de pontos pi para os quais buscando-se o ponto da superfiacutecie que

estaacute mais proacuteximo a pi mais de um ponto pertencentes a esta superfiacutecie satildeo

encontrados A Figura 16 abaixo ilustra o Eixo Medial em 2D

Figura 16 [10] As curvas de cor mais clara satildeo o Eixo Medial da curva em preto

Em duas dimensotildees os veacutertices de Voronoi de uma amostragem densa

aproximam o ldquoEixo Medialrdquo da amostragem (mas esta propriedade natildeo se

estende a 3D) A Figura 17 mostra o Eixo Medial em 3D

Figura 17 [10] Em 3D geralmente o Eixo Medial eacute uma superfiacutecie 2D (em cor mais

clara) Aqui o quadrado eacute o Eixo Medial da superfiacutecie transparente que o contorna

Podemos definir agora a amostragem adequada da seguinte forma

Supondo uma superfiacutecie suave que quer dizer uma 2-manifold duplamente

diferenciaacutevel posicionada no R3 uma ldquoamostragem adequadardquo desta superfiacutecie eacute

aquela na qual a densidade da amostragem eacute (pelo menos) inversamente

proporcional agrave distacircncia ao ldquoEixo Medialrdquo A Figura 18 mostra uma amostragem

adequada

Operaccedilotildees Booleanas com Pontos 46

Figura 18 [10] A figura mostra o diagrama de Voronoi de uma amostragem de pontos S

Da mesma forma que o a amostragem aproxima a curva os veacutertices de Voronoi

aproximam o Eixo Medial

Na praacutetica na reconstruccedilatildeo da superfiacutecie uma aproximaccedilatildeo deste ldquoEixo

Medialrdquo eacute computada (devido agrave dificuldade de computaacute-lo exatamente e em

alguns casos ateacute impossibilidade)

Melhorias Propostas 47

5 Melhorias Propostas

No capiacutetulo 4 apresentamos dois meacutetodos que realizam operaccedilotildees

booleanas em modelos por pontos o meacutetodo de Adams e Dutreacute [2] e o meacutetodo

de Pauly[3] Para esta dissertaccedilatildeo usamos o meacutetodo de Adams e Dutreacute [2] e

propomos as seguintes melhorias

- Alteramos o momento em que eacute feita a classificaccedilatildeo da octree Fazemos

esta classificaccedilatildeo durante a sua criaccedilatildeo Os noacutes filhos de um noacute pai P qualquer

satildeo classificados logo apoacutes a criaccedilatildeo de todos estes filhos de P

independentemente do restante da octree ter sido criada Isso pode ser feito

porque a octree eacute construiacuteda na ordem raiz-esquerda-direita (preorder

traversal) e portanto apoacutes todos os filhos de um noacute pai serem criados a parte

necessaacuteria da octree para a classificaccedilatildeo destes filhos jaacute estaacute criada

- A classificaccedilatildeo da octree eacute otimizada classificando-se os cantos dos seus

noacutes como dentro ou fora do modelo Na classificaccedilatildeo de um noacute n1 a partir de seu

vizinho n2 se os cantos que satildeo comuns a n1 e n2 tiverem a mesma

classificaccedilatildeo esta seraacute dada ao noacute Assim diminuiacutemos o nuacutemero de pesquisas

pelo surfel mais proacuteximo que eacute a parte criacutetica da classificaccedilatildeo dos noacutes da octree

em termos de tempo de processamento

- Acrescentamos um valor miacutenimo (maior que zero) para o nuacutemero de

surfels contidos em um noacute que eacute uma das condiccedilotildees de parada na criaccedilatildeo da

octree Verificamos que desta forma diminui-se a chance de erro na classificaccedilatildeo

de partes criacuteticas como ldquoarestas vivasrdquo

Uma comparaccedilatildeo entre a nossa implementaccedilatildeo e a de Pauly tambeacutem seraacute

feita no capiacutetulo 6

51 Descriccedilatildeo do algoritmo

O algoritmo implementado para esta dissertaccedilatildeo baseado no meacutetodo de

Adams e Dutreacute [2] pode ser dividido nas seguintes partes Criaccedilatildeo e

classificaccedilatildeo de uma octree para cada modelo Teste DentroFora Criaccedilatildeo do

modelo resultado Natildeo foi implementado tratamento especial algum de

interseccedilatildeo para o nosso plugin As proacuteximas seccedilotildees apresentam estas partes

Melhorias Propostas 48

511 Criaccedilatildeo e classificaccedilatildeo de uma octree para cada modelo

As ideacuteias do algoritmo satildeo aqui ilustradas em 2D mas a extensatildeo delas

para 3D eacute feita facilmente

Para cada modelo a octree eacute criada e classificada da seguinte forma

Figura 19-Quadtree classificada Os noacutes mais escuros estatildeo fora do modelo os mais claros dentro e os em tom intermediaacuterio satildeo noacutes de contorno

Gera-se uma ldquocaixa envolventerdquo do modelo contendo todos os surfels e

cria-se o noacute raiz da octree que corresponde a esta ldquocaixa envolventerdquo Este noacute

raiz eacute subdividido em oito filhos e seus surfels satildeo distribuiacutedos entre eles Ao

inveacutes de testarmos os valores de xy e z para cada surfel a fim de determinar

para qual filho ele iraacute utilizamos listas auxiliares Primeiro os surfels satildeo

subdivididos em dois grupos pelos valores de x e armazenados em uma lista

auxiliar Em seguida cada uma das listas eacute subdividida pelo valor de y e as

quatro listas obtidas seratildeo subdivididas pelo valor de z Ao final teremos 8 listas

de surfels cada uma delas pertencente a um filho

Cada noacute seraacute entatildeo novamente subdividido enquanto contiver um nuacutemero

de surfels gt nmin (valor preacute-definido) ou enquanto a profundidade da aacutervore lt pmax

(valor preacute-definido) Na figura 19 pmax = 3 e nmin = 3

Melhorias Propostas 49

Figura 20-O noacute cheio eacute dividido em trecircs partes agrave esquerda a regiatildeo estaacute dentro do modelo agrave direita estaacute fora e entre as duas linhas que dividem o noacute estaacute a regiatildeo que conteacutem os surfels

Os noacutes cheios recebem um tratamento especial Eles satildeo subdivididos em

trecircs partes da seguinte forma uma que estaacute fora do modelo outra que estaacute

dentro e uma que conteacutem os surfels Esta subdivisatildeo eacute feita por meio da criaccedilatildeo

de dois planos paralelos que dividem o noacute Para determinar estes planos

calcula-se o vetor nm igual agrave meacutedia das normais dos surfels do noacute nm = sum ns

sum ns onde ns eacute a normal de cada surfel do noacute Em seguida encontra-se o

surfel com maior produto interno entre a sua normal e a normal meacutedia

d1=Max(nm ٠ ns) Este surfel juntamente com a normal meacutedia define um dos

planos Encontra-se tambeacutem o surfel com menor produto interno entre a sua

normal e a normal meacutedia d2=Min (nm ٠ ns) Este surfel juntamente com a normal

meacutedia define o outro plano (Figura 20) Se o noacute conteacutem surfels de superfiacutecies de

orientaccedilotildees diferentes ele natildeo seraacute subdividido ou seja os planos coincidiratildeo

com os planos que delimitam o proacuteprio noacute Este teste foi implementado da

seguinte forma escolhe-se um surfel qualquer do noacute Calcula-se o produto

interno entre a normal deste surfel e as outras normais dos outros surfels deste

noacute Se algum produto interno for menor que zero este noacute natildeo seraacute subdividido

Apoacutes a etapa de subdivisatildeo classificam-se os oito cantos deste noacute como

dentro ou fora do modelo por meio da classificaccedilatildeo de um ponto que

descreveremos na sub-seccedilatildeo 5111

Melhorias Propostas 50

a b

c d

Figura 21-O noacute a eacute classificado pelo noacute c o noacute d tambeacutem eacute classificado pelo noacute c a classificaccedilatildeo do noacute a eacute propagada para o noacute b

Jaacute os noacutes vazios da octree seratildeo classificados como ldquodentrordquo ou ldquoforardquo do

modelo da seguinte forma cada noacute folha vazio eacute classificado a partir de um de

seus irmatildeos vizinhos adjacentes Se ele possuir um vizinho adjacente cheio ele

seraacute classificado por este vizinho se natildeo possuir os vizinhos adjacentes seratildeo

classificados primeiro e ele teraacute esta mesma classificaccedilatildeo (Figura 21) Como tem

que existir sempre pelo menos um noacute cheio entre os filhos de um noacute pai entatildeo

sempre esta classificaccedilatildeo poderaacute ser feita Com a classificaccedilatildeo de todos os

filhos tem-se tambeacutem a classificaccedilatildeo dos cantos do noacute pai

Mf03c003fmx a b

Figura 22-Os cantos a e b do noacute cheio possuem a mesma classificaccedilatildeo fora do modelo Esta classificaccedilatildeo foi dada ao noacute vazio adjacente

Melhorias Propostas 51

Para classificar um noacute vazio por meio de um noacute cheio verificam-se os

cantos comuns destes dois noacutes se todos os cantos tiverem a mesma

classificaccedilatildeo esta seraacute dada ao noacute vazio (Figura 22) Se houver classificaccedilotildees

diferentes escolhe-se o surfel do noacute cheio mais proacuteximo ao noacute vazio faz-se o

produto interno entre a normal deste surfel e o vetor que liga o centro do noacute

cheio ao centro do noacute vazio (ou o vetor que liga o surfel ao centro do noacute vazio)

Se o produto interno for maior que zero o noacute eacute classificado como ldquoforardquo senatildeo eacute

classificado como ldquodentrordquo Para encontrar o surfel (pertencente a um noacute cheio)

mais proacuteximo ao noacute vazio existem dois casos

- O noacute cheio eacute folha percorre-se toda a lista de surfels e escolhe o surfel

mais proacuteximo da fronteira entre o noacute cheio e o vazio

- O noacute cheio natildeo eacute um noacute folha percorrem-se os filhos do noacute cheio ou seja

esta pesquisa eacute feita descendo na octree a partir do noacute cheio procurando o

surfel mais proacuteximo agrave fronteira do pai com o noacute vazio a ser classificado

Classificando o centro do noacute vazio todo o noacute deve ter a mesma

classificaccedilatildeo pois este noacute natildeo conteacutem surfels Para encontrar o surfel do noacute

vazio mais proacuteximo da fronteira entre o noacute cheio e o vazio basta testar o valor da

coordenada se a fronteira eacute o lado direito do noacute cheio escolhe-se o surfel com

maior coordenada lsquoxrsquo se eacute o lado esquerdo escolhe-se o surfel com menor lsquoxrsquo

se lado superior surfel com maior lsquoyrsquo etc A seguir apresentamos a classificaccedilatildeo

de um ponto qualquer pertencente a um noacute cheio

Figura 23- Quadtree classificada

Melhorias Propostas 52

5111 Classificaccedilatildeo de um ponto de um noacute cheio

Figura 24 [2] A normal n eacute a normal meacutedia e os surfels s1 e s2 juntamente com a normal

n definem as retas que dividem o noacute O ponto a estaacute fora do modelo e o ponto b estaacute

dentro do modelo

Para um ponto localizado dentro do noacute faz-se o seguinte teste se o noacute foi

dividido testa-se de acordo com a divisatildeo do noacute se o ponto estaacute na parte do noacute

que estaacute dentro do modelo ele eacute classificado como ldquodentrordquo se o ponto estaacute na

parte que estaacute fora do modelo ele eacute classificado como ldquoforardquo (Figura 24) se o

ponto estaacute na parte que conteacutem os surfels encontra-se o surfel s pertencente ao

noacute mais proacuteximo do ponto e o classifica de acordo com s seja ns a normal em s

cs a coordenada de s cp a coordenada do ponto Se (cp - cs )٠ ns gt 0 o ponto

seraacute classificado como ldquoforardquo Senatildeo seraacute classificado como ldquodentrordquo

Se o noacute natildeo foi dividido em planos esta classificaccedilatildeo a partir do surfel

mais proacuteximo seraacute sempre feita

512 Teste DentroFora

Melhorias Propostas 53

Figura 25-Duas circunferecircncias e suas quadtrees correspondentes

O Teste DentroFora classifica os surfels de um modelo como dentro ou

fora de outro modelo ou na sua interseccedilatildeo Este teste foi aqui implementado

exatamente como foi proposto em Adams e Dutreacute [2] exceto que natildeo foi

implementado o meacutetodo TINN - Triangle Inequality Nearest Neighbour [19]

Cada octree eacute percorrida verificando-se se os seus noacutes ou surfels estatildeo dentro

fora ou no contorno do outro modelo (Figura 25) Sejam A e B duas octrees e

queremos classificar a octree A As duas octrees (AB) satildeo percorridas partindo

da raiz

Para cada noacute de A existem quatro casos (Figura 26) Para testar estas

situaccedilotildees os boxes dos noacutes satildeo aumentados de rmax o raio do maior surfel do

modelo Isto eacute feito para compensar o fato de que o surfel natildeo eacute apenas um

ponto mas sim considerado como um disco

Os quatro casos satildeo

Se o noacute de A natildeo intersecta B entatildeo todos os surfels deste noacute satildeo

classificados como fora

Se o noacute de A intersecta apenas noacutes de B que estatildeo fora do modelo

todos os surfels deste noacute satildeo fora

Se o noacute de A intersecta apenas noacutes de B que estatildeo dentro do modelo

todos os surfels deste noacute satildeo dentro

Melhorias Propostas 54

Se o noacute de A intersecta noacutes de B que estatildeo dentro e tambeacutem noacutes de B

que estatildeo fora testa-se se este noacute de A eacute ou natildeo folha Se natildeo for folha

percorre-se os filhos deste noacute de A ateacute encontrar um noacute folha cheio que

intersecta B Para cada surfel sa deste noacute folha de A encontra-se o surfel de B

mais proacuteximo e classifica-se a coordenada de sa da forma apresentada na seccedilatildeo

5111 Seja sb o surfel usado na classificaccedilatildeo de sa Se os discos de sb e sa

se intersectam sa eacute classificado como ldquointerseccedilatildeordquo

(a) (b)

(c) (d)

Figura 26- a modelos natildeo se intersectam b modelo intersecta noacutes fora c modelo intersecta apenas noacutes dentro d modelo intersecta noacutes dentro e noacutes fora

513 Criaccedilatildeo do modelo resultado

Um novo modelo eacute criado com os seguintes surfels (de acordo com a

operaccedilatildeo booleana escolhida pelo usuaacuterio - veja Regra 1 da seccedilatildeo 41)

Uniatildeo - surfels de A que estatildeo fora de B + surfels de B que estatildeo fora de A

Melhorias Propostas 55

Interseccedilatildeo - surfels de A que estatildeo dentro de B + surfels de B que estatildeo

dentro de A

Diferenccedila A-B - surfels de A que estatildeo fora de B + surfels de B que estatildeo

dentro de A (com orientaccedilatildeo invertida)

Como natildeo foi implementado tratamento especial algum de interseccedilatildeo para

o nosso plugin os surfels que se intersectam satildeo mantidos no modelo resultado

final sem modificaccedilotildees

Descrito o algoritmo vejamos a seguir a sua implementaccedilatildeo

52 Implementaccedilatildeo

Este algoritmo foi implementado na forma de um plugin para o software

PointShop 3D [11] Este plugin foi desenvolvido na linguagem C e no sistema

operacional Windows

A escolha deste tipo de implementaccedilatildeo permitiu-nos usar o software

PointShop para os testes do algoritmo Estes testes foram feitos com os modelos

disponibilizados para o PointShop [11] Nesta seccedilatildeo apresentaremos o software

PointShop e as principais estruturas de dados usadas em nosso plugin

O Pointshop eacute um software aberto com seu coacutedigo disponiacutevel e preparado

para trabalhar com plugins Eacute um software de ediccedilatildeo de modelos 3D por pontos

Ele permite aleacutem de visualizar o modelo alterar as suas caracteriacutesticas como

cor brilho e fazer mapeamento de textura iluminaccedilatildeo filtragem (Figura 27)

Melhorias Propostas 56

Figura 27-Software PointShop 3D com dois modelos carregados na sua cena

Aleacutem disso pode-se criar uma cena com vaacuterios modelos e visualizaacute-los de

qualquer ponto de vista Implementa o virtual trackball para rotacionaacute-los e

transladaacute-los Usa uma iluminaccedilatildeo simples direcional A sua arquitetura eacute

extensiacutevel permite que o usuaacuterio adicione seus proacuteprios componentes ao

sistema Possui trecircs tipos de componentes

ldquoToolsrdquo fornece funcionalidades para ediccedilatildeo interativa de superfiacutecie Satildeo

disponibilizados na ldquotoolbarrdquo

Plugins fornece funcionalidades para processar em um soacute passo

modelos ou partes deles selecionadas Satildeo disponibilizados no menu ldquoPluginsrdquo

Renderes fornece funcionalidades de display para os modelos

Para esta dissertaccedilatildeo foi escolhida a construccedilatildeo do componente Plugin

por adequar-se agrave nossa proposta e ser a mais simples de ser construiacuteda O

PointShop [11] jaacute conteacutem uma tool que executa operaccedilotildees booleanas e

deformaccedilatildeo free-form sobre os modelos carregados na cena usando o meacutetodo

de Pauly [3] apresentado no capiacutetulo 4 O nosso plugin Operaccedilotildees Booleanas

implementa o algoritmo descrito na seccedilatildeo anterior baseado na proposta de

Melhorias Propostas 57

Adams e Dutreacute [2] Uma comparaccedilatildeo entre o nosso plugin e a tool de Pauly [3] eacute

feita no capiacutetulo 6

Figura 28-Menu do PointShop com o plugin e as opccedilotildees para operaccedilotildees booleanas

Para se executar o plugin o usuaacuterio precisa carregar dois modelos na

cena do PointShop acionar o plugin informando a operaccedilatildeo que seraacute executada

O plugin executaraacute o algoritmo acima proposto e carregaraacute o resultado na cena

do Pointshop retirando os modelos anteriores

521 Estruturas de Dados

Como vimos o software PointShop [11] trabalha com modelos por pontos

Um modelo deste software descrito na seccedilatildeo 42 conteacutem todas as informaccedilotildees

que o algoritmo proposto em Bart [2] necessita Abaixo relacionamos as

Melhorias Propostas 58

principais estruturas de dados do PointShop usadas no plugin e as principais

estruturas de dados do nosso plugin

As principais classes do PointShop usadas no plugin satildeo

Classe Scene

Classe Objects

Classe SurfelColections

Classe Surfel

Classe StatusBar

Classe Transformer

A hierarquia de dados eacute a seguinte a Scene conteacutem vaacuterios Objects os

quais conteacutem SurfelColections Cada SurfelColections conteacutem Surfels que

suportam uma ou mais propriedades tais como cor difusa cor especular

Classe Scene Classe que representa uma cena que conteacutem modelos

Classe Object Um modelo eacute representado pela classe Object que

conteacutem uma SurfelCollection e as matrizes de transformaccedilatildeo para rotaccedilatildeo

escala e translaccedilatildeo Cada Object eacute identificado pelo seu nome que eacute uacutenico na

Scene O meacutetodo getUniqueName retorna um nome uacutenico Cada Object tem sua

proacutepria matriz de transformaccedilatildeo que pode ser modificada com setRotation

rotate setPosition translate setScale e scale Objects podem ser copiados com

copy Objects consiste em um conjunto de surfels os quais podem ser

recuperados pela getSurfelCollection O Object pode ser ativado com

setActiveObject e recuperado com getActiveObject

Objects podem ser adicionados ou removidos com addObject e

removeObject Os Objects podem ser obtidos pela getFirstObject e

getNextObject

Classe SurfelCollection representa o conjunto de surfels de um modelo

Cada surfelcollection consiste em um conjunto de surfels (SurfelInterface) de

tamanho obtido por getNofSurfels Os surfels podem ser recuperados com

getFirstSurfel getCurrentSurfel e getNextSurfel

A SurfelCollection conteacutem um PropertyDescriptor e uma SurfelList

A SurfelList eacute uma lista duplamente encadeada de surfels Possui os

atributos firstSurfel lastSurfel currentSurfel que satildeo ponteiros para uma

SurfelInterface nSurfels que eacute o nuacutemero de Surfels

A SurfelInterface define a API para os surfels que satildeo os menores

elementos que compotildeem um Object Podem ser considerados como pontos com

uma normal que define a orientaccedilatildeo do ciacuterculo (ou elipse) que seraacute desenhado

Melhorias Propostas 59

tatildeo logo o surfel seja renderizado Tem como atributos dois ponteiros (next e

prev) para SurfelInterface

PropertyDescriptor consiste em ateacute 32 valores descrevendo quais as

propriedades a SurfelInterface suporta

Classe Surfel classe que representa o surfel

Classe StatusBar classe que imprime mensagens na tela Os plugins

podem mandar mensagens para o usuaacuterio pela StatusBar

Mensagens texto podem ser impressas com showMessage O progresso

de uma operaccedilatildeo pode ser indicado com setProgress ou resetProgress

Classe Transformer representa a transformaccedilatildeo entre sistemas de

coordenadas Esta classe fornece meacutetodos para transformar pontos e vetores

entre os diferentes sistemas de coordenadas do Pointshop

A seguir apresentamos as principais estruturas de dados do plugin

Operaccedilotildees Booleanas

As principais estruturas de dados do plugin satildeo boundingbox tree no

lista_surfel surfel

Boundingbox conteacutem dois pontos 3D que definem uma caixa que conteacutem

o modelo um ponto com menores coordenadas xy e z e outro ponto com

maiores xyz

Tree representa a octree do modelo Cada registro conteacutem um ponteiro

para um noacute e oito ponteiros para as 8 octrees filhas

No representa um noacute da octree Conteacutem os seguintes dados

- localizaccedilatildeo do noacute que eacute o canto inferior esquerdo do noacute

- lista_surfel (preenchida apenas para noacutes folha cheios)

- quantidade de surfels do noacute

- classificaccedilatildeo do noacute como dentro fora ou contorno

- classificaccedilatildeo do noacute em relaccedilatildeo a outro modelo

- indica se o noacute eacute folha ou natildeo

- vetor que eacute a meacutedia das normais dos surfels do noacute

- ponto que eacute a meacutedia das localizaccedilotildees dos surfels do noacute

- surfel que tem (entre todos os surfels do noacute) o maior produto interno

entre a sua normal e a normal meacutedia

- surfel que tem (entre todos os surfels do noacute) o menor produto interno

entre a sua normal e a normal meacutedia

- produto interno maacuteximo e miacutenimo entre as normais dos surfels do noacute e a

normal meacutedia deste noacute

Melhorias Propostas 60

- indica se o noacute conteacutem surfels com normais em sentido oposto (produto

interno entre elas eacute menor que zero)

- classificaccedilatildeo dos oito cantos do noacute

lista_surfels lista em que cada registro conteacutem um apontador para um

surfel e um apontador para o proacuteximo registro

surfel representa o surfel da octree Conteacutem a classificaccedilatildeo em relaccedilatildeo a

outro modelo e um ponteiro para o surfel do Poinshop

Resultados 61

6 Resultados

Neste capiacutetulo apresentamos os testes realizados com o plugin para o

PointShop implementado para esta dissertaccedilatildeo a comparaccedilatildeo deste plugin com

o plugin de Pauly [3] e a comparaccedilatildeo entre o meacutetodo de Adams e Dutreacute [2] e o

meacutetodo de Pauly [3]

61 Testes

Os testes foram feitos em um PC x86 Family 6 261600 KB de RAM sem

placa graacutefica sistema operacional Windows 2000 O plugin foi implementado na

linguagem C

Os modelos usados para os testes satildeo modelos disponibilizados no

PointShop [11] Vale lembrar que o meacutetodo implementado em nosso plugin eacute

restrito a modelos soacutelidos e portanto foram usados apenas estes modelos

soacutelidos para os testes

O modelo na Figura 29 que eacute um dos modelos disponibilizados no

PointShop [11] foi usado para mostrar o resultado das operaccedilotildees realizadas

pelo plugin implementado nesta dissertaccedilatildeo O modelo Igea eacute um modelo soacutelido

que conteacutem 134345 surfels

Resultados 62

Figura 29-Modelo do PointShop Igea

Para realizar as operaccedilotildees este modelo foi carregado na cena do

PointShop duas vezes e um deles colorido de vermelho As Figuras 30 31 32

mostram o resultado da operaccedilatildeo de uniatildeo interseccedilatildeo e diferenccedila

respectivamente Os nuacutemeros de surfels dos modelos resultantes satildeo mostrados

na Tabela 2

Resultados 63

Figura 30-Resultado da uniatildeo de duas Igeas

Figura 31-Resultado da interseccedilatildeo de duas Igeas

Resultados 64

Figura 32-Resultado da diferenccedila entre duas Igeas

Tabela 2-Nuacutemero de surfels dos modelos resultantes

Observamos que o nuacutemero de surfels dos modelos resultantes estaacute

coerente com as figuras dos seus modelos

Para avaliar o tempo de processamento das operaccedilotildees foram realizados

vaacuterios testes com o objetivo de obter uma meacutedia dos tempos de realizaccedilatildeo de

cada operaccedilatildeo Tambeacutem foram armazenados os tempos da criaccedilatildeo das duas

octrees e da classificaccedilatildeo de todos os surfels dos dois objetos (como dentro ou

fora do outro modelo) Estes testes foram feitos usando o modelo Igea A meacutedia

dos tempos de processamento foi calculada e os resultados satildeo mostrados na

Tabela 3 Verificamos que o maior tempo gasto eacute para criaccedilatildeo das octrees

Verificamos tambeacutem que este resultado apresentado eacute similar ao resultado

verificado empiricamente com o plugin de Pauly [3] Os tempos gastos para

realizar as operaccedilotildees satildeo similares e o maior tempo gasto no plugin de Pauly

tambeacutem eacute para inicializaccedilatildeo de suas estruturas de dados que incluem a kd-tree

Operaccedilatildeo Nuacutemero de surfels do modelo resultado

Uniatildeo 189715

Interseccedilatildeo 72225

Diferenccedila 134552

Resultados 65

Operaccedilatildeo Criaccedilatildeo das

Octrees (seg)

Classificaccedilatildeo

(seg)

Criaccedilatildeo do

resultado (seg)

Total (seg)

Uniatildeo 39375 1324 18925 7154

Interseccedilatildeo 38585 1585 09547 63982

Diferenccedila 399875 1504 1729 729475

Tabela 3- Meacutedia dos tempos de processamento para as operaccedilotildees com duas Igeas

Com o objetivo de expor melhor os resultados deste trabalho

apresentamos abaixo mais um teste das operaccedilotildees booleanas usando o nosso

plugin Os modelos usados para este segundo teste satildeo o Max Planck e o Male

ambos modelos soacutelidos disponibilizados no PointShop Estes modelos satildeo

mostrados nas figura 33 e 34

O primeiro Max Planck conteacutem 52809 surfels

Figura 33-Modelo do PointShop MaxPlanck

O segundo modelo abaixo Male conteacutem 148138 surfels

Resultados 66

Figura 34-Modelo do PointShop Male

As Figuras 353637 mostram o resultado da operaccedilatildeo de uniatildeo interseccedilatildeo

e diferenccedila respectivamente usando os dois modelos acima Podemos observar

pela figura 35 que o resultado da operaccedilatildeo de diferenccedila neste caso gerou um

modelo resultado com trecircs partes desconexas Os nuacutemeros de surfels de cada

modelo resultado satildeo mostrados na Tabela 5

Figura 35- Resultado da Uniatildeo do modelo Male com MaxPlanck

Resultados 67

Figura 36-Resultado da interseccedilatildeo do modelo Male com o MaxPlanck

Figura 37-Resultado da diferenccedila do modelo Male do modelo MaxPlanck

As meacutedias de tempos de processamento foram calculadas da mesma

forma que o primeiro teste com o modelo Igea acima apresentado Os

resultados satildeo mostrados na Tabela 4 Podemos observar que este teste

Resultados 68

apresenta tempos um pouco menores que o teste com o modelo Igea Isto se

deve ao fato de que o modelo MaxPlanck ser significativamente menor que o

modelo Igea MaxPlanck possui 52809 surfels e Igea conteacutem 134345 surfels

Operaccedilatildeo Criaccedilatildeo das

Octrees (seg)

Classificaccedilatildeo

(seg)

Criaccedilatildeo do

resultado (seg)

Total

(seg)

Uniatildeo 3012 1254 102 5285

Interseccedilatildeo 2985 0901 0861 4747

Diferenccedila 2965 0911 0791 4667

Tabela 4-Tempo de processamento das operaccedilotildees com os modelos MaxPlanck e Male

Operaccedilatildeo Nuacutemero de surfels do resultado

Uniatildeo 126532

Interseccedilatildeo 88414

Diferenccedila 77635

Tabela 5-Nuacutemero de surfels dos modelos resultados das operaccedilotildees com os modelos MaxPlanck e Male

Em seguida apresentaremos uma comparaccedilatildeo entre o nosso plugin e o

plugin de Pauly[3] e tambeacutem uma comparaccedilatildeo entre o meacutetodo de Adams e Dutreacute

[2] e o meacutetodo de Pauly [3]

62 Comparaccedilatildeo entre os dois meacutetodos que realizam operaccedilotildees booleanas

A comparaccedilatildeo entre os meacutetodos de Pauly[3] e de Adams e Dutreacute foi feita

em termos de tempo de processamento e em termos conceituais Em termos de

tempo de processamento comparamos o plugin de Pauly[3] com o nosso plugin

Em termos de tempo de processamento verifica-se empiricamente que os

dois meacutetodos apresentam tempos bastante similares Entretanto o tempo de

processamento do algoritmo aqui implementado ainda pode ser melhorado com

Resultados 69

o uso do meacutetodo TINN [19] que foi proposto em Adams[2] - para otimizar a

pesquisa do surfel mais proacuteximo a um ponto que estaacute localizado na regiatildeo de um

noacute que conteacutem surfels - veja seccedilatildeo 42 O uso deste meacutetodo natildeo foi

implementado para este trabalho e a sua implementaccedilatildeo melhoraria o tempo de

resposta do algoritmo Aleacutem disso o trabalho de Sara F Frisken [12] citado no

capiacutetulo 2 apresenta uma otimizaccedilatildeo no uso de octrees que pode ser

incorporada no algoritmo implementado neste trabalho

Em termos conceituais vamos fazer a comparaccedilatildeo do uso do que

chamamos aqui de Regra 2 do tratamento de interseccedilatildeo e do tratamento de

ldquoarestas vivasrdquo

Como vimos na seccedilatildeo 41 tanto o algoritmo implementado nesta

dissertaccedilatildeo baseado no trabalho de Adams e Dutreacute como o meacutetodo de Pauly

[3] parte do que chamamos aqui de Regra 2 para realizar operaccedilotildees booleanas

com pontos Mas cada um destes meacutetodos daacute um tratamento diferente para o

uso desta regra

O meacutetodo de Pauly usa a Regra 2 para classificaccedilatildeo de cada ponto ou de

cada surfel Para classificar um surfel de B sb como dentro ou fora de A eacute

encontrado o surfel de A sa mais proacuteximo a sb e sb eacute classificado a partir de sa

Para encontrar sa Pauly utiliza uma kd-tree Como esta pesquisa para encontrar

sa eacute cara (mesmo usando uma kd-tree) Pauly utiliza uma esfera que conteacutem

pontos com a mesma classificaccedilatildeo (seccedilatildeo 432) e diminui em 90 este nuacutemero

de pesquisas Pauly utiliza tambeacutem a representaccedilatildeo impliacutecita MLS (Moving Least

Squares) para casos em que a Regra 2 poderia falhar e para tratamento de

interseccedilotildees Entretanto o nuacutemero destes casos em que a Regra 2 poderia falhar

eacute muito pequeno E a representaccedilatildeo MLS natildeo eacute uma estrutura simples de ser

implementada Portanto natildeo encontramos vantagens em usar MLS para estes

casos O meacutetodo de Adams e Dutreacute natildeo trata estes casos e na praacutetica

apresenta resultados bastante satisfatoacuterios como foi mostrado Portanto

consideramos que valeria a pena fazer algum tratamento especial para estes

casos se fosse um procedimento simples Para a execuccedilatildeo do algoritmo de

Pauly o uso de MLS natildeo interfere significativamente porque a construccedilatildeo desta

representaccedilatildeo natildeo eacute feita somente para realizar operaccedilotildees booleanas Os testes

empiacutericos que fizemos com o algoritmo de Pauly natildeo incluem a construccedilatildeo desta

representaccedilatildeo

Aparentemente os dois algoritmos satildeo bastante parecidos um usa octrees

e o outro usa kd-tree As duas estruturas de dados satildeo simples e otimizam a

classificaccedilatildeo dos surfels de um modelo como dentro ou fora do outro modelo

Resultados 70

Mas existe uma diferenccedila conceitual entre dois que merece ser destacada O

algoritmo aqui implementado usa a Regra 2 para classificaccedilatildeo dos noacutes de uma

octree e armazena esta octree classificada (ver capiacutetulo 5) Assim na maioria dos

casos natildeo seraacute necessaacuterio encontrar o surfel mais proacuteximo para classificar um

ponto (ou um surfel) como fora ou dentro de um modelo Caso o ponto esteja em

uma aacuterea da octree classificada ele teraacute a classificaccedilatildeo dada agravequela aacuterea A

pesquisa ao surfel mais proacuteximo seraacute feita apenas nos casos em que o ponto a

ser classificado estaacute localizado entre os planos que subdividem um noacute cheio

O uso desta octree classificada levanta uma questatildeo que natildeo foi citada no

trabalho de Adams e Dutreacute que eacute a proximidade desta estrutura (armazenada)

de octree classificada com uma representaccedilatildeo volumeacutetrica do objeto Sendo

assim esta estrutura pode ser aproveitada para outras funccedilotildees aleacutem da

classificaccedilatildeo dos surfels Por exemplo podemos ter uma aproximaccedilatildeo do

volume de uma cena somando os volumes aproximados dos modelos que a

compotildeem Como o enfoque deste trabalho eacute operaccedilatildeo booleana natildeo vamos nos

aprofundar nesta questatildeo

Outra importante diferenccedila entre os dois trabalhos que jaacute foi explicada na

seccedilatildeo 432 eacute que o meacutetodo de Pauly aplica-se a modelos soacutelidos ou natildeo

soacutelidos enquanto que o meacutetodo de Adams e Dutreacute aplica-se somente a modelos

soacutelidos

Quanto ao tratamento de interseccedilatildeo em termos de visualizaccedilatildeo todos os

dois resolvem bem o problema O tratamento de interseccedilatildeo nos dois trabalhos

tambeacutem resolve o problema da validade da Regra 2 (ver seccedilatildeo 44) Entretanto

o tratamento de Adams e Dutreacute natildeo depende da renderizaccedilatildeo sendo portanto

mais portaacutevel Aleacutem disso uma desvantagem do meacutetodo de Pauly eacute o uso da

representaccedilatildeo impliacutecita MLS (ldquoMoving Least Squaresrdquo) do objeto para obter os

pontos exatamente na curva de interseccedilatildeo Esta representaccedilatildeo torna o

tratamento de interseccedilatildeo mais complexo e a vantagem apresentada natildeo eacute tatildeo

significativa para este tratamento de interseccedilatildeo

Conclusatildeo 71

7 Conclusatildeo

Concluiacutemos entatildeo que as escolhas de Adams e Dutreacute por usar uma

octree classificada e pelo tratamento dado agrave interseccedilatildeo satildeo mais abrangentes

que a escolha de Pauly E consideramos que quanto mais abrangente for uma

escolha conceitual mais resultados poderemos tirar dela No caso de Adams e

Dutreacute eles estendem o problema de classificar um ponto para classificar todo o

modelo Como foi citado ele quase fornece uma representaccedilatildeo volumeacutetrica do

modelo Esta aproximada representaccedilatildeo volumeacutetrica pode nos fornecer outras

informaccedilotildees como por exemplo o volume aproximado do modelo

Aleacutem disso o uso da representaccedilatildeo impliacutecita MLS no meacutetodo de Pauly cria

uma complexidade a mais para o meacutetodo sem apresentar vantagens para a

realizaccedilatildeo de operaccedilotildees booleanas que eacute o nosso enfoque

Logo podemos dizer que o meacutetodo de Adams e Dutreacute apresenta as

seguintes vantagens em relaccedilatildeo ao de Pauly

- a estrutura de octree classificada aleacutem de ser usada para classificaccedilatildeo

fornece informaccedilotildees adicionais como volume aproximado do objeto

- o tempo de processamento no meacutetodo de Adams e Dutreacute tende a ser

melhor que no meacutetodo de Pauly se implementadas as melhorias acima citadas e

se colocaacutessemos em consideraccedilatildeo o uso da representaccedilatildeo impliacutecita MLS

(Moving Least Squares)

- o tratamento de interseccedilatildeo de Adams e Dutreacute apresenta a vantagem da

portabilidade ou seja iraacute funcionar independente do algoritmo de renderizaccedilatildeo

utilizado

E as vantagens do meacutetodo de Pauly em relaccedilatildeo ao de Adams e Dutreacute

- a colocaccedilatildeo de surfels exatamente na curva de interseccedilatildeo

- a possibilidade de trabalhar com modelos soacutelidos ou natildeo soacutelidos

E finalizando concluiacutemos que o estudo relatado nesta dissertaccedilatildeo foi

importante por

- fornecer um breve estudo sobre modelagem por pontos uma nova e

promissora aacuterea dentro da computaccedilatildeo graacutefica

Conclusatildeo 72

- por apresentar uma avaliaccedilatildeo dos dois trabalhos existentes sobre

operaccedilotildees booleanas com pontos encontrando as vantagens de cada um

e levantando questotildees que natildeo tinham sido citadas nos trabalhos originais

- por propor e implementar melhorias ao trabalho de Adams e Dutreacute

71 Trabalhos Futuros

Nossa implementaccedilatildeo pode ser ainda evoluiacuteda com as propostas

apresentadas na seccedilatildeo 62 Como observamos o tempo de processamento do

algoritmo aqui implementado ainda pode ser melhorado com o uso do meacutetodo

TINN [19] - que foi proposto em Adams[2] - para otimizar a pesquisa do surfel

mais proacuteximo a um ponto que estaacute localizado na regiatildeo de um noacute que conteacutem

surfels Aleacutem disso o trabalho Simple and Efficient Trasversal Methods for

Quadtrees and Octrees de Sara F Frisken [12] citado no capiacutetulo 2 apresenta

uma otimizaccedilatildeo no uso de octrees Outra proposta para melhorar o tempo de

processamento do algoritmo aqui implementado eacute usar a forma de trabalhar com

octrees apresentada neste trabalho

O trabalho de Adams e Dutreacute [2] eacute aplicado apenas a objetos soacutelidos O

nosso plugin portanto aplica-se somente a este tipo de objeto Jaacute o trabalho de

Pauly[3] eacute aplicado tambeacutem a modelos natildeo soacutelidos Apresentamos como

proposta a um trabalho futuro a extensatildeo do algoritmo aqui implementado para

modelos natildeo soacutelidos O surfel pode conter uma informaccedilatildeo adicional que indica

se ele estaacute delimitando um volume ou natildeo Assim pode-se ter um modelo com

ldquopartes soacutelidasrdquo e ldquopartes natildeo soacutelidasrdquo Por exemplo a uniatildeo de um plano com

uma esfera poderia resultar numa esfera com ldquoabasrdquo (seriam as partes do plano

que estariam fora da esfera) O modelo resultado teria uma parte correspondente

a um espaccedilo 3D (esfera) e outra parte que seria uma superfiacutecie 2D posicionada

no espaccedilo 3D sem delimitar algum volume (abas)

Muitos trabalhos podem ser desenvolvidos aplicando-se o modelo por

pontos em animaccedilatildeo jogos visualizaccedilatildeo de terrenos criaccedilatildeo de protoacutetipos etc

considerando-se a eficiecircncia e simplicidade do modelo E mais especificamente

as operaccedilotildees booleanas com pontos podem ser aplicadas para criaccedilatildeo de

cenaacuterios testes de colisotildees e nestes casos a representaccedilatildeo usando octrees

pode ser mais explorada considerando-se o seu potencial de representaccedilatildeo

volumeacutetrica de um objeto

Referecircncias Bibliograacuteficas 73

8 Referecircncias Bibliograacuteficas

[1] MAumlNTYLAuml M An Introduction to Solid Modeling Computer Science Press 1988

[2] ADAMS B DUTREacute P Interactive Boolean Operations on Surfel-

Bounded Solids Proceedings of SIGGRAPH 2003 San Diego USA 2003

[3] PAULY M KEISER R KOBBELT L GROSS M Shape Modeling

with Point-Sampled Geometry SIGGRAPH 2003 Computer Graphics

Proceedings Annual Conference Series ACM Press ACM SIGGRAPH 2003

[4] LEVOY M WHITTED T The Use of Points as Display Primitives

Technical Report TR 85-022 The University of North Carolina at Chapel Hill

Department of Computer Science 1985

[5] PFISTER H ZWICKER M VAN BAAR J GROSS M 2000 Surfels

Surface Elements as Rendering Primitives SIGGRAPH 2000 pp 335ndash342 New

Orleans LA July 23-28 2000

[6] ZWICKER M PFISTER H VAN BAAR J GROSS M Surface

Splatting SIGGRAPH 2001

[7] PAULY M KOBBELT L GROSS M Multiresolution Modeling of

Point-Sampled Geometry CS Techinical Report 378 September 16 2002

[8] CURLESS B New Methods for Surface Reconstruction from Range Images PhD thesis Stanford University 1997

[9] RUSINKIEWICZ S Real-time Acquisition and Rendering of Large 3D Models PhD thesis Stanford University 2001

Referecircncias Bibliograacuteficas 74

[10] AMENTA N BERN M KAMVYSSELIS M A new Voronoi-Based

Surface Reconstruction Algorithm SIGGRAPH 98 Conference proceedings pp

415-421 New York 1998

[11] ZWICKER M PAULY M KNOLL O GROSS M Pointshop 3D an

Interactive System for Point-Based Surface Editing Proceedings of SIGGRAPH 2002 San Antonio TX July 2002

[12] FRISKEN S PERRY R Simple and Efficient Traversal Methods for

Quadtrees and Octrees Journal of Graphics Tools Vol 7 Issue 3 May 2003

[13] CORREcircA W T OLIVEIRA M M Silva C T Wang J

Modeling and Rendering of Real Environments

Revista de Informaacutetica Teoacuterica e Aplicada (Brazilian Journal of Theoretic and Applied Computing) 9(2)127-156 2002

[14] DAVIS J MARSCHNER S GARR M LEVOY M Filling Holes in

Complex Surfaces Using Volumetric Diffusion First International Symposium on 3D Data Processing Visualization Transmission June 2002

[15] RAumlSAumlNEN J Surface Splatting Theory Extensions and Implementation Masterrsquos Thesis Dept of Computer Science Helsinki

University of Technology May 28 2002

[16] PAULY M Point Primitives for Interactive Modeling and Processing of 3D Geometry PhD thesis Federal Institute of Technology (ETH)

of Zurich 2003

[17] HOPPE H DEROSE T DUCHAMP T MCDONALD J

STUELZLE W Surface Reconstruction from Unorganized Points Computer Graphics 26(2)71ndash78 July 1992

[18] ALEXA M BEHR J COHEN-OR D FLEISHMAN S LEVIN D

SILVA C T Point Set Surfaces IEEE Visualization 2001 pp 21ndash28 October

2001

Referecircncias Bibliograacuteficas 75

[19] GREENSPAN M GODIN G TALBOT J Acceleration of Binning

Nearest Neighbor Methods Proceedings of Vision Interface 2000 pp 337-

344

[20] MENCL R Reconstruction of Surfaces from Unorganized Three-Dimensional Point Clouds Dissertation Dortmund Univ 2001

[21] KRIVANEK J Representing and Rendering Surfaces With Points

httpciteseernjneccomkrivanek03representinghtml Acesso em 30 jul

2003

[22] KRISTJANSSON ET AL Approximate Boolean Operations on Free-

form Solids Proceedings of SIGGRAPH 01 2001

Modelagem por Pontos 28

pixel Num sentido inverso em splatting para um determinado surfel (que

representa a textura) satildeo encontrados os pixels da tela que este surfel afeta

38 Ediccedilatildeo do modelo

Ediccedilatildeo de um modelo 3D consiste em operaccedilotildees que modificam

caracteriacutesticas deste modelo como cor textura forma ou criam novos modelos

O software PointShop 3D [11] software de ediccedilatildeo de modelos por pontos 3D

implementa vaacuterias destas operaccedilotildees (ver seccedilatildeo 52)

Para modificar a forma de um modelo ou criar um novo satildeo muito usadas

as operaccedilotildees booleanas que eacute o nosso enfoque nesta dissertaccedilatildeo Na

modelagem CSG (Constructive Solid Geometry) as operaccedilotildees booleanas satildeo

usadas juntamente com primitivas soacutelidas para definir um modelo No entanto

em alguns tipos de modelos estas operaccedilotildees satildeo difiacuteceis como por exemplo

em malhas poligonais Com pontos elas podem ser feitas interativamente [32]

Operaccedilotildees Booleanas com Pontos 29

4 Operaccedilotildees Booleanas com Pontos

Operaccedilotildees booleanas satildeo as operaccedilotildees de uniatildeo interseccedilatildeo e diferenccedila

definidas na teoria matemaacutetica de conjuntos Estas operaccedilotildees satildeo aplicadas em

modelos soacutelidos para alteraacute-los ou para criar novos modelos A Figura 4 abaixo

mostra a criaccedilatildeo de trecircs novos modelos a partir de quatro modelos iniciais

Figura 4 [22] Trecircs modelos novos foram criados a partir dos quatro iniciais (esfera

cilindro dois cubos) O primeiro eacute a esfera menos um cubo em seguida retirou-se outro

cubo e por uacuteltimo retirou-se o cilindro

Estas operaccedilotildees satildeo aplicadas em objetos modelados por pontos em dois

trabalhos no trabalho de Bart Adams e Philip Dutreacute [2] e no trabalho de Pauly

et Al [3] Neste capiacutetulo a seccedilatildeo 41 apresenta a parte comum aos dois

trabalhos e as seccedilotildees 42 e 43 apresentam as particularidades de cada um A

seccedilatildeo 44 discute uma questatildeo natildeo explicitada em nenhum dos dois trabalhos

41 Meacutetodos para realizar operaccedilotildees booleanas em objetos modelados por pontos

A Figura 5 mostra o resultado do meacutetodo de Adams[2] operaccedilotildees de

uniatildeo diferenccedila e interseccedilatildeo de objetos soacutelidos 3D modelados por pontos

Operaccedilotildees Booleanas com Pontos 30

Figura 5 [2]-A partir de dois modelos por pontos uma heacutelice e uma cabeccedila as trecircs operaccedilotildees booleanas satildeo mostradas da esquerda para a direita uniatildeo diferenccedila e interseccedilatildeo

Sejam A e B objetos 3D soacutelidos modelados por pontos Definem-se os

seguintes elementos

Af ndash superfiacutecie (contorno) de A que estaacute fora de B

Ad ndash superfiacutecie (contorno) de A que estaacute dentro de B

Bf ndash superfiacutecie (contorno) de B que estaacute fora de A

Bd ndash superfiacutecie (contorno) de B que estaacute dentro de A

O resultado da operaccedilatildeo booleana entre A e B seraacute um modelo C cuja

superfiacutecie de contorno pode ser determinada pela seguinte regra [2] que aqui

chamamos de Regra 1

Regra 1 A U B Af + Bf

A cap B Ad + Bd

A ndash B Af + Bd (com a orientaccedilatildeo invertida)

B ndash A Ad (com a orientaccedilatildeo invertida) + Bf

A Figura 6 mostra as operaccedilotildees com dois modelos A e B

(a) (b)

Operaccedilotildees Booleanas com Pontos 31

(c) (d)

Figura 6 [22] (a) Dois modelos A e B (b) Posicionados de forma que A tem

uma parte dentro de B eacute mostrado o resultado A U B Af + Bf (c) Resultado de A ndash B Af

+ Bd (d) Resultado de A cap B Ad + Bd

Bart [2] e Pauly [3] apresentam dois meacutetodos para determinar os

elementos acima Estes dois meacutetodos satildeo construiacutedos a partir dos seguintes

conceitos os elementos Af Ad Bf Bd satildeo uma parte da superfiacutecie modelada por

pontos e portanto satildeo conjuntos de surfels Para determinaacute-los eacute necessaacuteria

entatildeo a classificaccedilatildeo de um surfel (que pode se resumir agrave classificaccedilatildeo de um

ponto que eacute o seu centro) de uma superfiacutecie como dentro ou fora de um outro

modelo Os dois meacutetodos utilizam a seguinte regra para esta classificaccedilatildeo aqui

denominada Regra 2

Regra 2 Dado um ponto x qualquer um volume V determinado por uma superfiacutecie

de contorno S uma amostragem P da superfiacutecie S um ponto p є P que eacute a

amostra mais proacutexima a x um vetor np normal agrave S em p e orientado para fora de

S temos que

(x ndash p) np gt 0 x notinV

Ou seja para classificar um ponto em relaccedilatildeo a um modelo verificamos o

produto interno entre a normal em p (surfel mais proacuteximo a x) e o vetor (x - p)

se este produto interno for maior que zero x natildeo pertence ao volume V e seraacute

classificado como fora senatildeo seraacute classificado como dentro De maneira

ainda mais informal se a normal em p apontar para a direccedilatildeo oposta a x x seraacute

classificado como dentro se apontar para x x seraacute classificado como fora

A Figura 7 mostra a Regra 2

Operaccedilotildees Booleanas com Pontos 32

Figura 7 Para classificar o ponto x encontra-se o surfel p (com normal np) mais proacuteximo

a x Se o produto interno entre np e (x ndash p) for maior que zero entatildeo x eacute classificado como

fora senatildeo seraacute classificado como dentro

A validade da Regra 2 eacute discutida na Seccedilatildeo 44 Uma das restriccedilotildees

teoacutericas para garantir-lhe a validade eacute que a superfiacutecie seja suave

Cada um dos dois meacutetodos daacute um tratamento diferente para o uso desta

regra Pauly usa a regra diretamente encontrando o surfel mais proacuteximo a um

ponto e classificando este ponto a partir deste surfel Ele utiliza tambeacutem a

representaccedilatildeo impliacutecita MLS (Moving Least Squares [18]) para casos em que a

Regra 2 poderia falhar e para tratamento de interseccedilotildees [3] Seu meacutetodo vale

para modelos soacutelidos ou natildeo soacutelidos O meacutetodo de Adams e Dutreacute [2] utiliza

octrees [1] criando uma classificaccedilatildeo dos noacutes da octree a partir desta Regra 2

Os pontos satildeo entatildeo classificados de acordo com o noacute da octree que o conteacutem

Este segundo meacutetodo aplica-se somente a modelos soacutelidos Os dois meacutetodos

seratildeo descritos em detalhes nas seccedilotildees abaixo

Como um surfel eacute considerado um disco podemos dizer que surfels de

dois modelos diferentes podem se intersectar A interseccedilatildeo destes dois surfels

corresponde agrave interseccedilatildeo destes dois discos Estes surfels geram problemas

para visualizaccedilatildeo se forem acrescentados ao resultado sem um tratamento

especiacutefico apresentaratildeo artefatos natildeo desejaacuteveis na renderizaccedilatildeo do modelo

resultado (Figura 8) se natildeo forem acrescentados ao resultado deixaratildeo buracos

no modelo

Operaccedilotildees Booleanas com Pontos 33

Figura 8 [2] -Interseccedilatildeo de duas esferas agrave esquerda sem nenhum tratamento de interseccedilatildeo agrave direita apoacutes o tratamento de interseccedilatildeo

Aleacutem disso nem sempre esta interseccedilatildeo forma uma superfiacutecie suave

Esta interseccedilatildeo pode formar uma aresta viva (seccedilatildeo 4223) gerando

problemas tambeacutem para o uso da Regra 2 que eacute vaacutelida apenas para superfiacutecies

suaves Eacute necessaacuterio entatildeo fazer um tratamento desta superfiacutecie de interseccedilatildeo

(formada por surfels originados de diferentes modelos) O tratamento de cada

um dos meacutetodos para este caso seraacute tambeacutem abaixo apresentado

42 Meacutetodo de Adams e Dutreacute

O meacutetodo aplica-se somente a modelos soacutelidos Para determinaccedilatildeo dos

elementos da aqui chamada Regra 1 (seccedilatildeo 41) este meacutetodo utiliza uma octree

[1] que subdivide o espaccedilo do modelo em trecircs fora dentro ou no contorno do

modelo Estes espaccedilos satildeo determinados pela classificaccedilatildeo dos noacutes da octree a

partir da Regra 2 Tambeacutem eacute usado o meacutetodo TINN - Triangle Inequality Nearest

Neighbour [19] - para otimizar a pesquisa dentro do noacute A seguir descrevemos o

modelo usado neste meacutetodo apresentando os dados associados aos pontos o

tipo de distribuiccedilatildeo e o algoritmo que realiza as operaccedilotildees

421 Modelo por Pontos em Adams e Dutreacute

Os surfels neste meacutetodo contecircm as seguintes informaccedilotildees posiccedilatildeo do

surfel xs orientaccedilatildeo do surfel ns e raio de alcance do surfel rs O surfel pode ser

pensado como um disco ortogonal a ns com centro xs e raio rs O raio eacute

escolhido de tal forma que a projeccedilatildeo dos discos no plano da imagem se

sobreponham

Operaccedilotildees Booleanas com Pontos 34

Os objetos representados satildeo soacutelidos A distribuiccedilatildeo dos surfels eacute

uniforme embora o algoritmo natildeo exija esta condiccedilatildeo Para cada soacutelido eacute

definido um rmax = Max rs o raio de alcance do maior surfel pertencente agrave

superfiacutecie do soacutelido Como o raio eacute escolhido de tal forma que a projeccedilatildeo dos

discos no plano da imagem se sobreponham o controle da amostragem eacute

entatildeo ligado agrave renderizaccedilatildeo

422 Algoritmo de Operaccedilotildees Booleanas

Utilizando objetos modelados da forma descrita acima o meacutetodo realiza

operaccedilotildees de uniatildeo interseccedilatildeo e diferenccedila com modelos soacutelidos Supondo dois

modelos soacutelidos S1 e S2 O algoritmo pode ser dividido nas seguintes etapas

Criaccedilatildeo de uma octree para cada modelo Teste Dentro-Fora Tratamento da

interseccedilatildeo Estas etapas satildeo apresentadas nas proacuteximas seccedilotildees

4221 Criaccedilatildeo de uma octree para cada modelo

Eacute criada uma octree [1] para cada modelo A criaccedilatildeo de uma octree eacute feita

da seguinte forma

Gera-se a ldquoCaixa envolventerdquo caixa alinhada com os eixos que conteacutem

todo o modelo A ldquoCaixa envolventerdquo corresponde ao noacute raiz da octree Este noacute

conteacutem inicialmente todos os surfels do modelo Em seguida o noacute raiz eacute

dividido em oito noacutes filhos Os surfels satildeo distribuiacutedos entre estes oito noacutes Cada

um deles caso contenha surfels eacute dividido novamente em 8 filhos e seus surfels

satildeo redistribuiacutedos entre eles Este processo eacute repetido recursivamente enquanto

o nuacutemero de surfels do noacute for maior que zero ou ateacute uma profundidade maacutexima

preacute-definida da octree ser alcanccedilada

Cada noacute da octree deve ser classificado O objetivo desta classificaccedilatildeo eacute

determinar que parte da octree estaacute dentro do modelo e que parte estaacute fora Os

noacutes da octree satildeo entatildeo classificados como ldquodentrordquo ldquoforardquo e ldquocontornordquo

Podemos ilustrar esta classificaccedilatildeo em 2D a Figura 9 mostra uma quadtree

classificada

Operaccedilotildees Booleanas com Pontos 35

Figura 9-Um objeto representado por pontos com suas normais e sua quadtree correspondente classificada os noacutes cinza claro estatildeo dentro do modelo noacutes cinza mais escuro estatildeo fora do modelo e noacutes com cinza intermediaacuterio satildeo noacutes cheios noacutes que conteacutem pontos

O noacutes que conteacutem surfels satildeo classificados como ldquocontornordquo Para

classificar um noacute vazio existem trecircs casos

o noacute vazio tem apenas um vizinho-irmatildeo natildeo vazio

o noacute vazio tem mais de um vizinho-irmatildeo natildeo vazio

o noacute vazio natildeo tem vizinhos-irmatildeos natildeo vazios

No primeiro caso o noacute vazio eacute classificado pelo seu vizinho natildeo vazio No

segundo caso considera-se qualquer um dos vizinhos natildeo vazios No terceiro

caso classifica-se primeiro os noacutes vizinhos e eacute dada a mesma classificaccedilatildeo para

o noacute vazio Como cada noacute natildeo folha de uma octree tem pelo menos um noacute filho

natildeo vazio sempre pode ser feita a classificaccedilatildeo dos noacutes vazios A classificaccedilatildeo

eacute feita da seguinte forma dentre os surfels do vizinho-irmatildeo escolhido encontra-

se o surfel mais proacuteximo ao noacute a ser classificado Se a normal deste surfel

aponta para o noacute vazio a ser classificado entatildeo ele eacute classificado como ldquoforardquo

Se a normal aponta no sentido contraacuterio entatildeo ele eacute classificado como ldquodentrordquo

De maneira mais formal sejam cv e cc coordenadas dos centros do noacute vazio e

do noacute contorno respectivamente Seja s o surfel mais proacuteximo ao noacute vazio e ns

a normal em s Se ( cv - cc )٠ ns gt 0 ( produto interno entre a normal em s e o

vetor cv - cc for maior que zero ) o noacute vazio seraacute classificado como ldquoforardquo

Senatildeo seraacute classificado como ldquodentrordquo

Em geral os noacutes ldquocontornordquo satildeo subdivididos em trecircs partes uma que estaacute

fora do modelo uma que estaacute dentro do modelo e uma terceira que conteacutem os

surfels Esta subdivisatildeo eacute feita por meio da criaccedilatildeo de dois planos paralelos que

Operaccedilotildees Booleanas com Pontos 36

dividem o noacute Para determinar estes planos calcula-se o vetor nm igual agrave

meacutedia das normais dos surfels do noacute nm = sum ns sum ns onde ns eacute a normal de

cada surfel do noacute

Em seguida encontra-se o surfel com maior produto interno entre a sua

normal e a normal meacutedia d1=Max(nm ٠ ns) Este surfel juntamente com a normal

meacutedia define um dos planos Encontra-se tambeacutem o surfel com menor produto

interno entre a sua normal e a normal meacutedia d2=Min(nm ٠ ns) Este surfel

juntamente com a normal meacutedia define o outro plano A Figura 10 mostra a

divisatildeo de um noacute de uma quadtree nas trecircs partes dentro do modelo fora do

modelo e no ldquocontornordquo

Esta subdivisatildeo aplica-se apenas a noacutes que conteacutem surfels cujas direccedilotildees

natildeo variem em mais de 90 graus Caso isso ocorra ele natildeo seraacute subdividido Ou

seja se um noacute possuir dois vetores normais (de dois surfels diferentes) que

formem um acircngulo maior que 90 graus ele natildeo seraacute subdividido

Figura 10 [2] -Divisatildeo de noacute de contorno a parte agrave esquerda estaacute fora do modelo a parte agrave direita estaacute dentro do modelo e a faixa intermediaacuteria conteacutem os surfels

4222 Teste Dentro-Fora

O Teste Dentro-Fora faz a classificaccedilatildeo dos surfels de um modelo como

ldquodentrordquo ou ldquoforardquo de outro modelo Portanto aplicaremos este mesmo teste duas

vezes uma para o modelo S1 em relaccedilatildeo ao modelo S2 e outra para S2 em

relaccedilatildeo a S1 Vamos mostrar o teste Dentro-Fora para o caso da classificaccedilatildeo

dos surfels do modelo S1 em relaccedilatildeo a S2

Operaccedilotildees Booleanas com Pontos 37

No item anterior foram criadas duas octrees uma para o modelo S1 e

outra para o modelo S2 Chamemos de A e B as octrees de S1 e S2

respectivamente Para classificar S1 em relaccedilatildeo a S2 inicialmente eacute feita uma

avaliaccedilatildeo da posiccedilatildeo de A em relaccedilatildeo a B A e B podem estar nas seguintes

situaccedilotildees

- A natildeo intersecta B

- A intersecta apenas noacutes ldquoforardquo de B

- A intersecta apenas noacutes ldquodentrordquo de B

- A intersecta noacutes ldquoforardquo e noacutes ldquodentrordquo de B

Para testar estas situaccedilotildees os noacutes satildeo aumentados de rmax o raio do

maior surfel do modelo soacutelido Isto eacute feito para compensar o fato de que o surfel

natildeo eacute apenas um ponto mas sim considerado como um disco

No primeiro e no segundo caso todos os surfels de A satildeo classificados

como ldquoforardquo No terceiro caso todos os surfels de A satildeo classificados como

ldquodentrordquo

No quarto caso temos que percorrer a octree A Comeccedilando pelo noacute raiz

percorre-se os filhos deste noacute Para cada filho os quatro testes acima satildeo feitos

Se o noacute filho encontra-se em um dos trecircs primeiros casos a classificaccedilatildeo eacute dada

como foi citada acima Se um filho estaacute no quarto caso e natildeo eacute um noacute folha

repete-se recursivamente o mesmo procedimento para seus filhos ateacute encontrar-

se um noacute folha Para um noacute que estaacute no quarto caso e eacute folha percorre-se a lista

de surfels que este noacute conteacutem classificando cada um destes surfels Seja sa um

surfel desta lista Para este caso percorre-se a octree B para classificar sa

Primeiramente encontramos o noacute de B que conteacutem sa Se este noacute de B foi

dividido testa-se de acordo com esta divisatildeo do noacute se o surfel sa estaacute na parte

do noacute que estaacute dentro do modelo ele eacute classificado como ldquodentrordquo se sa estaacute na

parte que estaacute fora do modelo ele eacute classificado como ldquoforardquo se sa estaacute na parte

intermediaacuteria ou se o noacute de B natildeo foi subdividido em planos encontra-se sb que

eacute o surfel pertencente a este noacute de B que estaacute mais proacuteximo de sa sa seraacute

entatildeo classificado de acordo com sb Se ( sa - sb )٠ nb gt 0 sa eacute classificado

como ldquoforardquo senatildeo eacute classificado como ldquodentrordquo Se os discos de sb e sa se

intersectam sa eacute marcado como interseccedilatildeo Para encontrar sb o algoritmo

implementa o meacutetodo TINN ndash Triangle Inequality Nearest Neighbour [19]

Operaccedilotildees Booleanas com Pontos 38

4223 Tratamento da interseccedilatildeo

Os surfels de A que intersectam surfels de B satildeo classificados como

ldquointerseccedilatildeordquo Se eles natildeo forem incluiacutedos no modelo resultado o soacutelido resultado

teraacute buracos Se eles forem incluiacutedos sem algum tratamento eles natildeo

representaratildeo adequadamente a regiatildeo Em geral o surfel sa (um surfel

ldquointerseccedilatildeordquo de A) eacute dividido em dois pelo plano que conteacutem o surfel sb (surfel de

B que sa intersecta) uma parte que estaacute fora de B e outra que estaacute dentro de B

Dependendo da operaccedilatildeo que estaacute sendo realizada vamos querer manter uma

destas partes do surfel sa no modelo resultado Seja xa a posiccedilatildeo do surfel sa e o

surfel sa uma circunferecircncia de centro xa e raio ra igual ao raio de alcance de sa

O plano que conteacutem o surfel sb define uma corda desta circunferecircncia como

mostra a Figura 11 O surfel sa seraacute substituiacutedo por um surfel menor que

ultrapassa esta corda de uma distacircncia e definida pelo usuaacuterio Para cobrir

completamente a interseccedilatildeo seratildeo adicionados surfels menores que cruzam a

corda de interseccedilatildeo

Figura 11 -Interseccedilatildeo do surfel s e do plano que passa pelo surfel t o surfel mais proacuteximo a s O surfel s eacute substituiacutedo por trecircs surfels menores

Operaccedilotildees Booleanas com Pontos 39

O tratamento de interseccedilatildeo proposto por Adams e Dutreacute [2] natildeo soacute evita

os buracos mas tambeacutem cria uma forma de renderizaccedilatildeo de arestas vivas A

colocaccedilatildeo de vaacuterios pequenos surfels na regiatildeo da interseccedilatildeo permite esta

correta renderizaccedilatildeo das ldquoarestas vivasrdquo Desta forma o problema das arestas

vivas eacute resolvido na modelagem (Figura 12) A vantagem de se resolver o caso

na modelagem eacute que natildeo eacute necessaacuterio fazer um tratamento especial na

renderizaccedilatildeo para que mostre esta aresta viva Diferente do tratamento feito

em Pauly (seccedilatildeo 431) que resolve esta questatildeo em tempo de renderizaccedilatildeo

Aleacutem disso o tratamento resolve alguns casos onde a Regra 2 poderia falhar

(veja em Validade da Regra 2-seccedilatildeo 44)

Figura 12 [2] -Agrave direita eacute mostrado o resultado do tratamento de interseccedilatildeo para o caso de Arestas Vivas do objeto agrave esquerda

43 Meacutetodo de Pauly

O meacutetodo aplica-se a objetos soacutelidos e natildeo soacutelidos Os modelos podem ser

obtidos a partir de diferentes entradas como nuvem de pontos irregulares ou por

meio de scanners 3D Cria um modelo hiacutebrido destes objetos usa o modelo por

pontos juntamente com a representaccedilatildeo impliacutecita Moving Least Squares - MLS

[18] Realiza operaccedilotildees booleanas com pontos e utiliza adicionalmente MLS

para alguns casos de classificaccedilatildeo de surfels e no tratamento de interseccedilatildeo A

seguir apresentamos as caracteriacutesticas do modelo por pontos deste meacutetodo e o

algoritmo que realiza as operaccedilotildees

Operaccedilotildees Booleanas com Pontos 40

431 Modelo em Pauly

O modelo eacute uma estrutura hiacutebrida de pontos com a representaccedilatildeo impliacutecita

Moving Least Squares - MLS [18] Esta estrutura eacute usada para fazer operaccedilotildees

booleanas e tambeacutem operaccedilotildees de free-form (natildeo abordadas nesta

dissertaccedilatildeo) Para operaccedilotildees booleanas a representaccedilatildeo MLS permite que a

curva de interseccedilatildeo entre os modelos seja reconstruiacuteda e surfels sejam

colocados nesta curva e em alguns casos de classificaccedilatildeo de surfels mostrados

na seccedilatildeo 432 Para este modelo natildeo existem restriccedilotildees quanto agrave forma do

objeto

Os surfels contecircm informaccedilotildees sobre sua posiccedilatildeo e sua normal Aleacutem

disso surfels podem conter informaccedilotildees adicionais como textura cor

propriedades de materiais

A distribuiccedilatildeo dos surfels eacute natildeo-uniforme e a amostragem eacute

aproximadamente adequada (Veja seccedilatildeo 44)

432 Algoritmo de Operaccedilotildees Booleanas

O algoritmo classifica surfels de um modelo como ldquodentrordquo ou ldquoforardquo de

outro modelo Antes de colocarmos como eacute feita esta classificaccedilatildeo devemos

acrescentar que Pauly estende esta classificaccedilatildeo para modelos que natildeo satildeo

soacutelidos Ou seja mesmo um modelo natildeo soacutelido divide o espaccedilo da cena (espaccedilo

em que se encontra o modelo) em dois sub-espaccedilos dentro ou fora do modelo

Pauly faz esta subdivisatildeo da seguinte forma

Como a superfiacutecie que determina o modelo eacute orientada (conteacutem vetores

normais agrave superfiacutecie que apontam para ldquoforardquo do modelo) Pauly considera que

um modelo natildeo soacutelido divide o espaccedilo em dois sub-espaccedilos um ldquoforardquo do

modelo (os vetores normais apontam para este sub-espaccedilo) e um que estaacute

ldquodentrordquo do modelo (os vetores normais apontam para direccedilatildeo oposta a este sub-

espaccedilo) Por exemplo um plano eacute representado como um conjunto de surfels

contidos num determinado espaccedilo geomeacutetrico plano π Cada surfel conteacutem um

vetor normal direcionado Este modelo divide entatildeo o espaccedilo em dois sub-

espaccedilos o sub-espaccedilo que eacute apontado por estes surfels (considerado ldquoforardquo do

modelo) e o sub-espaccedilo que estaacute na direccedilatildeo oposta (considerado ldquodentrordquo do

modelo) Desta forma ele aplica as classificaccedilotildees de ldquodentrordquo e ldquoforardquo de um

modelo tambeacutem a modelos natildeo soacutelidos A partir desta consideraccedilatildeo as

Operaccedilotildees Booleanas com Pontos 41

operaccedilotildees booleanas satildeo realizadas com os modelos natildeo soacutelidos da mesma

forma que com os modelos soacutelidos

Para determinar esta classificaccedilatildeo (dentro ou fora do modelo) Pauly utiliza

a Regra 2 Para pesquisa do surfel mais proacuteximo o meacutetodo usa a estrutura Kd-

tree [16] e tambeacutem o algoritmo ANN [16] No entanto o meacutetodo apresenta uma

restriccedilatildeo da Regra 2 ela soacute deve ser usada para classificaccedilotildees de pontos x se

a distacircncia x-p for maior que o espaccedilamento da amostragem local ηp em p

Este espaccedilamento da amostragem local ηp em p eacute um caacutelculo aproximado da

distacircncia meacutedia entre os surfels vizinhos a p Se x estaacute muito proacuteximo agrave

superfiacutecie a classificaccedilatildeo pode falhar Neste caso ele calcula o ponto exato de

S mais proacuteximo a x usando a projeccedilatildeo MLS (ldquoMoving Least Squaresrdquo)

Por questotildees de melhoria de desempenho utiliza-se o fato de que sendo

Ωp (x) a classificaccedilatildeo do ponto x em relaccedilatildeo agrave amostragem P tem-se que Ωp (x)

= Ωp (xrsquo) para todos os pontos de xrsquo que estatildeo dentro da esfera de centro x e

raio igual a x-p - ηp (onde p eacute o surfel mais proacuteximo e ηp eacute o espaccedilamento

local da amostragem em p acima citado) Ou seja sendo x um ponto qualquer p

o surfel mais proacuteximo a x ηp eacute o espaccedilamento local da amostragem em p se

desenharmos uma esfera com centro x e raio igual a x-p - ηp temos que

todos os pontos xrsquo que estatildeo dentro da esfera teratildeo a mesma classificaccedilatildeo de x

Desta forma o nuacutemero de vezes que a classificaccedilatildeo eacute feita (pesquisando-se o

surfel mais proacuteximo ao ponto e usando a Regra 2) diminui em ateacute 90 Assim

em geral a classificaccedilatildeo de um surfel eacute obtida a partir do seu surfel vizinho

Dados

S1 a superfiacutecie MLS de contorno que define o modelo A

S2 a superfiacutecie MLS de contorno que define o modelo B

P1 o conjunto de surfels que representa a superfiacutecie S1

P2 o conjunto de surfels que representa a superfiacutecie S2

Ωp1 (x) a classificaccedilatildeo do ponto p em relaccedilatildeo a uma amostragem P1

Q1 o subconjunto de P1 que vai compor o resultado

Ωp2 (x) a classificaccedilatildeo do ponto p em relaccedilatildeo a uma amostragem P2

Q2 o subconjunto de P2 que vai compor o resultado

Os conjuntos Q1 e Q2 satildeo obtidos por meio da Tabela 1 mostrada abaixo

Operaccedilotildees Booleanas com Pontos 42

Tabela 1 Classificaccedilatildeo para operaccedilotildees booleanas

Para o tratamento de interseccedilatildeo neste meacutetodo satildeo computados pontos

que caem exatamente na curva de interseccedilatildeo e estes satildeo acrescentados ao

modelo resultado Estes pontos satildeo determinados de forma que a densidade da

amostragem vai crescendo agrave medida que os surfels se aproximam da curva de

interseccedilatildeo e convergem para este ponto de interseccedilatildeo como mostra a Figura

13

(a) (b) (c)

Figura 13 - Os novos surfels satildeo colocados exatamente na curva de interseccedilatildeo

e convergem para o ponto de interseccedilatildeo

A Figura 14 mostra o processo de encontrar os surfels que caem nesta

curva de interseccedilatildeo Inicialmente satildeo encontrados todos os pontos de Q1 e Q2

que estatildeo proacuteximos agrave curva de interseccedilatildeo por meio da funccedilatildeo de distacircncia do

operador de projeccedilatildeo MLS Em seguida procura-se todos os pares mais

proacuteximos (q1 є Q1 q2 є Q2 ) e computa-se o ponto q na curva de interseccedilatildeo da

seguinte forma (veja a Figura 14)Seja r o ponto na linha de interseccedilatildeo dos dois

planos tangentes em q1 e q2 e que estaacute mais proacuteximo a estes dois pontos isto eacute

que minimiza a distacircncia ||r-q1|| + ||r-q2|| r eacute a primeira aproximaccedilatildeo de q e agora

pode ser projetado sobre S1 e S2 para obter dois novos pontos de partida q1rsquo e q2

rsquo

para a iteraccedilatildeo Este procedimento pode ser repetido iterativamente ateacute que os

pontos q1 e q2 convirjam ao ponto q na curva de interseccedilatildeo Normalmente este

processo requer menos de trecircs iteraccedilotildees

Operaccedilotildees Booleanas com Pontos 43

(a) (b)

(c)

Figura 14 (a) Suponhamos a reta que eacute a interseccedilatildeo do plano tangente a S1 em q1 e o

plano tangente a S2 em q2 O ponto r eacute o ponto desta reta que estaacute mais proacuteximo a q1 e

q2 (b) r eacute projetado sobre S1 e S2 obtendo-se q1acute e q2acute dois novos pontos de partida

para nova iteraccedilatildeo (c) A nova iteraccedilatildeo gera r que eacute uma aproximaccedilatildeo melhor de q

Pauly faz o tratamento de arestas vivas em tempo de renderizaccedilatildeo Ele

faz uma alteraccedilatildeo no renderizador Marca os surfels de interseccedilatildeo e ao

renderizaacute-los satildeo cortados para gerar uma aresta viva

44 Validade da Regra 2

Os dois meacutetodos analisados nesta dissertaccedilatildeo utilizam a seguinte regra

para a classificaccedilatildeo de um surfel

Regra 2 dado um volume V determinado por uma superfiacutecie de contorno

S uma amostragem P da superfiacutecie S um ponto x qualquer um ponto p є P que

eacute a amostra mais proacutexima a x um vetor ny normal a S em p e orientado para

fora de S temos que (x ndash p) np gt 0 x notinV

Em [16] eacute colocado que esta regra eacute tirada da seguinte propriedade da

geometria diferencial (aqui chamada Propriedade 1)

Propriedade 1 Dado um volume V determinado por uma superfiacutecie de

contorno S contiacutenua e duplamente diferenciaacutevel um ponto x qualquer um ponto

Operaccedilotildees Booleanas com Pontos 44

y є S que eacute o ponto de S mais proacuteximo a x um vetor ny normal a S em y e

orientado para fora de S temos que (x ndash y) ny gt 0 x notinV

A Figura 15 ilustra esta propriedade

Figura 15 Para verificar se o ponto x estaacute fora de um contorno C encontra-se o ponto y

de C Se o produto interno entre a normal em y e o vetor que liga y a x for maior que

zero entatildeo x estaacute fora de C senatildeo estaacute dentro de C

Pauly assume que tendo uma amostragem P da superfiacutecie S podemos

usar a Propriedade 1 substituindo y por p o surfel mais proacuteximo ao ponto x (x ndash

p) np gt 0 x notinV (Regra 2) Esta amostragem P em seu trabalho eacute

(aproximadamente) uma ldquoamostragem adequadardquo Tambeacutem seu tratamento de

interseccedilatildeo cria uma aproximaccedilatildeo dela (seccedilatildeo 43) Empiricamente a

ldquodiscretizaccedilatildeo da propriedaderdquo eacute vaacutelida a partir desta suposiccedilatildeo Mas isso natildeo foi

demonstrado teoricamente em seu trabalho

Pauly coloca em [16] que natildeo existe ainda uma teoria matemaacutetica rigorosa

de amostragem anaacuteloga a teoria de Fourier para superfiacutecies discretas

A melhor aproximaccedilatildeo teoacuterica para esta aacuterea eacute o uso do Eixo Medial que

foi colocado em [10] Vamos descrever este trabalho brevemente nesta seccedilatildeo

Este trabalho apresenta um algoritmo de reconstruccedilatildeo de superfiacutecie que parte de

uma amostragem adequada (abaixo definida) de pontos e obteacutem uma malha

que eacute topologicamente equivalente agrave superfiacutecie do objeto e agrave medida que a

densidade da amostragem cresce a saiacuteda converge para esta superfiacutecie

Para definir amostragem adequada o trabalho parte do conceito de Eixo

Medial

Operaccedilotildees Booleanas com Pontos 45

ldquoEixo Medialrdquo de uma superfiacutecie 2D posicionada no R3 eacute o conjunto

(fechado) de pontos pi para os quais buscando-se o ponto da superfiacutecie que

estaacute mais proacuteximo a pi mais de um ponto pertencentes a esta superfiacutecie satildeo

encontrados A Figura 16 abaixo ilustra o Eixo Medial em 2D

Figura 16 [10] As curvas de cor mais clara satildeo o Eixo Medial da curva em preto

Em duas dimensotildees os veacutertices de Voronoi de uma amostragem densa

aproximam o ldquoEixo Medialrdquo da amostragem (mas esta propriedade natildeo se

estende a 3D) A Figura 17 mostra o Eixo Medial em 3D

Figura 17 [10] Em 3D geralmente o Eixo Medial eacute uma superfiacutecie 2D (em cor mais

clara) Aqui o quadrado eacute o Eixo Medial da superfiacutecie transparente que o contorna

Podemos definir agora a amostragem adequada da seguinte forma

Supondo uma superfiacutecie suave que quer dizer uma 2-manifold duplamente

diferenciaacutevel posicionada no R3 uma ldquoamostragem adequadardquo desta superfiacutecie eacute

aquela na qual a densidade da amostragem eacute (pelo menos) inversamente

proporcional agrave distacircncia ao ldquoEixo Medialrdquo A Figura 18 mostra uma amostragem

adequada

Operaccedilotildees Booleanas com Pontos 46

Figura 18 [10] A figura mostra o diagrama de Voronoi de uma amostragem de pontos S

Da mesma forma que o a amostragem aproxima a curva os veacutertices de Voronoi

aproximam o Eixo Medial

Na praacutetica na reconstruccedilatildeo da superfiacutecie uma aproximaccedilatildeo deste ldquoEixo

Medialrdquo eacute computada (devido agrave dificuldade de computaacute-lo exatamente e em

alguns casos ateacute impossibilidade)

Melhorias Propostas 47

5 Melhorias Propostas

No capiacutetulo 4 apresentamos dois meacutetodos que realizam operaccedilotildees

booleanas em modelos por pontos o meacutetodo de Adams e Dutreacute [2] e o meacutetodo

de Pauly[3] Para esta dissertaccedilatildeo usamos o meacutetodo de Adams e Dutreacute [2] e

propomos as seguintes melhorias

- Alteramos o momento em que eacute feita a classificaccedilatildeo da octree Fazemos

esta classificaccedilatildeo durante a sua criaccedilatildeo Os noacutes filhos de um noacute pai P qualquer

satildeo classificados logo apoacutes a criaccedilatildeo de todos estes filhos de P

independentemente do restante da octree ter sido criada Isso pode ser feito

porque a octree eacute construiacuteda na ordem raiz-esquerda-direita (preorder

traversal) e portanto apoacutes todos os filhos de um noacute pai serem criados a parte

necessaacuteria da octree para a classificaccedilatildeo destes filhos jaacute estaacute criada

- A classificaccedilatildeo da octree eacute otimizada classificando-se os cantos dos seus

noacutes como dentro ou fora do modelo Na classificaccedilatildeo de um noacute n1 a partir de seu

vizinho n2 se os cantos que satildeo comuns a n1 e n2 tiverem a mesma

classificaccedilatildeo esta seraacute dada ao noacute Assim diminuiacutemos o nuacutemero de pesquisas

pelo surfel mais proacuteximo que eacute a parte criacutetica da classificaccedilatildeo dos noacutes da octree

em termos de tempo de processamento

- Acrescentamos um valor miacutenimo (maior que zero) para o nuacutemero de

surfels contidos em um noacute que eacute uma das condiccedilotildees de parada na criaccedilatildeo da

octree Verificamos que desta forma diminui-se a chance de erro na classificaccedilatildeo

de partes criacuteticas como ldquoarestas vivasrdquo

Uma comparaccedilatildeo entre a nossa implementaccedilatildeo e a de Pauly tambeacutem seraacute

feita no capiacutetulo 6

51 Descriccedilatildeo do algoritmo

O algoritmo implementado para esta dissertaccedilatildeo baseado no meacutetodo de

Adams e Dutreacute [2] pode ser dividido nas seguintes partes Criaccedilatildeo e

classificaccedilatildeo de uma octree para cada modelo Teste DentroFora Criaccedilatildeo do

modelo resultado Natildeo foi implementado tratamento especial algum de

interseccedilatildeo para o nosso plugin As proacuteximas seccedilotildees apresentam estas partes

Melhorias Propostas 48

511 Criaccedilatildeo e classificaccedilatildeo de uma octree para cada modelo

As ideacuteias do algoritmo satildeo aqui ilustradas em 2D mas a extensatildeo delas

para 3D eacute feita facilmente

Para cada modelo a octree eacute criada e classificada da seguinte forma

Figura 19-Quadtree classificada Os noacutes mais escuros estatildeo fora do modelo os mais claros dentro e os em tom intermediaacuterio satildeo noacutes de contorno

Gera-se uma ldquocaixa envolventerdquo do modelo contendo todos os surfels e

cria-se o noacute raiz da octree que corresponde a esta ldquocaixa envolventerdquo Este noacute

raiz eacute subdividido em oito filhos e seus surfels satildeo distribuiacutedos entre eles Ao

inveacutes de testarmos os valores de xy e z para cada surfel a fim de determinar

para qual filho ele iraacute utilizamos listas auxiliares Primeiro os surfels satildeo

subdivididos em dois grupos pelos valores de x e armazenados em uma lista

auxiliar Em seguida cada uma das listas eacute subdividida pelo valor de y e as

quatro listas obtidas seratildeo subdivididas pelo valor de z Ao final teremos 8 listas

de surfels cada uma delas pertencente a um filho

Cada noacute seraacute entatildeo novamente subdividido enquanto contiver um nuacutemero

de surfels gt nmin (valor preacute-definido) ou enquanto a profundidade da aacutervore lt pmax

(valor preacute-definido) Na figura 19 pmax = 3 e nmin = 3

Melhorias Propostas 49

Figura 20-O noacute cheio eacute dividido em trecircs partes agrave esquerda a regiatildeo estaacute dentro do modelo agrave direita estaacute fora e entre as duas linhas que dividem o noacute estaacute a regiatildeo que conteacutem os surfels

Os noacutes cheios recebem um tratamento especial Eles satildeo subdivididos em

trecircs partes da seguinte forma uma que estaacute fora do modelo outra que estaacute

dentro e uma que conteacutem os surfels Esta subdivisatildeo eacute feita por meio da criaccedilatildeo

de dois planos paralelos que dividem o noacute Para determinar estes planos

calcula-se o vetor nm igual agrave meacutedia das normais dos surfels do noacute nm = sum ns

sum ns onde ns eacute a normal de cada surfel do noacute Em seguida encontra-se o

surfel com maior produto interno entre a sua normal e a normal meacutedia

d1=Max(nm ٠ ns) Este surfel juntamente com a normal meacutedia define um dos

planos Encontra-se tambeacutem o surfel com menor produto interno entre a sua

normal e a normal meacutedia d2=Min (nm ٠ ns) Este surfel juntamente com a normal

meacutedia define o outro plano (Figura 20) Se o noacute conteacutem surfels de superfiacutecies de

orientaccedilotildees diferentes ele natildeo seraacute subdividido ou seja os planos coincidiratildeo

com os planos que delimitam o proacuteprio noacute Este teste foi implementado da

seguinte forma escolhe-se um surfel qualquer do noacute Calcula-se o produto

interno entre a normal deste surfel e as outras normais dos outros surfels deste

noacute Se algum produto interno for menor que zero este noacute natildeo seraacute subdividido

Apoacutes a etapa de subdivisatildeo classificam-se os oito cantos deste noacute como

dentro ou fora do modelo por meio da classificaccedilatildeo de um ponto que

descreveremos na sub-seccedilatildeo 5111

Melhorias Propostas 50

a b

c d

Figura 21-O noacute a eacute classificado pelo noacute c o noacute d tambeacutem eacute classificado pelo noacute c a classificaccedilatildeo do noacute a eacute propagada para o noacute b

Jaacute os noacutes vazios da octree seratildeo classificados como ldquodentrordquo ou ldquoforardquo do

modelo da seguinte forma cada noacute folha vazio eacute classificado a partir de um de

seus irmatildeos vizinhos adjacentes Se ele possuir um vizinho adjacente cheio ele

seraacute classificado por este vizinho se natildeo possuir os vizinhos adjacentes seratildeo

classificados primeiro e ele teraacute esta mesma classificaccedilatildeo (Figura 21) Como tem

que existir sempre pelo menos um noacute cheio entre os filhos de um noacute pai entatildeo

sempre esta classificaccedilatildeo poderaacute ser feita Com a classificaccedilatildeo de todos os

filhos tem-se tambeacutem a classificaccedilatildeo dos cantos do noacute pai

Mf03c003fmx a b

Figura 22-Os cantos a e b do noacute cheio possuem a mesma classificaccedilatildeo fora do modelo Esta classificaccedilatildeo foi dada ao noacute vazio adjacente

Melhorias Propostas 51

Para classificar um noacute vazio por meio de um noacute cheio verificam-se os

cantos comuns destes dois noacutes se todos os cantos tiverem a mesma

classificaccedilatildeo esta seraacute dada ao noacute vazio (Figura 22) Se houver classificaccedilotildees

diferentes escolhe-se o surfel do noacute cheio mais proacuteximo ao noacute vazio faz-se o

produto interno entre a normal deste surfel e o vetor que liga o centro do noacute

cheio ao centro do noacute vazio (ou o vetor que liga o surfel ao centro do noacute vazio)

Se o produto interno for maior que zero o noacute eacute classificado como ldquoforardquo senatildeo eacute

classificado como ldquodentrordquo Para encontrar o surfel (pertencente a um noacute cheio)

mais proacuteximo ao noacute vazio existem dois casos

- O noacute cheio eacute folha percorre-se toda a lista de surfels e escolhe o surfel

mais proacuteximo da fronteira entre o noacute cheio e o vazio

- O noacute cheio natildeo eacute um noacute folha percorrem-se os filhos do noacute cheio ou seja

esta pesquisa eacute feita descendo na octree a partir do noacute cheio procurando o

surfel mais proacuteximo agrave fronteira do pai com o noacute vazio a ser classificado

Classificando o centro do noacute vazio todo o noacute deve ter a mesma

classificaccedilatildeo pois este noacute natildeo conteacutem surfels Para encontrar o surfel do noacute

vazio mais proacuteximo da fronteira entre o noacute cheio e o vazio basta testar o valor da

coordenada se a fronteira eacute o lado direito do noacute cheio escolhe-se o surfel com

maior coordenada lsquoxrsquo se eacute o lado esquerdo escolhe-se o surfel com menor lsquoxrsquo

se lado superior surfel com maior lsquoyrsquo etc A seguir apresentamos a classificaccedilatildeo

de um ponto qualquer pertencente a um noacute cheio

Figura 23- Quadtree classificada

Melhorias Propostas 52

5111 Classificaccedilatildeo de um ponto de um noacute cheio

Figura 24 [2] A normal n eacute a normal meacutedia e os surfels s1 e s2 juntamente com a normal

n definem as retas que dividem o noacute O ponto a estaacute fora do modelo e o ponto b estaacute

dentro do modelo

Para um ponto localizado dentro do noacute faz-se o seguinte teste se o noacute foi

dividido testa-se de acordo com a divisatildeo do noacute se o ponto estaacute na parte do noacute

que estaacute dentro do modelo ele eacute classificado como ldquodentrordquo se o ponto estaacute na

parte que estaacute fora do modelo ele eacute classificado como ldquoforardquo (Figura 24) se o

ponto estaacute na parte que conteacutem os surfels encontra-se o surfel s pertencente ao

noacute mais proacuteximo do ponto e o classifica de acordo com s seja ns a normal em s

cs a coordenada de s cp a coordenada do ponto Se (cp - cs )٠ ns gt 0 o ponto

seraacute classificado como ldquoforardquo Senatildeo seraacute classificado como ldquodentrordquo

Se o noacute natildeo foi dividido em planos esta classificaccedilatildeo a partir do surfel

mais proacuteximo seraacute sempre feita

512 Teste DentroFora

Melhorias Propostas 53

Figura 25-Duas circunferecircncias e suas quadtrees correspondentes

O Teste DentroFora classifica os surfels de um modelo como dentro ou

fora de outro modelo ou na sua interseccedilatildeo Este teste foi aqui implementado

exatamente como foi proposto em Adams e Dutreacute [2] exceto que natildeo foi

implementado o meacutetodo TINN - Triangle Inequality Nearest Neighbour [19]

Cada octree eacute percorrida verificando-se se os seus noacutes ou surfels estatildeo dentro

fora ou no contorno do outro modelo (Figura 25) Sejam A e B duas octrees e

queremos classificar a octree A As duas octrees (AB) satildeo percorridas partindo

da raiz

Para cada noacute de A existem quatro casos (Figura 26) Para testar estas

situaccedilotildees os boxes dos noacutes satildeo aumentados de rmax o raio do maior surfel do

modelo Isto eacute feito para compensar o fato de que o surfel natildeo eacute apenas um

ponto mas sim considerado como um disco

Os quatro casos satildeo

Se o noacute de A natildeo intersecta B entatildeo todos os surfels deste noacute satildeo

classificados como fora

Se o noacute de A intersecta apenas noacutes de B que estatildeo fora do modelo

todos os surfels deste noacute satildeo fora

Se o noacute de A intersecta apenas noacutes de B que estatildeo dentro do modelo

todos os surfels deste noacute satildeo dentro

Melhorias Propostas 54

Se o noacute de A intersecta noacutes de B que estatildeo dentro e tambeacutem noacutes de B

que estatildeo fora testa-se se este noacute de A eacute ou natildeo folha Se natildeo for folha

percorre-se os filhos deste noacute de A ateacute encontrar um noacute folha cheio que

intersecta B Para cada surfel sa deste noacute folha de A encontra-se o surfel de B

mais proacuteximo e classifica-se a coordenada de sa da forma apresentada na seccedilatildeo

5111 Seja sb o surfel usado na classificaccedilatildeo de sa Se os discos de sb e sa

se intersectam sa eacute classificado como ldquointerseccedilatildeordquo

(a) (b)

(c) (d)

Figura 26- a modelos natildeo se intersectam b modelo intersecta noacutes fora c modelo intersecta apenas noacutes dentro d modelo intersecta noacutes dentro e noacutes fora

513 Criaccedilatildeo do modelo resultado

Um novo modelo eacute criado com os seguintes surfels (de acordo com a

operaccedilatildeo booleana escolhida pelo usuaacuterio - veja Regra 1 da seccedilatildeo 41)

Uniatildeo - surfels de A que estatildeo fora de B + surfels de B que estatildeo fora de A

Melhorias Propostas 55

Interseccedilatildeo - surfels de A que estatildeo dentro de B + surfels de B que estatildeo

dentro de A

Diferenccedila A-B - surfels de A que estatildeo fora de B + surfels de B que estatildeo

dentro de A (com orientaccedilatildeo invertida)

Como natildeo foi implementado tratamento especial algum de interseccedilatildeo para

o nosso plugin os surfels que se intersectam satildeo mantidos no modelo resultado

final sem modificaccedilotildees

Descrito o algoritmo vejamos a seguir a sua implementaccedilatildeo

52 Implementaccedilatildeo

Este algoritmo foi implementado na forma de um plugin para o software

PointShop 3D [11] Este plugin foi desenvolvido na linguagem C e no sistema

operacional Windows

A escolha deste tipo de implementaccedilatildeo permitiu-nos usar o software

PointShop para os testes do algoritmo Estes testes foram feitos com os modelos

disponibilizados para o PointShop [11] Nesta seccedilatildeo apresentaremos o software

PointShop e as principais estruturas de dados usadas em nosso plugin

O Pointshop eacute um software aberto com seu coacutedigo disponiacutevel e preparado

para trabalhar com plugins Eacute um software de ediccedilatildeo de modelos 3D por pontos

Ele permite aleacutem de visualizar o modelo alterar as suas caracteriacutesticas como

cor brilho e fazer mapeamento de textura iluminaccedilatildeo filtragem (Figura 27)

Melhorias Propostas 56

Figura 27-Software PointShop 3D com dois modelos carregados na sua cena

Aleacutem disso pode-se criar uma cena com vaacuterios modelos e visualizaacute-los de

qualquer ponto de vista Implementa o virtual trackball para rotacionaacute-los e

transladaacute-los Usa uma iluminaccedilatildeo simples direcional A sua arquitetura eacute

extensiacutevel permite que o usuaacuterio adicione seus proacuteprios componentes ao

sistema Possui trecircs tipos de componentes

ldquoToolsrdquo fornece funcionalidades para ediccedilatildeo interativa de superfiacutecie Satildeo

disponibilizados na ldquotoolbarrdquo

Plugins fornece funcionalidades para processar em um soacute passo

modelos ou partes deles selecionadas Satildeo disponibilizados no menu ldquoPluginsrdquo

Renderes fornece funcionalidades de display para os modelos

Para esta dissertaccedilatildeo foi escolhida a construccedilatildeo do componente Plugin

por adequar-se agrave nossa proposta e ser a mais simples de ser construiacuteda O

PointShop [11] jaacute conteacutem uma tool que executa operaccedilotildees booleanas e

deformaccedilatildeo free-form sobre os modelos carregados na cena usando o meacutetodo

de Pauly [3] apresentado no capiacutetulo 4 O nosso plugin Operaccedilotildees Booleanas

implementa o algoritmo descrito na seccedilatildeo anterior baseado na proposta de

Melhorias Propostas 57

Adams e Dutreacute [2] Uma comparaccedilatildeo entre o nosso plugin e a tool de Pauly [3] eacute

feita no capiacutetulo 6

Figura 28-Menu do PointShop com o plugin e as opccedilotildees para operaccedilotildees booleanas

Para se executar o plugin o usuaacuterio precisa carregar dois modelos na

cena do PointShop acionar o plugin informando a operaccedilatildeo que seraacute executada

O plugin executaraacute o algoritmo acima proposto e carregaraacute o resultado na cena

do Pointshop retirando os modelos anteriores

521 Estruturas de Dados

Como vimos o software PointShop [11] trabalha com modelos por pontos

Um modelo deste software descrito na seccedilatildeo 42 conteacutem todas as informaccedilotildees

que o algoritmo proposto em Bart [2] necessita Abaixo relacionamos as

Melhorias Propostas 58

principais estruturas de dados do PointShop usadas no plugin e as principais

estruturas de dados do nosso plugin

As principais classes do PointShop usadas no plugin satildeo

Classe Scene

Classe Objects

Classe SurfelColections

Classe Surfel

Classe StatusBar

Classe Transformer

A hierarquia de dados eacute a seguinte a Scene conteacutem vaacuterios Objects os

quais conteacutem SurfelColections Cada SurfelColections conteacutem Surfels que

suportam uma ou mais propriedades tais como cor difusa cor especular

Classe Scene Classe que representa uma cena que conteacutem modelos

Classe Object Um modelo eacute representado pela classe Object que

conteacutem uma SurfelCollection e as matrizes de transformaccedilatildeo para rotaccedilatildeo

escala e translaccedilatildeo Cada Object eacute identificado pelo seu nome que eacute uacutenico na

Scene O meacutetodo getUniqueName retorna um nome uacutenico Cada Object tem sua

proacutepria matriz de transformaccedilatildeo que pode ser modificada com setRotation

rotate setPosition translate setScale e scale Objects podem ser copiados com

copy Objects consiste em um conjunto de surfels os quais podem ser

recuperados pela getSurfelCollection O Object pode ser ativado com

setActiveObject e recuperado com getActiveObject

Objects podem ser adicionados ou removidos com addObject e

removeObject Os Objects podem ser obtidos pela getFirstObject e

getNextObject

Classe SurfelCollection representa o conjunto de surfels de um modelo

Cada surfelcollection consiste em um conjunto de surfels (SurfelInterface) de

tamanho obtido por getNofSurfels Os surfels podem ser recuperados com

getFirstSurfel getCurrentSurfel e getNextSurfel

A SurfelCollection conteacutem um PropertyDescriptor e uma SurfelList

A SurfelList eacute uma lista duplamente encadeada de surfels Possui os

atributos firstSurfel lastSurfel currentSurfel que satildeo ponteiros para uma

SurfelInterface nSurfels que eacute o nuacutemero de Surfels

A SurfelInterface define a API para os surfels que satildeo os menores

elementos que compotildeem um Object Podem ser considerados como pontos com

uma normal que define a orientaccedilatildeo do ciacuterculo (ou elipse) que seraacute desenhado

Melhorias Propostas 59

tatildeo logo o surfel seja renderizado Tem como atributos dois ponteiros (next e

prev) para SurfelInterface

PropertyDescriptor consiste em ateacute 32 valores descrevendo quais as

propriedades a SurfelInterface suporta

Classe Surfel classe que representa o surfel

Classe StatusBar classe que imprime mensagens na tela Os plugins

podem mandar mensagens para o usuaacuterio pela StatusBar

Mensagens texto podem ser impressas com showMessage O progresso

de uma operaccedilatildeo pode ser indicado com setProgress ou resetProgress

Classe Transformer representa a transformaccedilatildeo entre sistemas de

coordenadas Esta classe fornece meacutetodos para transformar pontos e vetores

entre os diferentes sistemas de coordenadas do Pointshop

A seguir apresentamos as principais estruturas de dados do plugin

Operaccedilotildees Booleanas

As principais estruturas de dados do plugin satildeo boundingbox tree no

lista_surfel surfel

Boundingbox conteacutem dois pontos 3D que definem uma caixa que conteacutem

o modelo um ponto com menores coordenadas xy e z e outro ponto com

maiores xyz

Tree representa a octree do modelo Cada registro conteacutem um ponteiro

para um noacute e oito ponteiros para as 8 octrees filhas

No representa um noacute da octree Conteacutem os seguintes dados

- localizaccedilatildeo do noacute que eacute o canto inferior esquerdo do noacute

- lista_surfel (preenchida apenas para noacutes folha cheios)

- quantidade de surfels do noacute

- classificaccedilatildeo do noacute como dentro fora ou contorno

- classificaccedilatildeo do noacute em relaccedilatildeo a outro modelo

- indica se o noacute eacute folha ou natildeo

- vetor que eacute a meacutedia das normais dos surfels do noacute

- ponto que eacute a meacutedia das localizaccedilotildees dos surfels do noacute

- surfel que tem (entre todos os surfels do noacute) o maior produto interno

entre a sua normal e a normal meacutedia

- surfel que tem (entre todos os surfels do noacute) o menor produto interno

entre a sua normal e a normal meacutedia

- produto interno maacuteximo e miacutenimo entre as normais dos surfels do noacute e a

normal meacutedia deste noacute

Melhorias Propostas 60

- indica se o noacute conteacutem surfels com normais em sentido oposto (produto

interno entre elas eacute menor que zero)

- classificaccedilatildeo dos oito cantos do noacute

lista_surfels lista em que cada registro conteacutem um apontador para um

surfel e um apontador para o proacuteximo registro

surfel representa o surfel da octree Conteacutem a classificaccedilatildeo em relaccedilatildeo a

outro modelo e um ponteiro para o surfel do Poinshop

Resultados 61

6 Resultados

Neste capiacutetulo apresentamos os testes realizados com o plugin para o

PointShop implementado para esta dissertaccedilatildeo a comparaccedilatildeo deste plugin com

o plugin de Pauly [3] e a comparaccedilatildeo entre o meacutetodo de Adams e Dutreacute [2] e o

meacutetodo de Pauly [3]

61 Testes

Os testes foram feitos em um PC x86 Family 6 261600 KB de RAM sem

placa graacutefica sistema operacional Windows 2000 O plugin foi implementado na

linguagem C

Os modelos usados para os testes satildeo modelos disponibilizados no

PointShop [11] Vale lembrar que o meacutetodo implementado em nosso plugin eacute

restrito a modelos soacutelidos e portanto foram usados apenas estes modelos

soacutelidos para os testes

O modelo na Figura 29 que eacute um dos modelos disponibilizados no

PointShop [11] foi usado para mostrar o resultado das operaccedilotildees realizadas

pelo plugin implementado nesta dissertaccedilatildeo O modelo Igea eacute um modelo soacutelido

que conteacutem 134345 surfels

Resultados 62

Figura 29-Modelo do PointShop Igea

Para realizar as operaccedilotildees este modelo foi carregado na cena do

PointShop duas vezes e um deles colorido de vermelho As Figuras 30 31 32

mostram o resultado da operaccedilatildeo de uniatildeo interseccedilatildeo e diferenccedila

respectivamente Os nuacutemeros de surfels dos modelos resultantes satildeo mostrados

na Tabela 2

Resultados 63

Figura 30-Resultado da uniatildeo de duas Igeas

Figura 31-Resultado da interseccedilatildeo de duas Igeas

Resultados 64

Figura 32-Resultado da diferenccedila entre duas Igeas

Tabela 2-Nuacutemero de surfels dos modelos resultantes

Observamos que o nuacutemero de surfels dos modelos resultantes estaacute

coerente com as figuras dos seus modelos

Para avaliar o tempo de processamento das operaccedilotildees foram realizados

vaacuterios testes com o objetivo de obter uma meacutedia dos tempos de realizaccedilatildeo de

cada operaccedilatildeo Tambeacutem foram armazenados os tempos da criaccedilatildeo das duas

octrees e da classificaccedilatildeo de todos os surfels dos dois objetos (como dentro ou

fora do outro modelo) Estes testes foram feitos usando o modelo Igea A meacutedia

dos tempos de processamento foi calculada e os resultados satildeo mostrados na

Tabela 3 Verificamos que o maior tempo gasto eacute para criaccedilatildeo das octrees

Verificamos tambeacutem que este resultado apresentado eacute similar ao resultado

verificado empiricamente com o plugin de Pauly [3] Os tempos gastos para

realizar as operaccedilotildees satildeo similares e o maior tempo gasto no plugin de Pauly

tambeacutem eacute para inicializaccedilatildeo de suas estruturas de dados que incluem a kd-tree

Operaccedilatildeo Nuacutemero de surfels do modelo resultado

Uniatildeo 189715

Interseccedilatildeo 72225

Diferenccedila 134552

Resultados 65

Operaccedilatildeo Criaccedilatildeo das

Octrees (seg)

Classificaccedilatildeo

(seg)

Criaccedilatildeo do

resultado (seg)

Total (seg)

Uniatildeo 39375 1324 18925 7154

Interseccedilatildeo 38585 1585 09547 63982

Diferenccedila 399875 1504 1729 729475

Tabela 3- Meacutedia dos tempos de processamento para as operaccedilotildees com duas Igeas

Com o objetivo de expor melhor os resultados deste trabalho

apresentamos abaixo mais um teste das operaccedilotildees booleanas usando o nosso

plugin Os modelos usados para este segundo teste satildeo o Max Planck e o Male

ambos modelos soacutelidos disponibilizados no PointShop Estes modelos satildeo

mostrados nas figura 33 e 34

O primeiro Max Planck conteacutem 52809 surfels

Figura 33-Modelo do PointShop MaxPlanck

O segundo modelo abaixo Male conteacutem 148138 surfels

Resultados 66

Figura 34-Modelo do PointShop Male

As Figuras 353637 mostram o resultado da operaccedilatildeo de uniatildeo interseccedilatildeo

e diferenccedila respectivamente usando os dois modelos acima Podemos observar

pela figura 35 que o resultado da operaccedilatildeo de diferenccedila neste caso gerou um

modelo resultado com trecircs partes desconexas Os nuacutemeros de surfels de cada

modelo resultado satildeo mostrados na Tabela 5

Figura 35- Resultado da Uniatildeo do modelo Male com MaxPlanck

Resultados 67

Figura 36-Resultado da interseccedilatildeo do modelo Male com o MaxPlanck

Figura 37-Resultado da diferenccedila do modelo Male do modelo MaxPlanck

As meacutedias de tempos de processamento foram calculadas da mesma

forma que o primeiro teste com o modelo Igea acima apresentado Os

resultados satildeo mostrados na Tabela 4 Podemos observar que este teste

Resultados 68

apresenta tempos um pouco menores que o teste com o modelo Igea Isto se

deve ao fato de que o modelo MaxPlanck ser significativamente menor que o

modelo Igea MaxPlanck possui 52809 surfels e Igea conteacutem 134345 surfels

Operaccedilatildeo Criaccedilatildeo das

Octrees (seg)

Classificaccedilatildeo

(seg)

Criaccedilatildeo do

resultado (seg)

Total

(seg)

Uniatildeo 3012 1254 102 5285

Interseccedilatildeo 2985 0901 0861 4747

Diferenccedila 2965 0911 0791 4667

Tabela 4-Tempo de processamento das operaccedilotildees com os modelos MaxPlanck e Male

Operaccedilatildeo Nuacutemero de surfels do resultado

Uniatildeo 126532

Interseccedilatildeo 88414

Diferenccedila 77635

Tabela 5-Nuacutemero de surfels dos modelos resultados das operaccedilotildees com os modelos MaxPlanck e Male

Em seguida apresentaremos uma comparaccedilatildeo entre o nosso plugin e o

plugin de Pauly[3] e tambeacutem uma comparaccedilatildeo entre o meacutetodo de Adams e Dutreacute

[2] e o meacutetodo de Pauly [3]

62 Comparaccedilatildeo entre os dois meacutetodos que realizam operaccedilotildees booleanas

A comparaccedilatildeo entre os meacutetodos de Pauly[3] e de Adams e Dutreacute foi feita

em termos de tempo de processamento e em termos conceituais Em termos de

tempo de processamento comparamos o plugin de Pauly[3] com o nosso plugin

Em termos de tempo de processamento verifica-se empiricamente que os

dois meacutetodos apresentam tempos bastante similares Entretanto o tempo de

processamento do algoritmo aqui implementado ainda pode ser melhorado com

Resultados 69

o uso do meacutetodo TINN [19] que foi proposto em Adams[2] - para otimizar a

pesquisa do surfel mais proacuteximo a um ponto que estaacute localizado na regiatildeo de um

noacute que conteacutem surfels - veja seccedilatildeo 42 O uso deste meacutetodo natildeo foi

implementado para este trabalho e a sua implementaccedilatildeo melhoraria o tempo de

resposta do algoritmo Aleacutem disso o trabalho de Sara F Frisken [12] citado no

capiacutetulo 2 apresenta uma otimizaccedilatildeo no uso de octrees que pode ser

incorporada no algoritmo implementado neste trabalho

Em termos conceituais vamos fazer a comparaccedilatildeo do uso do que

chamamos aqui de Regra 2 do tratamento de interseccedilatildeo e do tratamento de

ldquoarestas vivasrdquo

Como vimos na seccedilatildeo 41 tanto o algoritmo implementado nesta

dissertaccedilatildeo baseado no trabalho de Adams e Dutreacute como o meacutetodo de Pauly

[3] parte do que chamamos aqui de Regra 2 para realizar operaccedilotildees booleanas

com pontos Mas cada um destes meacutetodos daacute um tratamento diferente para o

uso desta regra

O meacutetodo de Pauly usa a Regra 2 para classificaccedilatildeo de cada ponto ou de

cada surfel Para classificar um surfel de B sb como dentro ou fora de A eacute

encontrado o surfel de A sa mais proacuteximo a sb e sb eacute classificado a partir de sa

Para encontrar sa Pauly utiliza uma kd-tree Como esta pesquisa para encontrar

sa eacute cara (mesmo usando uma kd-tree) Pauly utiliza uma esfera que conteacutem

pontos com a mesma classificaccedilatildeo (seccedilatildeo 432) e diminui em 90 este nuacutemero

de pesquisas Pauly utiliza tambeacutem a representaccedilatildeo impliacutecita MLS (Moving Least

Squares) para casos em que a Regra 2 poderia falhar e para tratamento de

interseccedilotildees Entretanto o nuacutemero destes casos em que a Regra 2 poderia falhar

eacute muito pequeno E a representaccedilatildeo MLS natildeo eacute uma estrutura simples de ser

implementada Portanto natildeo encontramos vantagens em usar MLS para estes

casos O meacutetodo de Adams e Dutreacute natildeo trata estes casos e na praacutetica

apresenta resultados bastante satisfatoacuterios como foi mostrado Portanto

consideramos que valeria a pena fazer algum tratamento especial para estes

casos se fosse um procedimento simples Para a execuccedilatildeo do algoritmo de

Pauly o uso de MLS natildeo interfere significativamente porque a construccedilatildeo desta

representaccedilatildeo natildeo eacute feita somente para realizar operaccedilotildees booleanas Os testes

empiacutericos que fizemos com o algoritmo de Pauly natildeo incluem a construccedilatildeo desta

representaccedilatildeo

Aparentemente os dois algoritmos satildeo bastante parecidos um usa octrees

e o outro usa kd-tree As duas estruturas de dados satildeo simples e otimizam a

classificaccedilatildeo dos surfels de um modelo como dentro ou fora do outro modelo

Resultados 70

Mas existe uma diferenccedila conceitual entre dois que merece ser destacada O

algoritmo aqui implementado usa a Regra 2 para classificaccedilatildeo dos noacutes de uma

octree e armazena esta octree classificada (ver capiacutetulo 5) Assim na maioria dos

casos natildeo seraacute necessaacuterio encontrar o surfel mais proacuteximo para classificar um

ponto (ou um surfel) como fora ou dentro de um modelo Caso o ponto esteja em

uma aacuterea da octree classificada ele teraacute a classificaccedilatildeo dada agravequela aacuterea A

pesquisa ao surfel mais proacuteximo seraacute feita apenas nos casos em que o ponto a

ser classificado estaacute localizado entre os planos que subdividem um noacute cheio

O uso desta octree classificada levanta uma questatildeo que natildeo foi citada no

trabalho de Adams e Dutreacute que eacute a proximidade desta estrutura (armazenada)

de octree classificada com uma representaccedilatildeo volumeacutetrica do objeto Sendo

assim esta estrutura pode ser aproveitada para outras funccedilotildees aleacutem da

classificaccedilatildeo dos surfels Por exemplo podemos ter uma aproximaccedilatildeo do

volume de uma cena somando os volumes aproximados dos modelos que a

compotildeem Como o enfoque deste trabalho eacute operaccedilatildeo booleana natildeo vamos nos

aprofundar nesta questatildeo

Outra importante diferenccedila entre os dois trabalhos que jaacute foi explicada na

seccedilatildeo 432 eacute que o meacutetodo de Pauly aplica-se a modelos soacutelidos ou natildeo

soacutelidos enquanto que o meacutetodo de Adams e Dutreacute aplica-se somente a modelos

soacutelidos

Quanto ao tratamento de interseccedilatildeo em termos de visualizaccedilatildeo todos os

dois resolvem bem o problema O tratamento de interseccedilatildeo nos dois trabalhos

tambeacutem resolve o problema da validade da Regra 2 (ver seccedilatildeo 44) Entretanto

o tratamento de Adams e Dutreacute natildeo depende da renderizaccedilatildeo sendo portanto

mais portaacutevel Aleacutem disso uma desvantagem do meacutetodo de Pauly eacute o uso da

representaccedilatildeo impliacutecita MLS (ldquoMoving Least Squaresrdquo) do objeto para obter os

pontos exatamente na curva de interseccedilatildeo Esta representaccedilatildeo torna o

tratamento de interseccedilatildeo mais complexo e a vantagem apresentada natildeo eacute tatildeo

significativa para este tratamento de interseccedilatildeo

Conclusatildeo 71

7 Conclusatildeo

Concluiacutemos entatildeo que as escolhas de Adams e Dutreacute por usar uma

octree classificada e pelo tratamento dado agrave interseccedilatildeo satildeo mais abrangentes

que a escolha de Pauly E consideramos que quanto mais abrangente for uma

escolha conceitual mais resultados poderemos tirar dela No caso de Adams e

Dutreacute eles estendem o problema de classificar um ponto para classificar todo o

modelo Como foi citado ele quase fornece uma representaccedilatildeo volumeacutetrica do

modelo Esta aproximada representaccedilatildeo volumeacutetrica pode nos fornecer outras

informaccedilotildees como por exemplo o volume aproximado do modelo

Aleacutem disso o uso da representaccedilatildeo impliacutecita MLS no meacutetodo de Pauly cria

uma complexidade a mais para o meacutetodo sem apresentar vantagens para a

realizaccedilatildeo de operaccedilotildees booleanas que eacute o nosso enfoque

Logo podemos dizer que o meacutetodo de Adams e Dutreacute apresenta as

seguintes vantagens em relaccedilatildeo ao de Pauly

- a estrutura de octree classificada aleacutem de ser usada para classificaccedilatildeo

fornece informaccedilotildees adicionais como volume aproximado do objeto

- o tempo de processamento no meacutetodo de Adams e Dutreacute tende a ser

melhor que no meacutetodo de Pauly se implementadas as melhorias acima citadas e

se colocaacutessemos em consideraccedilatildeo o uso da representaccedilatildeo impliacutecita MLS

(Moving Least Squares)

- o tratamento de interseccedilatildeo de Adams e Dutreacute apresenta a vantagem da

portabilidade ou seja iraacute funcionar independente do algoritmo de renderizaccedilatildeo

utilizado

E as vantagens do meacutetodo de Pauly em relaccedilatildeo ao de Adams e Dutreacute

- a colocaccedilatildeo de surfels exatamente na curva de interseccedilatildeo

- a possibilidade de trabalhar com modelos soacutelidos ou natildeo soacutelidos

E finalizando concluiacutemos que o estudo relatado nesta dissertaccedilatildeo foi

importante por

- fornecer um breve estudo sobre modelagem por pontos uma nova e

promissora aacuterea dentro da computaccedilatildeo graacutefica

Conclusatildeo 72

- por apresentar uma avaliaccedilatildeo dos dois trabalhos existentes sobre

operaccedilotildees booleanas com pontos encontrando as vantagens de cada um

e levantando questotildees que natildeo tinham sido citadas nos trabalhos originais

- por propor e implementar melhorias ao trabalho de Adams e Dutreacute

71 Trabalhos Futuros

Nossa implementaccedilatildeo pode ser ainda evoluiacuteda com as propostas

apresentadas na seccedilatildeo 62 Como observamos o tempo de processamento do

algoritmo aqui implementado ainda pode ser melhorado com o uso do meacutetodo

TINN [19] - que foi proposto em Adams[2] - para otimizar a pesquisa do surfel

mais proacuteximo a um ponto que estaacute localizado na regiatildeo de um noacute que conteacutem

surfels Aleacutem disso o trabalho Simple and Efficient Trasversal Methods for

Quadtrees and Octrees de Sara F Frisken [12] citado no capiacutetulo 2 apresenta

uma otimizaccedilatildeo no uso de octrees Outra proposta para melhorar o tempo de

processamento do algoritmo aqui implementado eacute usar a forma de trabalhar com

octrees apresentada neste trabalho

O trabalho de Adams e Dutreacute [2] eacute aplicado apenas a objetos soacutelidos O

nosso plugin portanto aplica-se somente a este tipo de objeto Jaacute o trabalho de

Pauly[3] eacute aplicado tambeacutem a modelos natildeo soacutelidos Apresentamos como

proposta a um trabalho futuro a extensatildeo do algoritmo aqui implementado para

modelos natildeo soacutelidos O surfel pode conter uma informaccedilatildeo adicional que indica

se ele estaacute delimitando um volume ou natildeo Assim pode-se ter um modelo com

ldquopartes soacutelidasrdquo e ldquopartes natildeo soacutelidasrdquo Por exemplo a uniatildeo de um plano com

uma esfera poderia resultar numa esfera com ldquoabasrdquo (seriam as partes do plano

que estariam fora da esfera) O modelo resultado teria uma parte correspondente

a um espaccedilo 3D (esfera) e outra parte que seria uma superfiacutecie 2D posicionada

no espaccedilo 3D sem delimitar algum volume (abas)

Muitos trabalhos podem ser desenvolvidos aplicando-se o modelo por

pontos em animaccedilatildeo jogos visualizaccedilatildeo de terrenos criaccedilatildeo de protoacutetipos etc

considerando-se a eficiecircncia e simplicidade do modelo E mais especificamente

as operaccedilotildees booleanas com pontos podem ser aplicadas para criaccedilatildeo de

cenaacuterios testes de colisotildees e nestes casos a representaccedilatildeo usando octrees

pode ser mais explorada considerando-se o seu potencial de representaccedilatildeo

volumeacutetrica de um objeto

Referecircncias Bibliograacuteficas 73

8 Referecircncias Bibliograacuteficas

[1] MAumlNTYLAuml M An Introduction to Solid Modeling Computer Science Press 1988

[2] ADAMS B DUTREacute P Interactive Boolean Operations on Surfel-

Bounded Solids Proceedings of SIGGRAPH 2003 San Diego USA 2003

[3] PAULY M KEISER R KOBBELT L GROSS M Shape Modeling

with Point-Sampled Geometry SIGGRAPH 2003 Computer Graphics

Proceedings Annual Conference Series ACM Press ACM SIGGRAPH 2003

[4] LEVOY M WHITTED T The Use of Points as Display Primitives

Technical Report TR 85-022 The University of North Carolina at Chapel Hill

Department of Computer Science 1985

[5] PFISTER H ZWICKER M VAN BAAR J GROSS M 2000 Surfels

Surface Elements as Rendering Primitives SIGGRAPH 2000 pp 335ndash342 New

Orleans LA July 23-28 2000

[6] ZWICKER M PFISTER H VAN BAAR J GROSS M Surface

Splatting SIGGRAPH 2001

[7] PAULY M KOBBELT L GROSS M Multiresolution Modeling of

Point-Sampled Geometry CS Techinical Report 378 September 16 2002

[8] CURLESS B New Methods for Surface Reconstruction from Range Images PhD thesis Stanford University 1997

[9] RUSINKIEWICZ S Real-time Acquisition and Rendering of Large 3D Models PhD thesis Stanford University 2001

Referecircncias Bibliograacuteficas 74

[10] AMENTA N BERN M KAMVYSSELIS M A new Voronoi-Based

Surface Reconstruction Algorithm SIGGRAPH 98 Conference proceedings pp

415-421 New York 1998

[11] ZWICKER M PAULY M KNOLL O GROSS M Pointshop 3D an

Interactive System for Point-Based Surface Editing Proceedings of SIGGRAPH 2002 San Antonio TX July 2002

[12] FRISKEN S PERRY R Simple and Efficient Traversal Methods for

Quadtrees and Octrees Journal of Graphics Tools Vol 7 Issue 3 May 2003

[13] CORREcircA W T OLIVEIRA M M Silva C T Wang J

Modeling and Rendering of Real Environments

Revista de Informaacutetica Teoacuterica e Aplicada (Brazilian Journal of Theoretic and Applied Computing) 9(2)127-156 2002

[14] DAVIS J MARSCHNER S GARR M LEVOY M Filling Holes in

Complex Surfaces Using Volumetric Diffusion First International Symposium on 3D Data Processing Visualization Transmission June 2002

[15] RAumlSAumlNEN J Surface Splatting Theory Extensions and Implementation Masterrsquos Thesis Dept of Computer Science Helsinki

University of Technology May 28 2002

[16] PAULY M Point Primitives for Interactive Modeling and Processing of 3D Geometry PhD thesis Federal Institute of Technology (ETH)

of Zurich 2003

[17] HOPPE H DEROSE T DUCHAMP T MCDONALD J

STUELZLE W Surface Reconstruction from Unorganized Points Computer Graphics 26(2)71ndash78 July 1992

[18] ALEXA M BEHR J COHEN-OR D FLEISHMAN S LEVIN D

SILVA C T Point Set Surfaces IEEE Visualization 2001 pp 21ndash28 October

2001

Referecircncias Bibliograacuteficas 75

[19] GREENSPAN M GODIN G TALBOT J Acceleration of Binning

Nearest Neighbor Methods Proceedings of Vision Interface 2000 pp 337-

344

[20] MENCL R Reconstruction of Surfaces from Unorganized Three-Dimensional Point Clouds Dissertation Dortmund Univ 2001

[21] KRIVANEK J Representing and Rendering Surfaces With Points

httpciteseernjneccomkrivanek03representinghtml Acesso em 30 jul

2003

[22] KRISTJANSSON ET AL Approximate Boolean Operations on Free-

form Solids Proceedings of SIGGRAPH 01 2001

Operaccedilotildees Booleanas com Pontos 29

4 Operaccedilotildees Booleanas com Pontos

Operaccedilotildees booleanas satildeo as operaccedilotildees de uniatildeo interseccedilatildeo e diferenccedila

definidas na teoria matemaacutetica de conjuntos Estas operaccedilotildees satildeo aplicadas em

modelos soacutelidos para alteraacute-los ou para criar novos modelos A Figura 4 abaixo

mostra a criaccedilatildeo de trecircs novos modelos a partir de quatro modelos iniciais

Figura 4 [22] Trecircs modelos novos foram criados a partir dos quatro iniciais (esfera

cilindro dois cubos) O primeiro eacute a esfera menos um cubo em seguida retirou-se outro

cubo e por uacuteltimo retirou-se o cilindro

Estas operaccedilotildees satildeo aplicadas em objetos modelados por pontos em dois

trabalhos no trabalho de Bart Adams e Philip Dutreacute [2] e no trabalho de Pauly

et Al [3] Neste capiacutetulo a seccedilatildeo 41 apresenta a parte comum aos dois

trabalhos e as seccedilotildees 42 e 43 apresentam as particularidades de cada um A

seccedilatildeo 44 discute uma questatildeo natildeo explicitada em nenhum dos dois trabalhos

41 Meacutetodos para realizar operaccedilotildees booleanas em objetos modelados por pontos

A Figura 5 mostra o resultado do meacutetodo de Adams[2] operaccedilotildees de

uniatildeo diferenccedila e interseccedilatildeo de objetos soacutelidos 3D modelados por pontos

Operaccedilotildees Booleanas com Pontos 30

Figura 5 [2]-A partir de dois modelos por pontos uma heacutelice e uma cabeccedila as trecircs operaccedilotildees booleanas satildeo mostradas da esquerda para a direita uniatildeo diferenccedila e interseccedilatildeo

Sejam A e B objetos 3D soacutelidos modelados por pontos Definem-se os

seguintes elementos

Af ndash superfiacutecie (contorno) de A que estaacute fora de B

Ad ndash superfiacutecie (contorno) de A que estaacute dentro de B

Bf ndash superfiacutecie (contorno) de B que estaacute fora de A

Bd ndash superfiacutecie (contorno) de B que estaacute dentro de A

O resultado da operaccedilatildeo booleana entre A e B seraacute um modelo C cuja

superfiacutecie de contorno pode ser determinada pela seguinte regra [2] que aqui

chamamos de Regra 1

Regra 1 A U B Af + Bf

A cap B Ad + Bd

A ndash B Af + Bd (com a orientaccedilatildeo invertida)

B ndash A Ad (com a orientaccedilatildeo invertida) + Bf

A Figura 6 mostra as operaccedilotildees com dois modelos A e B

(a) (b)

Operaccedilotildees Booleanas com Pontos 31

(c) (d)

Figura 6 [22] (a) Dois modelos A e B (b) Posicionados de forma que A tem

uma parte dentro de B eacute mostrado o resultado A U B Af + Bf (c) Resultado de A ndash B Af

+ Bd (d) Resultado de A cap B Ad + Bd

Bart [2] e Pauly [3] apresentam dois meacutetodos para determinar os

elementos acima Estes dois meacutetodos satildeo construiacutedos a partir dos seguintes

conceitos os elementos Af Ad Bf Bd satildeo uma parte da superfiacutecie modelada por

pontos e portanto satildeo conjuntos de surfels Para determinaacute-los eacute necessaacuteria

entatildeo a classificaccedilatildeo de um surfel (que pode se resumir agrave classificaccedilatildeo de um

ponto que eacute o seu centro) de uma superfiacutecie como dentro ou fora de um outro

modelo Os dois meacutetodos utilizam a seguinte regra para esta classificaccedilatildeo aqui

denominada Regra 2

Regra 2 Dado um ponto x qualquer um volume V determinado por uma superfiacutecie

de contorno S uma amostragem P da superfiacutecie S um ponto p є P que eacute a

amostra mais proacutexima a x um vetor np normal agrave S em p e orientado para fora de

S temos que

(x ndash p) np gt 0 x notinV

Ou seja para classificar um ponto em relaccedilatildeo a um modelo verificamos o

produto interno entre a normal em p (surfel mais proacuteximo a x) e o vetor (x - p)

se este produto interno for maior que zero x natildeo pertence ao volume V e seraacute

classificado como fora senatildeo seraacute classificado como dentro De maneira

ainda mais informal se a normal em p apontar para a direccedilatildeo oposta a x x seraacute

classificado como dentro se apontar para x x seraacute classificado como fora

A Figura 7 mostra a Regra 2

Operaccedilotildees Booleanas com Pontos 32

Figura 7 Para classificar o ponto x encontra-se o surfel p (com normal np) mais proacuteximo

a x Se o produto interno entre np e (x ndash p) for maior que zero entatildeo x eacute classificado como

fora senatildeo seraacute classificado como dentro

A validade da Regra 2 eacute discutida na Seccedilatildeo 44 Uma das restriccedilotildees

teoacutericas para garantir-lhe a validade eacute que a superfiacutecie seja suave

Cada um dos dois meacutetodos daacute um tratamento diferente para o uso desta

regra Pauly usa a regra diretamente encontrando o surfel mais proacuteximo a um

ponto e classificando este ponto a partir deste surfel Ele utiliza tambeacutem a

representaccedilatildeo impliacutecita MLS (Moving Least Squares [18]) para casos em que a

Regra 2 poderia falhar e para tratamento de interseccedilotildees [3] Seu meacutetodo vale

para modelos soacutelidos ou natildeo soacutelidos O meacutetodo de Adams e Dutreacute [2] utiliza

octrees [1] criando uma classificaccedilatildeo dos noacutes da octree a partir desta Regra 2

Os pontos satildeo entatildeo classificados de acordo com o noacute da octree que o conteacutem

Este segundo meacutetodo aplica-se somente a modelos soacutelidos Os dois meacutetodos

seratildeo descritos em detalhes nas seccedilotildees abaixo

Como um surfel eacute considerado um disco podemos dizer que surfels de

dois modelos diferentes podem se intersectar A interseccedilatildeo destes dois surfels

corresponde agrave interseccedilatildeo destes dois discos Estes surfels geram problemas

para visualizaccedilatildeo se forem acrescentados ao resultado sem um tratamento

especiacutefico apresentaratildeo artefatos natildeo desejaacuteveis na renderizaccedilatildeo do modelo

resultado (Figura 8) se natildeo forem acrescentados ao resultado deixaratildeo buracos

no modelo

Operaccedilotildees Booleanas com Pontos 33

Figura 8 [2] -Interseccedilatildeo de duas esferas agrave esquerda sem nenhum tratamento de interseccedilatildeo agrave direita apoacutes o tratamento de interseccedilatildeo

Aleacutem disso nem sempre esta interseccedilatildeo forma uma superfiacutecie suave

Esta interseccedilatildeo pode formar uma aresta viva (seccedilatildeo 4223) gerando

problemas tambeacutem para o uso da Regra 2 que eacute vaacutelida apenas para superfiacutecies

suaves Eacute necessaacuterio entatildeo fazer um tratamento desta superfiacutecie de interseccedilatildeo

(formada por surfels originados de diferentes modelos) O tratamento de cada

um dos meacutetodos para este caso seraacute tambeacutem abaixo apresentado

42 Meacutetodo de Adams e Dutreacute

O meacutetodo aplica-se somente a modelos soacutelidos Para determinaccedilatildeo dos

elementos da aqui chamada Regra 1 (seccedilatildeo 41) este meacutetodo utiliza uma octree

[1] que subdivide o espaccedilo do modelo em trecircs fora dentro ou no contorno do

modelo Estes espaccedilos satildeo determinados pela classificaccedilatildeo dos noacutes da octree a

partir da Regra 2 Tambeacutem eacute usado o meacutetodo TINN - Triangle Inequality Nearest

Neighbour [19] - para otimizar a pesquisa dentro do noacute A seguir descrevemos o

modelo usado neste meacutetodo apresentando os dados associados aos pontos o

tipo de distribuiccedilatildeo e o algoritmo que realiza as operaccedilotildees

421 Modelo por Pontos em Adams e Dutreacute

Os surfels neste meacutetodo contecircm as seguintes informaccedilotildees posiccedilatildeo do

surfel xs orientaccedilatildeo do surfel ns e raio de alcance do surfel rs O surfel pode ser

pensado como um disco ortogonal a ns com centro xs e raio rs O raio eacute

escolhido de tal forma que a projeccedilatildeo dos discos no plano da imagem se

sobreponham

Operaccedilotildees Booleanas com Pontos 34

Os objetos representados satildeo soacutelidos A distribuiccedilatildeo dos surfels eacute

uniforme embora o algoritmo natildeo exija esta condiccedilatildeo Para cada soacutelido eacute

definido um rmax = Max rs o raio de alcance do maior surfel pertencente agrave

superfiacutecie do soacutelido Como o raio eacute escolhido de tal forma que a projeccedilatildeo dos

discos no plano da imagem se sobreponham o controle da amostragem eacute

entatildeo ligado agrave renderizaccedilatildeo

422 Algoritmo de Operaccedilotildees Booleanas

Utilizando objetos modelados da forma descrita acima o meacutetodo realiza

operaccedilotildees de uniatildeo interseccedilatildeo e diferenccedila com modelos soacutelidos Supondo dois

modelos soacutelidos S1 e S2 O algoritmo pode ser dividido nas seguintes etapas

Criaccedilatildeo de uma octree para cada modelo Teste Dentro-Fora Tratamento da

interseccedilatildeo Estas etapas satildeo apresentadas nas proacuteximas seccedilotildees

4221 Criaccedilatildeo de uma octree para cada modelo

Eacute criada uma octree [1] para cada modelo A criaccedilatildeo de uma octree eacute feita

da seguinte forma

Gera-se a ldquoCaixa envolventerdquo caixa alinhada com os eixos que conteacutem

todo o modelo A ldquoCaixa envolventerdquo corresponde ao noacute raiz da octree Este noacute

conteacutem inicialmente todos os surfels do modelo Em seguida o noacute raiz eacute

dividido em oito noacutes filhos Os surfels satildeo distribuiacutedos entre estes oito noacutes Cada

um deles caso contenha surfels eacute dividido novamente em 8 filhos e seus surfels

satildeo redistribuiacutedos entre eles Este processo eacute repetido recursivamente enquanto

o nuacutemero de surfels do noacute for maior que zero ou ateacute uma profundidade maacutexima

preacute-definida da octree ser alcanccedilada

Cada noacute da octree deve ser classificado O objetivo desta classificaccedilatildeo eacute

determinar que parte da octree estaacute dentro do modelo e que parte estaacute fora Os

noacutes da octree satildeo entatildeo classificados como ldquodentrordquo ldquoforardquo e ldquocontornordquo

Podemos ilustrar esta classificaccedilatildeo em 2D a Figura 9 mostra uma quadtree

classificada

Operaccedilotildees Booleanas com Pontos 35

Figura 9-Um objeto representado por pontos com suas normais e sua quadtree correspondente classificada os noacutes cinza claro estatildeo dentro do modelo noacutes cinza mais escuro estatildeo fora do modelo e noacutes com cinza intermediaacuterio satildeo noacutes cheios noacutes que conteacutem pontos

O noacutes que conteacutem surfels satildeo classificados como ldquocontornordquo Para

classificar um noacute vazio existem trecircs casos

o noacute vazio tem apenas um vizinho-irmatildeo natildeo vazio

o noacute vazio tem mais de um vizinho-irmatildeo natildeo vazio

o noacute vazio natildeo tem vizinhos-irmatildeos natildeo vazios

No primeiro caso o noacute vazio eacute classificado pelo seu vizinho natildeo vazio No

segundo caso considera-se qualquer um dos vizinhos natildeo vazios No terceiro

caso classifica-se primeiro os noacutes vizinhos e eacute dada a mesma classificaccedilatildeo para

o noacute vazio Como cada noacute natildeo folha de uma octree tem pelo menos um noacute filho

natildeo vazio sempre pode ser feita a classificaccedilatildeo dos noacutes vazios A classificaccedilatildeo

eacute feita da seguinte forma dentre os surfels do vizinho-irmatildeo escolhido encontra-

se o surfel mais proacuteximo ao noacute a ser classificado Se a normal deste surfel

aponta para o noacute vazio a ser classificado entatildeo ele eacute classificado como ldquoforardquo

Se a normal aponta no sentido contraacuterio entatildeo ele eacute classificado como ldquodentrordquo

De maneira mais formal sejam cv e cc coordenadas dos centros do noacute vazio e

do noacute contorno respectivamente Seja s o surfel mais proacuteximo ao noacute vazio e ns

a normal em s Se ( cv - cc )٠ ns gt 0 ( produto interno entre a normal em s e o

vetor cv - cc for maior que zero ) o noacute vazio seraacute classificado como ldquoforardquo

Senatildeo seraacute classificado como ldquodentrordquo

Em geral os noacutes ldquocontornordquo satildeo subdivididos em trecircs partes uma que estaacute

fora do modelo uma que estaacute dentro do modelo e uma terceira que conteacutem os

surfels Esta subdivisatildeo eacute feita por meio da criaccedilatildeo de dois planos paralelos que

Operaccedilotildees Booleanas com Pontos 36

dividem o noacute Para determinar estes planos calcula-se o vetor nm igual agrave

meacutedia das normais dos surfels do noacute nm = sum ns sum ns onde ns eacute a normal de

cada surfel do noacute

Em seguida encontra-se o surfel com maior produto interno entre a sua

normal e a normal meacutedia d1=Max(nm ٠ ns) Este surfel juntamente com a normal

meacutedia define um dos planos Encontra-se tambeacutem o surfel com menor produto

interno entre a sua normal e a normal meacutedia d2=Min(nm ٠ ns) Este surfel

juntamente com a normal meacutedia define o outro plano A Figura 10 mostra a

divisatildeo de um noacute de uma quadtree nas trecircs partes dentro do modelo fora do

modelo e no ldquocontornordquo

Esta subdivisatildeo aplica-se apenas a noacutes que conteacutem surfels cujas direccedilotildees

natildeo variem em mais de 90 graus Caso isso ocorra ele natildeo seraacute subdividido Ou

seja se um noacute possuir dois vetores normais (de dois surfels diferentes) que

formem um acircngulo maior que 90 graus ele natildeo seraacute subdividido

Figura 10 [2] -Divisatildeo de noacute de contorno a parte agrave esquerda estaacute fora do modelo a parte agrave direita estaacute dentro do modelo e a faixa intermediaacuteria conteacutem os surfels

4222 Teste Dentro-Fora

O Teste Dentro-Fora faz a classificaccedilatildeo dos surfels de um modelo como

ldquodentrordquo ou ldquoforardquo de outro modelo Portanto aplicaremos este mesmo teste duas

vezes uma para o modelo S1 em relaccedilatildeo ao modelo S2 e outra para S2 em

relaccedilatildeo a S1 Vamos mostrar o teste Dentro-Fora para o caso da classificaccedilatildeo

dos surfels do modelo S1 em relaccedilatildeo a S2

Operaccedilotildees Booleanas com Pontos 37

No item anterior foram criadas duas octrees uma para o modelo S1 e

outra para o modelo S2 Chamemos de A e B as octrees de S1 e S2

respectivamente Para classificar S1 em relaccedilatildeo a S2 inicialmente eacute feita uma

avaliaccedilatildeo da posiccedilatildeo de A em relaccedilatildeo a B A e B podem estar nas seguintes

situaccedilotildees

- A natildeo intersecta B

- A intersecta apenas noacutes ldquoforardquo de B

- A intersecta apenas noacutes ldquodentrordquo de B

- A intersecta noacutes ldquoforardquo e noacutes ldquodentrordquo de B

Para testar estas situaccedilotildees os noacutes satildeo aumentados de rmax o raio do

maior surfel do modelo soacutelido Isto eacute feito para compensar o fato de que o surfel

natildeo eacute apenas um ponto mas sim considerado como um disco

No primeiro e no segundo caso todos os surfels de A satildeo classificados

como ldquoforardquo No terceiro caso todos os surfels de A satildeo classificados como

ldquodentrordquo

No quarto caso temos que percorrer a octree A Comeccedilando pelo noacute raiz

percorre-se os filhos deste noacute Para cada filho os quatro testes acima satildeo feitos

Se o noacute filho encontra-se em um dos trecircs primeiros casos a classificaccedilatildeo eacute dada

como foi citada acima Se um filho estaacute no quarto caso e natildeo eacute um noacute folha

repete-se recursivamente o mesmo procedimento para seus filhos ateacute encontrar-

se um noacute folha Para um noacute que estaacute no quarto caso e eacute folha percorre-se a lista

de surfels que este noacute conteacutem classificando cada um destes surfels Seja sa um

surfel desta lista Para este caso percorre-se a octree B para classificar sa

Primeiramente encontramos o noacute de B que conteacutem sa Se este noacute de B foi

dividido testa-se de acordo com esta divisatildeo do noacute se o surfel sa estaacute na parte

do noacute que estaacute dentro do modelo ele eacute classificado como ldquodentrordquo se sa estaacute na

parte que estaacute fora do modelo ele eacute classificado como ldquoforardquo se sa estaacute na parte

intermediaacuteria ou se o noacute de B natildeo foi subdividido em planos encontra-se sb que

eacute o surfel pertencente a este noacute de B que estaacute mais proacuteximo de sa sa seraacute

entatildeo classificado de acordo com sb Se ( sa - sb )٠ nb gt 0 sa eacute classificado

como ldquoforardquo senatildeo eacute classificado como ldquodentrordquo Se os discos de sb e sa se

intersectam sa eacute marcado como interseccedilatildeo Para encontrar sb o algoritmo

implementa o meacutetodo TINN ndash Triangle Inequality Nearest Neighbour [19]

Operaccedilotildees Booleanas com Pontos 38

4223 Tratamento da interseccedilatildeo

Os surfels de A que intersectam surfels de B satildeo classificados como

ldquointerseccedilatildeordquo Se eles natildeo forem incluiacutedos no modelo resultado o soacutelido resultado

teraacute buracos Se eles forem incluiacutedos sem algum tratamento eles natildeo

representaratildeo adequadamente a regiatildeo Em geral o surfel sa (um surfel

ldquointerseccedilatildeordquo de A) eacute dividido em dois pelo plano que conteacutem o surfel sb (surfel de

B que sa intersecta) uma parte que estaacute fora de B e outra que estaacute dentro de B

Dependendo da operaccedilatildeo que estaacute sendo realizada vamos querer manter uma

destas partes do surfel sa no modelo resultado Seja xa a posiccedilatildeo do surfel sa e o

surfel sa uma circunferecircncia de centro xa e raio ra igual ao raio de alcance de sa

O plano que conteacutem o surfel sb define uma corda desta circunferecircncia como

mostra a Figura 11 O surfel sa seraacute substituiacutedo por um surfel menor que

ultrapassa esta corda de uma distacircncia e definida pelo usuaacuterio Para cobrir

completamente a interseccedilatildeo seratildeo adicionados surfels menores que cruzam a

corda de interseccedilatildeo

Figura 11 -Interseccedilatildeo do surfel s e do plano que passa pelo surfel t o surfel mais proacuteximo a s O surfel s eacute substituiacutedo por trecircs surfels menores

Operaccedilotildees Booleanas com Pontos 39

O tratamento de interseccedilatildeo proposto por Adams e Dutreacute [2] natildeo soacute evita

os buracos mas tambeacutem cria uma forma de renderizaccedilatildeo de arestas vivas A

colocaccedilatildeo de vaacuterios pequenos surfels na regiatildeo da interseccedilatildeo permite esta

correta renderizaccedilatildeo das ldquoarestas vivasrdquo Desta forma o problema das arestas

vivas eacute resolvido na modelagem (Figura 12) A vantagem de se resolver o caso

na modelagem eacute que natildeo eacute necessaacuterio fazer um tratamento especial na

renderizaccedilatildeo para que mostre esta aresta viva Diferente do tratamento feito

em Pauly (seccedilatildeo 431) que resolve esta questatildeo em tempo de renderizaccedilatildeo

Aleacutem disso o tratamento resolve alguns casos onde a Regra 2 poderia falhar

(veja em Validade da Regra 2-seccedilatildeo 44)

Figura 12 [2] -Agrave direita eacute mostrado o resultado do tratamento de interseccedilatildeo para o caso de Arestas Vivas do objeto agrave esquerda

43 Meacutetodo de Pauly

O meacutetodo aplica-se a objetos soacutelidos e natildeo soacutelidos Os modelos podem ser

obtidos a partir de diferentes entradas como nuvem de pontos irregulares ou por

meio de scanners 3D Cria um modelo hiacutebrido destes objetos usa o modelo por

pontos juntamente com a representaccedilatildeo impliacutecita Moving Least Squares - MLS

[18] Realiza operaccedilotildees booleanas com pontos e utiliza adicionalmente MLS

para alguns casos de classificaccedilatildeo de surfels e no tratamento de interseccedilatildeo A

seguir apresentamos as caracteriacutesticas do modelo por pontos deste meacutetodo e o

algoritmo que realiza as operaccedilotildees

Operaccedilotildees Booleanas com Pontos 40

431 Modelo em Pauly

O modelo eacute uma estrutura hiacutebrida de pontos com a representaccedilatildeo impliacutecita

Moving Least Squares - MLS [18] Esta estrutura eacute usada para fazer operaccedilotildees

booleanas e tambeacutem operaccedilotildees de free-form (natildeo abordadas nesta

dissertaccedilatildeo) Para operaccedilotildees booleanas a representaccedilatildeo MLS permite que a

curva de interseccedilatildeo entre os modelos seja reconstruiacuteda e surfels sejam

colocados nesta curva e em alguns casos de classificaccedilatildeo de surfels mostrados

na seccedilatildeo 432 Para este modelo natildeo existem restriccedilotildees quanto agrave forma do

objeto

Os surfels contecircm informaccedilotildees sobre sua posiccedilatildeo e sua normal Aleacutem

disso surfels podem conter informaccedilotildees adicionais como textura cor

propriedades de materiais

A distribuiccedilatildeo dos surfels eacute natildeo-uniforme e a amostragem eacute

aproximadamente adequada (Veja seccedilatildeo 44)

432 Algoritmo de Operaccedilotildees Booleanas

O algoritmo classifica surfels de um modelo como ldquodentrordquo ou ldquoforardquo de

outro modelo Antes de colocarmos como eacute feita esta classificaccedilatildeo devemos

acrescentar que Pauly estende esta classificaccedilatildeo para modelos que natildeo satildeo

soacutelidos Ou seja mesmo um modelo natildeo soacutelido divide o espaccedilo da cena (espaccedilo

em que se encontra o modelo) em dois sub-espaccedilos dentro ou fora do modelo

Pauly faz esta subdivisatildeo da seguinte forma

Como a superfiacutecie que determina o modelo eacute orientada (conteacutem vetores

normais agrave superfiacutecie que apontam para ldquoforardquo do modelo) Pauly considera que

um modelo natildeo soacutelido divide o espaccedilo em dois sub-espaccedilos um ldquoforardquo do

modelo (os vetores normais apontam para este sub-espaccedilo) e um que estaacute

ldquodentrordquo do modelo (os vetores normais apontam para direccedilatildeo oposta a este sub-

espaccedilo) Por exemplo um plano eacute representado como um conjunto de surfels

contidos num determinado espaccedilo geomeacutetrico plano π Cada surfel conteacutem um

vetor normal direcionado Este modelo divide entatildeo o espaccedilo em dois sub-

espaccedilos o sub-espaccedilo que eacute apontado por estes surfels (considerado ldquoforardquo do

modelo) e o sub-espaccedilo que estaacute na direccedilatildeo oposta (considerado ldquodentrordquo do

modelo) Desta forma ele aplica as classificaccedilotildees de ldquodentrordquo e ldquoforardquo de um

modelo tambeacutem a modelos natildeo soacutelidos A partir desta consideraccedilatildeo as

Operaccedilotildees Booleanas com Pontos 41

operaccedilotildees booleanas satildeo realizadas com os modelos natildeo soacutelidos da mesma

forma que com os modelos soacutelidos

Para determinar esta classificaccedilatildeo (dentro ou fora do modelo) Pauly utiliza

a Regra 2 Para pesquisa do surfel mais proacuteximo o meacutetodo usa a estrutura Kd-

tree [16] e tambeacutem o algoritmo ANN [16] No entanto o meacutetodo apresenta uma

restriccedilatildeo da Regra 2 ela soacute deve ser usada para classificaccedilotildees de pontos x se

a distacircncia x-p for maior que o espaccedilamento da amostragem local ηp em p

Este espaccedilamento da amostragem local ηp em p eacute um caacutelculo aproximado da

distacircncia meacutedia entre os surfels vizinhos a p Se x estaacute muito proacuteximo agrave

superfiacutecie a classificaccedilatildeo pode falhar Neste caso ele calcula o ponto exato de

S mais proacuteximo a x usando a projeccedilatildeo MLS (ldquoMoving Least Squaresrdquo)

Por questotildees de melhoria de desempenho utiliza-se o fato de que sendo

Ωp (x) a classificaccedilatildeo do ponto x em relaccedilatildeo agrave amostragem P tem-se que Ωp (x)

= Ωp (xrsquo) para todos os pontos de xrsquo que estatildeo dentro da esfera de centro x e

raio igual a x-p - ηp (onde p eacute o surfel mais proacuteximo e ηp eacute o espaccedilamento

local da amostragem em p acima citado) Ou seja sendo x um ponto qualquer p

o surfel mais proacuteximo a x ηp eacute o espaccedilamento local da amostragem em p se

desenharmos uma esfera com centro x e raio igual a x-p - ηp temos que

todos os pontos xrsquo que estatildeo dentro da esfera teratildeo a mesma classificaccedilatildeo de x

Desta forma o nuacutemero de vezes que a classificaccedilatildeo eacute feita (pesquisando-se o

surfel mais proacuteximo ao ponto e usando a Regra 2) diminui em ateacute 90 Assim

em geral a classificaccedilatildeo de um surfel eacute obtida a partir do seu surfel vizinho

Dados

S1 a superfiacutecie MLS de contorno que define o modelo A

S2 a superfiacutecie MLS de contorno que define o modelo B

P1 o conjunto de surfels que representa a superfiacutecie S1

P2 o conjunto de surfels que representa a superfiacutecie S2

Ωp1 (x) a classificaccedilatildeo do ponto p em relaccedilatildeo a uma amostragem P1

Q1 o subconjunto de P1 que vai compor o resultado

Ωp2 (x) a classificaccedilatildeo do ponto p em relaccedilatildeo a uma amostragem P2

Q2 o subconjunto de P2 que vai compor o resultado

Os conjuntos Q1 e Q2 satildeo obtidos por meio da Tabela 1 mostrada abaixo

Operaccedilotildees Booleanas com Pontos 42

Tabela 1 Classificaccedilatildeo para operaccedilotildees booleanas

Para o tratamento de interseccedilatildeo neste meacutetodo satildeo computados pontos

que caem exatamente na curva de interseccedilatildeo e estes satildeo acrescentados ao

modelo resultado Estes pontos satildeo determinados de forma que a densidade da

amostragem vai crescendo agrave medida que os surfels se aproximam da curva de

interseccedilatildeo e convergem para este ponto de interseccedilatildeo como mostra a Figura

13

(a) (b) (c)

Figura 13 - Os novos surfels satildeo colocados exatamente na curva de interseccedilatildeo

e convergem para o ponto de interseccedilatildeo

A Figura 14 mostra o processo de encontrar os surfels que caem nesta

curva de interseccedilatildeo Inicialmente satildeo encontrados todos os pontos de Q1 e Q2

que estatildeo proacuteximos agrave curva de interseccedilatildeo por meio da funccedilatildeo de distacircncia do

operador de projeccedilatildeo MLS Em seguida procura-se todos os pares mais

proacuteximos (q1 є Q1 q2 є Q2 ) e computa-se o ponto q na curva de interseccedilatildeo da

seguinte forma (veja a Figura 14)Seja r o ponto na linha de interseccedilatildeo dos dois

planos tangentes em q1 e q2 e que estaacute mais proacuteximo a estes dois pontos isto eacute

que minimiza a distacircncia ||r-q1|| + ||r-q2|| r eacute a primeira aproximaccedilatildeo de q e agora

pode ser projetado sobre S1 e S2 para obter dois novos pontos de partida q1rsquo e q2

rsquo

para a iteraccedilatildeo Este procedimento pode ser repetido iterativamente ateacute que os

pontos q1 e q2 convirjam ao ponto q na curva de interseccedilatildeo Normalmente este

processo requer menos de trecircs iteraccedilotildees

Operaccedilotildees Booleanas com Pontos 43

(a) (b)

(c)

Figura 14 (a) Suponhamos a reta que eacute a interseccedilatildeo do plano tangente a S1 em q1 e o

plano tangente a S2 em q2 O ponto r eacute o ponto desta reta que estaacute mais proacuteximo a q1 e

q2 (b) r eacute projetado sobre S1 e S2 obtendo-se q1acute e q2acute dois novos pontos de partida

para nova iteraccedilatildeo (c) A nova iteraccedilatildeo gera r que eacute uma aproximaccedilatildeo melhor de q

Pauly faz o tratamento de arestas vivas em tempo de renderizaccedilatildeo Ele

faz uma alteraccedilatildeo no renderizador Marca os surfels de interseccedilatildeo e ao

renderizaacute-los satildeo cortados para gerar uma aresta viva

44 Validade da Regra 2

Os dois meacutetodos analisados nesta dissertaccedilatildeo utilizam a seguinte regra

para a classificaccedilatildeo de um surfel

Regra 2 dado um volume V determinado por uma superfiacutecie de contorno

S uma amostragem P da superfiacutecie S um ponto x qualquer um ponto p є P que

eacute a amostra mais proacutexima a x um vetor ny normal a S em p e orientado para

fora de S temos que (x ndash p) np gt 0 x notinV

Em [16] eacute colocado que esta regra eacute tirada da seguinte propriedade da

geometria diferencial (aqui chamada Propriedade 1)

Propriedade 1 Dado um volume V determinado por uma superfiacutecie de

contorno S contiacutenua e duplamente diferenciaacutevel um ponto x qualquer um ponto

Operaccedilotildees Booleanas com Pontos 44

y є S que eacute o ponto de S mais proacuteximo a x um vetor ny normal a S em y e

orientado para fora de S temos que (x ndash y) ny gt 0 x notinV

A Figura 15 ilustra esta propriedade

Figura 15 Para verificar se o ponto x estaacute fora de um contorno C encontra-se o ponto y

de C Se o produto interno entre a normal em y e o vetor que liga y a x for maior que

zero entatildeo x estaacute fora de C senatildeo estaacute dentro de C

Pauly assume que tendo uma amostragem P da superfiacutecie S podemos

usar a Propriedade 1 substituindo y por p o surfel mais proacuteximo ao ponto x (x ndash

p) np gt 0 x notinV (Regra 2) Esta amostragem P em seu trabalho eacute

(aproximadamente) uma ldquoamostragem adequadardquo Tambeacutem seu tratamento de

interseccedilatildeo cria uma aproximaccedilatildeo dela (seccedilatildeo 43) Empiricamente a

ldquodiscretizaccedilatildeo da propriedaderdquo eacute vaacutelida a partir desta suposiccedilatildeo Mas isso natildeo foi

demonstrado teoricamente em seu trabalho

Pauly coloca em [16] que natildeo existe ainda uma teoria matemaacutetica rigorosa

de amostragem anaacuteloga a teoria de Fourier para superfiacutecies discretas

A melhor aproximaccedilatildeo teoacuterica para esta aacuterea eacute o uso do Eixo Medial que

foi colocado em [10] Vamos descrever este trabalho brevemente nesta seccedilatildeo

Este trabalho apresenta um algoritmo de reconstruccedilatildeo de superfiacutecie que parte de

uma amostragem adequada (abaixo definida) de pontos e obteacutem uma malha

que eacute topologicamente equivalente agrave superfiacutecie do objeto e agrave medida que a

densidade da amostragem cresce a saiacuteda converge para esta superfiacutecie

Para definir amostragem adequada o trabalho parte do conceito de Eixo

Medial

Operaccedilotildees Booleanas com Pontos 45

ldquoEixo Medialrdquo de uma superfiacutecie 2D posicionada no R3 eacute o conjunto

(fechado) de pontos pi para os quais buscando-se o ponto da superfiacutecie que

estaacute mais proacuteximo a pi mais de um ponto pertencentes a esta superfiacutecie satildeo

encontrados A Figura 16 abaixo ilustra o Eixo Medial em 2D

Figura 16 [10] As curvas de cor mais clara satildeo o Eixo Medial da curva em preto

Em duas dimensotildees os veacutertices de Voronoi de uma amostragem densa

aproximam o ldquoEixo Medialrdquo da amostragem (mas esta propriedade natildeo se

estende a 3D) A Figura 17 mostra o Eixo Medial em 3D

Figura 17 [10] Em 3D geralmente o Eixo Medial eacute uma superfiacutecie 2D (em cor mais

clara) Aqui o quadrado eacute o Eixo Medial da superfiacutecie transparente que o contorna

Podemos definir agora a amostragem adequada da seguinte forma

Supondo uma superfiacutecie suave que quer dizer uma 2-manifold duplamente

diferenciaacutevel posicionada no R3 uma ldquoamostragem adequadardquo desta superfiacutecie eacute

aquela na qual a densidade da amostragem eacute (pelo menos) inversamente

proporcional agrave distacircncia ao ldquoEixo Medialrdquo A Figura 18 mostra uma amostragem

adequada

Operaccedilotildees Booleanas com Pontos 46

Figura 18 [10] A figura mostra o diagrama de Voronoi de uma amostragem de pontos S

Da mesma forma que o a amostragem aproxima a curva os veacutertices de Voronoi

aproximam o Eixo Medial

Na praacutetica na reconstruccedilatildeo da superfiacutecie uma aproximaccedilatildeo deste ldquoEixo

Medialrdquo eacute computada (devido agrave dificuldade de computaacute-lo exatamente e em

alguns casos ateacute impossibilidade)

Melhorias Propostas 47

5 Melhorias Propostas

No capiacutetulo 4 apresentamos dois meacutetodos que realizam operaccedilotildees

booleanas em modelos por pontos o meacutetodo de Adams e Dutreacute [2] e o meacutetodo

de Pauly[3] Para esta dissertaccedilatildeo usamos o meacutetodo de Adams e Dutreacute [2] e

propomos as seguintes melhorias

- Alteramos o momento em que eacute feita a classificaccedilatildeo da octree Fazemos

esta classificaccedilatildeo durante a sua criaccedilatildeo Os noacutes filhos de um noacute pai P qualquer

satildeo classificados logo apoacutes a criaccedilatildeo de todos estes filhos de P

independentemente do restante da octree ter sido criada Isso pode ser feito

porque a octree eacute construiacuteda na ordem raiz-esquerda-direita (preorder

traversal) e portanto apoacutes todos os filhos de um noacute pai serem criados a parte

necessaacuteria da octree para a classificaccedilatildeo destes filhos jaacute estaacute criada

- A classificaccedilatildeo da octree eacute otimizada classificando-se os cantos dos seus

noacutes como dentro ou fora do modelo Na classificaccedilatildeo de um noacute n1 a partir de seu

vizinho n2 se os cantos que satildeo comuns a n1 e n2 tiverem a mesma

classificaccedilatildeo esta seraacute dada ao noacute Assim diminuiacutemos o nuacutemero de pesquisas

pelo surfel mais proacuteximo que eacute a parte criacutetica da classificaccedilatildeo dos noacutes da octree

em termos de tempo de processamento

- Acrescentamos um valor miacutenimo (maior que zero) para o nuacutemero de

surfels contidos em um noacute que eacute uma das condiccedilotildees de parada na criaccedilatildeo da

octree Verificamos que desta forma diminui-se a chance de erro na classificaccedilatildeo

de partes criacuteticas como ldquoarestas vivasrdquo

Uma comparaccedilatildeo entre a nossa implementaccedilatildeo e a de Pauly tambeacutem seraacute

feita no capiacutetulo 6

51 Descriccedilatildeo do algoritmo

O algoritmo implementado para esta dissertaccedilatildeo baseado no meacutetodo de

Adams e Dutreacute [2] pode ser dividido nas seguintes partes Criaccedilatildeo e

classificaccedilatildeo de uma octree para cada modelo Teste DentroFora Criaccedilatildeo do

modelo resultado Natildeo foi implementado tratamento especial algum de

interseccedilatildeo para o nosso plugin As proacuteximas seccedilotildees apresentam estas partes

Melhorias Propostas 48

511 Criaccedilatildeo e classificaccedilatildeo de uma octree para cada modelo

As ideacuteias do algoritmo satildeo aqui ilustradas em 2D mas a extensatildeo delas

para 3D eacute feita facilmente

Para cada modelo a octree eacute criada e classificada da seguinte forma

Figura 19-Quadtree classificada Os noacutes mais escuros estatildeo fora do modelo os mais claros dentro e os em tom intermediaacuterio satildeo noacutes de contorno

Gera-se uma ldquocaixa envolventerdquo do modelo contendo todos os surfels e

cria-se o noacute raiz da octree que corresponde a esta ldquocaixa envolventerdquo Este noacute

raiz eacute subdividido em oito filhos e seus surfels satildeo distribuiacutedos entre eles Ao

inveacutes de testarmos os valores de xy e z para cada surfel a fim de determinar

para qual filho ele iraacute utilizamos listas auxiliares Primeiro os surfels satildeo

subdivididos em dois grupos pelos valores de x e armazenados em uma lista

auxiliar Em seguida cada uma das listas eacute subdividida pelo valor de y e as

quatro listas obtidas seratildeo subdivididas pelo valor de z Ao final teremos 8 listas

de surfels cada uma delas pertencente a um filho

Cada noacute seraacute entatildeo novamente subdividido enquanto contiver um nuacutemero

de surfels gt nmin (valor preacute-definido) ou enquanto a profundidade da aacutervore lt pmax

(valor preacute-definido) Na figura 19 pmax = 3 e nmin = 3

Melhorias Propostas 49

Figura 20-O noacute cheio eacute dividido em trecircs partes agrave esquerda a regiatildeo estaacute dentro do modelo agrave direita estaacute fora e entre as duas linhas que dividem o noacute estaacute a regiatildeo que conteacutem os surfels

Os noacutes cheios recebem um tratamento especial Eles satildeo subdivididos em

trecircs partes da seguinte forma uma que estaacute fora do modelo outra que estaacute

dentro e uma que conteacutem os surfels Esta subdivisatildeo eacute feita por meio da criaccedilatildeo

de dois planos paralelos que dividem o noacute Para determinar estes planos

calcula-se o vetor nm igual agrave meacutedia das normais dos surfels do noacute nm = sum ns

sum ns onde ns eacute a normal de cada surfel do noacute Em seguida encontra-se o

surfel com maior produto interno entre a sua normal e a normal meacutedia

d1=Max(nm ٠ ns) Este surfel juntamente com a normal meacutedia define um dos

planos Encontra-se tambeacutem o surfel com menor produto interno entre a sua

normal e a normal meacutedia d2=Min (nm ٠ ns) Este surfel juntamente com a normal

meacutedia define o outro plano (Figura 20) Se o noacute conteacutem surfels de superfiacutecies de

orientaccedilotildees diferentes ele natildeo seraacute subdividido ou seja os planos coincidiratildeo

com os planos que delimitam o proacuteprio noacute Este teste foi implementado da

seguinte forma escolhe-se um surfel qualquer do noacute Calcula-se o produto

interno entre a normal deste surfel e as outras normais dos outros surfels deste

noacute Se algum produto interno for menor que zero este noacute natildeo seraacute subdividido

Apoacutes a etapa de subdivisatildeo classificam-se os oito cantos deste noacute como

dentro ou fora do modelo por meio da classificaccedilatildeo de um ponto que

descreveremos na sub-seccedilatildeo 5111

Melhorias Propostas 50

a b

c d

Figura 21-O noacute a eacute classificado pelo noacute c o noacute d tambeacutem eacute classificado pelo noacute c a classificaccedilatildeo do noacute a eacute propagada para o noacute b

Jaacute os noacutes vazios da octree seratildeo classificados como ldquodentrordquo ou ldquoforardquo do

modelo da seguinte forma cada noacute folha vazio eacute classificado a partir de um de

seus irmatildeos vizinhos adjacentes Se ele possuir um vizinho adjacente cheio ele

seraacute classificado por este vizinho se natildeo possuir os vizinhos adjacentes seratildeo

classificados primeiro e ele teraacute esta mesma classificaccedilatildeo (Figura 21) Como tem

que existir sempre pelo menos um noacute cheio entre os filhos de um noacute pai entatildeo

sempre esta classificaccedilatildeo poderaacute ser feita Com a classificaccedilatildeo de todos os

filhos tem-se tambeacutem a classificaccedilatildeo dos cantos do noacute pai

Mf03c003fmx a b

Figura 22-Os cantos a e b do noacute cheio possuem a mesma classificaccedilatildeo fora do modelo Esta classificaccedilatildeo foi dada ao noacute vazio adjacente

Melhorias Propostas 51

Para classificar um noacute vazio por meio de um noacute cheio verificam-se os

cantos comuns destes dois noacutes se todos os cantos tiverem a mesma

classificaccedilatildeo esta seraacute dada ao noacute vazio (Figura 22) Se houver classificaccedilotildees

diferentes escolhe-se o surfel do noacute cheio mais proacuteximo ao noacute vazio faz-se o

produto interno entre a normal deste surfel e o vetor que liga o centro do noacute

cheio ao centro do noacute vazio (ou o vetor que liga o surfel ao centro do noacute vazio)

Se o produto interno for maior que zero o noacute eacute classificado como ldquoforardquo senatildeo eacute

classificado como ldquodentrordquo Para encontrar o surfel (pertencente a um noacute cheio)

mais proacuteximo ao noacute vazio existem dois casos

- O noacute cheio eacute folha percorre-se toda a lista de surfels e escolhe o surfel

mais proacuteximo da fronteira entre o noacute cheio e o vazio

- O noacute cheio natildeo eacute um noacute folha percorrem-se os filhos do noacute cheio ou seja

esta pesquisa eacute feita descendo na octree a partir do noacute cheio procurando o

surfel mais proacuteximo agrave fronteira do pai com o noacute vazio a ser classificado

Classificando o centro do noacute vazio todo o noacute deve ter a mesma

classificaccedilatildeo pois este noacute natildeo conteacutem surfels Para encontrar o surfel do noacute

vazio mais proacuteximo da fronteira entre o noacute cheio e o vazio basta testar o valor da

coordenada se a fronteira eacute o lado direito do noacute cheio escolhe-se o surfel com

maior coordenada lsquoxrsquo se eacute o lado esquerdo escolhe-se o surfel com menor lsquoxrsquo

se lado superior surfel com maior lsquoyrsquo etc A seguir apresentamos a classificaccedilatildeo

de um ponto qualquer pertencente a um noacute cheio

Figura 23- Quadtree classificada

Melhorias Propostas 52

5111 Classificaccedilatildeo de um ponto de um noacute cheio

Figura 24 [2] A normal n eacute a normal meacutedia e os surfels s1 e s2 juntamente com a normal

n definem as retas que dividem o noacute O ponto a estaacute fora do modelo e o ponto b estaacute

dentro do modelo

Para um ponto localizado dentro do noacute faz-se o seguinte teste se o noacute foi

dividido testa-se de acordo com a divisatildeo do noacute se o ponto estaacute na parte do noacute

que estaacute dentro do modelo ele eacute classificado como ldquodentrordquo se o ponto estaacute na

parte que estaacute fora do modelo ele eacute classificado como ldquoforardquo (Figura 24) se o

ponto estaacute na parte que conteacutem os surfels encontra-se o surfel s pertencente ao

noacute mais proacuteximo do ponto e o classifica de acordo com s seja ns a normal em s

cs a coordenada de s cp a coordenada do ponto Se (cp - cs )٠ ns gt 0 o ponto

seraacute classificado como ldquoforardquo Senatildeo seraacute classificado como ldquodentrordquo

Se o noacute natildeo foi dividido em planos esta classificaccedilatildeo a partir do surfel

mais proacuteximo seraacute sempre feita

512 Teste DentroFora

Melhorias Propostas 53

Figura 25-Duas circunferecircncias e suas quadtrees correspondentes

O Teste DentroFora classifica os surfels de um modelo como dentro ou

fora de outro modelo ou na sua interseccedilatildeo Este teste foi aqui implementado

exatamente como foi proposto em Adams e Dutreacute [2] exceto que natildeo foi

implementado o meacutetodo TINN - Triangle Inequality Nearest Neighbour [19]

Cada octree eacute percorrida verificando-se se os seus noacutes ou surfels estatildeo dentro

fora ou no contorno do outro modelo (Figura 25) Sejam A e B duas octrees e

queremos classificar a octree A As duas octrees (AB) satildeo percorridas partindo

da raiz

Para cada noacute de A existem quatro casos (Figura 26) Para testar estas

situaccedilotildees os boxes dos noacutes satildeo aumentados de rmax o raio do maior surfel do

modelo Isto eacute feito para compensar o fato de que o surfel natildeo eacute apenas um

ponto mas sim considerado como um disco

Os quatro casos satildeo

Se o noacute de A natildeo intersecta B entatildeo todos os surfels deste noacute satildeo

classificados como fora

Se o noacute de A intersecta apenas noacutes de B que estatildeo fora do modelo

todos os surfels deste noacute satildeo fora

Se o noacute de A intersecta apenas noacutes de B que estatildeo dentro do modelo

todos os surfels deste noacute satildeo dentro

Melhorias Propostas 54

Se o noacute de A intersecta noacutes de B que estatildeo dentro e tambeacutem noacutes de B

que estatildeo fora testa-se se este noacute de A eacute ou natildeo folha Se natildeo for folha

percorre-se os filhos deste noacute de A ateacute encontrar um noacute folha cheio que

intersecta B Para cada surfel sa deste noacute folha de A encontra-se o surfel de B

mais proacuteximo e classifica-se a coordenada de sa da forma apresentada na seccedilatildeo

5111 Seja sb o surfel usado na classificaccedilatildeo de sa Se os discos de sb e sa

se intersectam sa eacute classificado como ldquointerseccedilatildeordquo

(a) (b)

(c) (d)

Figura 26- a modelos natildeo se intersectam b modelo intersecta noacutes fora c modelo intersecta apenas noacutes dentro d modelo intersecta noacutes dentro e noacutes fora

513 Criaccedilatildeo do modelo resultado

Um novo modelo eacute criado com os seguintes surfels (de acordo com a

operaccedilatildeo booleana escolhida pelo usuaacuterio - veja Regra 1 da seccedilatildeo 41)

Uniatildeo - surfels de A que estatildeo fora de B + surfels de B que estatildeo fora de A

Melhorias Propostas 55

Interseccedilatildeo - surfels de A que estatildeo dentro de B + surfels de B que estatildeo

dentro de A

Diferenccedila A-B - surfels de A que estatildeo fora de B + surfels de B que estatildeo

dentro de A (com orientaccedilatildeo invertida)

Como natildeo foi implementado tratamento especial algum de interseccedilatildeo para

o nosso plugin os surfels que se intersectam satildeo mantidos no modelo resultado

final sem modificaccedilotildees

Descrito o algoritmo vejamos a seguir a sua implementaccedilatildeo

52 Implementaccedilatildeo

Este algoritmo foi implementado na forma de um plugin para o software

PointShop 3D [11] Este plugin foi desenvolvido na linguagem C e no sistema

operacional Windows

A escolha deste tipo de implementaccedilatildeo permitiu-nos usar o software

PointShop para os testes do algoritmo Estes testes foram feitos com os modelos

disponibilizados para o PointShop [11] Nesta seccedilatildeo apresentaremos o software

PointShop e as principais estruturas de dados usadas em nosso plugin

O Pointshop eacute um software aberto com seu coacutedigo disponiacutevel e preparado

para trabalhar com plugins Eacute um software de ediccedilatildeo de modelos 3D por pontos

Ele permite aleacutem de visualizar o modelo alterar as suas caracteriacutesticas como

cor brilho e fazer mapeamento de textura iluminaccedilatildeo filtragem (Figura 27)

Melhorias Propostas 56

Figura 27-Software PointShop 3D com dois modelos carregados na sua cena

Aleacutem disso pode-se criar uma cena com vaacuterios modelos e visualizaacute-los de

qualquer ponto de vista Implementa o virtual trackball para rotacionaacute-los e

transladaacute-los Usa uma iluminaccedilatildeo simples direcional A sua arquitetura eacute

extensiacutevel permite que o usuaacuterio adicione seus proacuteprios componentes ao

sistema Possui trecircs tipos de componentes

ldquoToolsrdquo fornece funcionalidades para ediccedilatildeo interativa de superfiacutecie Satildeo

disponibilizados na ldquotoolbarrdquo

Plugins fornece funcionalidades para processar em um soacute passo

modelos ou partes deles selecionadas Satildeo disponibilizados no menu ldquoPluginsrdquo

Renderes fornece funcionalidades de display para os modelos

Para esta dissertaccedilatildeo foi escolhida a construccedilatildeo do componente Plugin

por adequar-se agrave nossa proposta e ser a mais simples de ser construiacuteda O

PointShop [11] jaacute conteacutem uma tool que executa operaccedilotildees booleanas e

deformaccedilatildeo free-form sobre os modelos carregados na cena usando o meacutetodo

de Pauly [3] apresentado no capiacutetulo 4 O nosso plugin Operaccedilotildees Booleanas

implementa o algoritmo descrito na seccedilatildeo anterior baseado na proposta de

Melhorias Propostas 57

Adams e Dutreacute [2] Uma comparaccedilatildeo entre o nosso plugin e a tool de Pauly [3] eacute

feita no capiacutetulo 6

Figura 28-Menu do PointShop com o plugin e as opccedilotildees para operaccedilotildees booleanas

Para se executar o plugin o usuaacuterio precisa carregar dois modelos na

cena do PointShop acionar o plugin informando a operaccedilatildeo que seraacute executada

O plugin executaraacute o algoritmo acima proposto e carregaraacute o resultado na cena

do Pointshop retirando os modelos anteriores

521 Estruturas de Dados

Como vimos o software PointShop [11] trabalha com modelos por pontos

Um modelo deste software descrito na seccedilatildeo 42 conteacutem todas as informaccedilotildees

que o algoritmo proposto em Bart [2] necessita Abaixo relacionamos as

Melhorias Propostas 58

principais estruturas de dados do PointShop usadas no plugin e as principais

estruturas de dados do nosso plugin

As principais classes do PointShop usadas no plugin satildeo

Classe Scene

Classe Objects

Classe SurfelColections

Classe Surfel

Classe StatusBar

Classe Transformer

A hierarquia de dados eacute a seguinte a Scene conteacutem vaacuterios Objects os

quais conteacutem SurfelColections Cada SurfelColections conteacutem Surfels que

suportam uma ou mais propriedades tais como cor difusa cor especular

Classe Scene Classe que representa uma cena que conteacutem modelos

Classe Object Um modelo eacute representado pela classe Object que

conteacutem uma SurfelCollection e as matrizes de transformaccedilatildeo para rotaccedilatildeo

escala e translaccedilatildeo Cada Object eacute identificado pelo seu nome que eacute uacutenico na

Scene O meacutetodo getUniqueName retorna um nome uacutenico Cada Object tem sua

proacutepria matriz de transformaccedilatildeo que pode ser modificada com setRotation

rotate setPosition translate setScale e scale Objects podem ser copiados com

copy Objects consiste em um conjunto de surfels os quais podem ser

recuperados pela getSurfelCollection O Object pode ser ativado com

setActiveObject e recuperado com getActiveObject

Objects podem ser adicionados ou removidos com addObject e

removeObject Os Objects podem ser obtidos pela getFirstObject e

getNextObject

Classe SurfelCollection representa o conjunto de surfels de um modelo

Cada surfelcollection consiste em um conjunto de surfels (SurfelInterface) de

tamanho obtido por getNofSurfels Os surfels podem ser recuperados com

getFirstSurfel getCurrentSurfel e getNextSurfel

A SurfelCollection conteacutem um PropertyDescriptor e uma SurfelList

A SurfelList eacute uma lista duplamente encadeada de surfels Possui os

atributos firstSurfel lastSurfel currentSurfel que satildeo ponteiros para uma

SurfelInterface nSurfels que eacute o nuacutemero de Surfels

A SurfelInterface define a API para os surfels que satildeo os menores

elementos que compotildeem um Object Podem ser considerados como pontos com

uma normal que define a orientaccedilatildeo do ciacuterculo (ou elipse) que seraacute desenhado

Melhorias Propostas 59

tatildeo logo o surfel seja renderizado Tem como atributos dois ponteiros (next e

prev) para SurfelInterface

PropertyDescriptor consiste em ateacute 32 valores descrevendo quais as

propriedades a SurfelInterface suporta

Classe Surfel classe que representa o surfel

Classe StatusBar classe que imprime mensagens na tela Os plugins

podem mandar mensagens para o usuaacuterio pela StatusBar

Mensagens texto podem ser impressas com showMessage O progresso

de uma operaccedilatildeo pode ser indicado com setProgress ou resetProgress

Classe Transformer representa a transformaccedilatildeo entre sistemas de

coordenadas Esta classe fornece meacutetodos para transformar pontos e vetores

entre os diferentes sistemas de coordenadas do Pointshop

A seguir apresentamos as principais estruturas de dados do plugin

Operaccedilotildees Booleanas

As principais estruturas de dados do plugin satildeo boundingbox tree no

lista_surfel surfel

Boundingbox conteacutem dois pontos 3D que definem uma caixa que conteacutem

o modelo um ponto com menores coordenadas xy e z e outro ponto com

maiores xyz

Tree representa a octree do modelo Cada registro conteacutem um ponteiro

para um noacute e oito ponteiros para as 8 octrees filhas

No representa um noacute da octree Conteacutem os seguintes dados

- localizaccedilatildeo do noacute que eacute o canto inferior esquerdo do noacute

- lista_surfel (preenchida apenas para noacutes folha cheios)

- quantidade de surfels do noacute

- classificaccedilatildeo do noacute como dentro fora ou contorno

- classificaccedilatildeo do noacute em relaccedilatildeo a outro modelo

- indica se o noacute eacute folha ou natildeo

- vetor que eacute a meacutedia das normais dos surfels do noacute

- ponto que eacute a meacutedia das localizaccedilotildees dos surfels do noacute

- surfel que tem (entre todos os surfels do noacute) o maior produto interno

entre a sua normal e a normal meacutedia

- surfel que tem (entre todos os surfels do noacute) o menor produto interno

entre a sua normal e a normal meacutedia

- produto interno maacuteximo e miacutenimo entre as normais dos surfels do noacute e a

normal meacutedia deste noacute

Melhorias Propostas 60

- indica se o noacute conteacutem surfels com normais em sentido oposto (produto

interno entre elas eacute menor que zero)

- classificaccedilatildeo dos oito cantos do noacute

lista_surfels lista em que cada registro conteacutem um apontador para um

surfel e um apontador para o proacuteximo registro

surfel representa o surfel da octree Conteacutem a classificaccedilatildeo em relaccedilatildeo a

outro modelo e um ponteiro para o surfel do Poinshop

Resultados 61

6 Resultados

Neste capiacutetulo apresentamos os testes realizados com o plugin para o

PointShop implementado para esta dissertaccedilatildeo a comparaccedilatildeo deste plugin com

o plugin de Pauly [3] e a comparaccedilatildeo entre o meacutetodo de Adams e Dutreacute [2] e o

meacutetodo de Pauly [3]

61 Testes

Os testes foram feitos em um PC x86 Family 6 261600 KB de RAM sem

placa graacutefica sistema operacional Windows 2000 O plugin foi implementado na

linguagem C

Os modelos usados para os testes satildeo modelos disponibilizados no

PointShop [11] Vale lembrar que o meacutetodo implementado em nosso plugin eacute

restrito a modelos soacutelidos e portanto foram usados apenas estes modelos

soacutelidos para os testes

O modelo na Figura 29 que eacute um dos modelos disponibilizados no

PointShop [11] foi usado para mostrar o resultado das operaccedilotildees realizadas

pelo plugin implementado nesta dissertaccedilatildeo O modelo Igea eacute um modelo soacutelido

que conteacutem 134345 surfels

Resultados 62

Figura 29-Modelo do PointShop Igea

Para realizar as operaccedilotildees este modelo foi carregado na cena do

PointShop duas vezes e um deles colorido de vermelho As Figuras 30 31 32

mostram o resultado da operaccedilatildeo de uniatildeo interseccedilatildeo e diferenccedila

respectivamente Os nuacutemeros de surfels dos modelos resultantes satildeo mostrados

na Tabela 2

Resultados 63

Figura 30-Resultado da uniatildeo de duas Igeas

Figura 31-Resultado da interseccedilatildeo de duas Igeas

Resultados 64

Figura 32-Resultado da diferenccedila entre duas Igeas

Tabela 2-Nuacutemero de surfels dos modelos resultantes

Observamos que o nuacutemero de surfels dos modelos resultantes estaacute

coerente com as figuras dos seus modelos

Para avaliar o tempo de processamento das operaccedilotildees foram realizados

vaacuterios testes com o objetivo de obter uma meacutedia dos tempos de realizaccedilatildeo de

cada operaccedilatildeo Tambeacutem foram armazenados os tempos da criaccedilatildeo das duas

octrees e da classificaccedilatildeo de todos os surfels dos dois objetos (como dentro ou

fora do outro modelo) Estes testes foram feitos usando o modelo Igea A meacutedia

dos tempos de processamento foi calculada e os resultados satildeo mostrados na

Tabela 3 Verificamos que o maior tempo gasto eacute para criaccedilatildeo das octrees

Verificamos tambeacutem que este resultado apresentado eacute similar ao resultado

verificado empiricamente com o plugin de Pauly [3] Os tempos gastos para

realizar as operaccedilotildees satildeo similares e o maior tempo gasto no plugin de Pauly

tambeacutem eacute para inicializaccedilatildeo de suas estruturas de dados que incluem a kd-tree

Operaccedilatildeo Nuacutemero de surfels do modelo resultado

Uniatildeo 189715

Interseccedilatildeo 72225

Diferenccedila 134552

Resultados 65

Operaccedilatildeo Criaccedilatildeo das

Octrees (seg)

Classificaccedilatildeo

(seg)

Criaccedilatildeo do

resultado (seg)

Total (seg)

Uniatildeo 39375 1324 18925 7154

Interseccedilatildeo 38585 1585 09547 63982

Diferenccedila 399875 1504 1729 729475

Tabela 3- Meacutedia dos tempos de processamento para as operaccedilotildees com duas Igeas

Com o objetivo de expor melhor os resultados deste trabalho

apresentamos abaixo mais um teste das operaccedilotildees booleanas usando o nosso

plugin Os modelos usados para este segundo teste satildeo o Max Planck e o Male

ambos modelos soacutelidos disponibilizados no PointShop Estes modelos satildeo

mostrados nas figura 33 e 34

O primeiro Max Planck conteacutem 52809 surfels

Figura 33-Modelo do PointShop MaxPlanck

O segundo modelo abaixo Male conteacutem 148138 surfels

Resultados 66

Figura 34-Modelo do PointShop Male

As Figuras 353637 mostram o resultado da operaccedilatildeo de uniatildeo interseccedilatildeo

e diferenccedila respectivamente usando os dois modelos acima Podemos observar

pela figura 35 que o resultado da operaccedilatildeo de diferenccedila neste caso gerou um

modelo resultado com trecircs partes desconexas Os nuacutemeros de surfels de cada

modelo resultado satildeo mostrados na Tabela 5

Figura 35- Resultado da Uniatildeo do modelo Male com MaxPlanck

Resultados 67

Figura 36-Resultado da interseccedilatildeo do modelo Male com o MaxPlanck

Figura 37-Resultado da diferenccedila do modelo Male do modelo MaxPlanck

As meacutedias de tempos de processamento foram calculadas da mesma

forma que o primeiro teste com o modelo Igea acima apresentado Os

resultados satildeo mostrados na Tabela 4 Podemos observar que este teste

Resultados 68

apresenta tempos um pouco menores que o teste com o modelo Igea Isto se

deve ao fato de que o modelo MaxPlanck ser significativamente menor que o

modelo Igea MaxPlanck possui 52809 surfels e Igea conteacutem 134345 surfels

Operaccedilatildeo Criaccedilatildeo das

Octrees (seg)

Classificaccedilatildeo

(seg)

Criaccedilatildeo do

resultado (seg)

Total

(seg)

Uniatildeo 3012 1254 102 5285

Interseccedilatildeo 2985 0901 0861 4747

Diferenccedila 2965 0911 0791 4667

Tabela 4-Tempo de processamento das operaccedilotildees com os modelos MaxPlanck e Male

Operaccedilatildeo Nuacutemero de surfels do resultado

Uniatildeo 126532

Interseccedilatildeo 88414

Diferenccedila 77635

Tabela 5-Nuacutemero de surfels dos modelos resultados das operaccedilotildees com os modelos MaxPlanck e Male

Em seguida apresentaremos uma comparaccedilatildeo entre o nosso plugin e o

plugin de Pauly[3] e tambeacutem uma comparaccedilatildeo entre o meacutetodo de Adams e Dutreacute

[2] e o meacutetodo de Pauly [3]

62 Comparaccedilatildeo entre os dois meacutetodos que realizam operaccedilotildees booleanas

A comparaccedilatildeo entre os meacutetodos de Pauly[3] e de Adams e Dutreacute foi feita

em termos de tempo de processamento e em termos conceituais Em termos de

tempo de processamento comparamos o plugin de Pauly[3] com o nosso plugin

Em termos de tempo de processamento verifica-se empiricamente que os

dois meacutetodos apresentam tempos bastante similares Entretanto o tempo de

processamento do algoritmo aqui implementado ainda pode ser melhorado com

Resultados 69

o uso do meacutetodo TINN [19] que foi proposto em Adams[2] - para otimizar a

pesquisa do surfel mais proacuteximo a um ponto que estaacute localizado na regiatildeo de um

noacute que conteacutem surfels - veja seccedilatildeo 42 O uso deste meacutetodo natildeo foi

implementado para este trabalho e a sua implementaccedilatildeo melhoraria o tempo de

resposta do algoritmo Aleacutem disso o trabalho de Sara F Frisken [12] citado no

capiacutetulo 2 apresenta uma otimizaccedilatildeo no uso de octrees que pode ser

incorporada no algoritmo implementado neste trabalho

Em termos conceituais vamos fazer a comparaccedilatildeo do uso do que

chamamos aqui de Regra 2 do tratamento de interseccedilatildeo e do tratamento de

ldquoarestas vivasrdquo

Como vimos na seccedilatildeo 41 tanto o algoritmo implementado nesta

dissertaccedilatildeo baseado no trabalho de Adams e Dutreacute como o meacutetodo de Pauly

[3] parte do que chamamos aqui de Regra 2 para realizar operaccedilotildees booleanas

com pontos Mas cada um destes meacutetodos daacute um tratamento diferente para o

uso desta regra

O meacutetodo de Pauly usa a Regra 2 para classificaccedilatildeo de cada ponto ou de

cada surfel Para classificar um surfel de B sb como dentro ou fora de A eacute

encontrado o surfel de A sa mais proacuteximo a sb e sb eacute classificado a partir de sa

Para encontrar sa Pauly utiliza uma kd-tree Como esta pesquisa para encontrar

sa eacute cara (mesmo usando uma kd-tree) Pauly utiliza uma esfera que conteacutem

pontos com a mesma classificaccedilatildeo (seccedilatildeo 432) e diminui em 90 este nuacutemero

de pesquisas Pauly utiliza tambeacutem a representaccedilatildeo impliacutecita MLS (Moving Least

Squares) para casos em que a Regra 2 poderia falhar e para tratamento de

interseccedilotildees Entretanto o nuacutemero destes casos em que a Regra 2 poderia falhar

eacute muito pequeno E a representaccedilatildeo MLS natildeo eacute uma estrutura simples de ser

implementada Portanto natildeo encontramos vantagens em usar MLS para estes

casos O meacutetodo de Adams e Dutreacute natildeo trata estes casos e na praacutetica

apresenta resultados bastante satisfatoacuterios como foi mostrado Portanto

consideramos que valeria a pena fazer algum tratamento especial para estes

casos se fosse um procedimento simples Para a execuccedilatildeo do algoritmo de

Pauly o uso de MLS natildeo interfere significativamente porque a construccedilatildeo desta

representaccedilatildeo natildeo eacute feita somente para realizar operaccedilotildees booleanas Os testes

empiacutericos que fizemos com o algoritmo de Pauly natildeo incluem a construccedilatildeo desta

representaccedilatildeo

Aparentemente os dois algoritmos satildeo bastante parecidos um usa octrees

e o outro usa kd-tree As duas estruturas de dados satildeo simples e otimizam a

classificaccedilatildeo dos surfels de um modelo como dentro ou fora do outro modelo

Resultados 70

Mas existe uma diferenccedila conceitual entre dois que merece ser destacada O

algoritmo aqui implementado usa a Regra 2 para classificaccedilatildeo dos noacutes de uma

octree e armazena esta octree classificada (ver capiacutetulo 5) Assim na maioria dos

casos natildeo seraacute necessaacuterio encontrar o surfel mais proacuteximo para classificar um

ponto (ou um surfel) como fora ou dentro de um modelo Caso o ponto esteja em

uma aacuterea da octree classificada ele teraacute a classificaccedilatildeo dada agravequela aacuterea A

pesquisa ao surfel mais proacuteximo seraacute feita apenas nos casos em que o ponto a

ser classificado estaacute localizado entre os planos que subdividem um noacute cheio

O uso desta octree classificada levanta uma questatildeo que natildeo foi citada no

trabalho de Adams e Dutreacute que eacute a proximidade desta estrutura (armazenada)

de octree classificada com uma representaccedilatildeo volumeacutetrica do objeto Sendo

assim esta estrutura pode ser aproveitada para outras funccedilotildees aleacutem da

classificaccedilatildeo dos surfels Por exemplo podemos ter uma aproximaccedilatildeo do

volume de uma cena somando os volumes aproximados dos modelos que a

compotildeem Como o enfoque deste trabalho eacute operaccedilatildeo booleana natildeo vamos nos

aprofundar nesta questatildeo

Outra importante diferenccedila entre os dois trabalhos que jaacute foi explicada na

seccedilatildeo 432 eacute que o meacutetodo de Pauly aplica-se a modelos soacutelidos ou natildeo

soacutelidos enquanto que o meacutetodo de Adams e Dutreacute aplica-se somente a modelos

soacutelidos

Quanto ao tratamento de interseccedilatildeo em termos de visualizaccedilatildeo todos os

dois resolvem bem o problema O tratamento de interseccedilatildeo nos dois trabalhos

tambeacutem resolve o problema da validade da Regra 2 (ver seccedilatildeo 44) Entretanto

o tratamento de Adams e Dutreacute natildeo depende da renderizaccedilatildeo sendo portanto

mais portaacutevel Aleacutem disso uma desvantagem do meacutetodo de Pauly eacute o uso da

representaccedilatildeo impliacutecita MLS (ldquoMoving Least Squaresrdquo) do objeto para obter os

pontos exatamente na curva de interseccedilatildeo Esta representaccedilatildeo torna o

tratamento de interseccedilatildeo mais complexo e a vantagem apresentada natildeo eacute tatildeo

significativa para este tratamento de interseccedilatildeo

Conclusatildeo 71

7 Conclusatildeo

Concluiacutemos entatildeo que as escolhas de Adams e Dutreacute por usar uma

octree classificada e pelo tratamento dado agrave interseccedilatildeo satildeo mais abrangentes

que a escolha de Pauly E consideramos que quanto mais abrangente for uma

escolha conceitual mais resultados poderemos tirar dela No caso de Adams e

Dutreacute eles estendem o problema de classificar um ponto para classificar todo o

modelo Como foi citado ele quase fornece uma representaccedilatildeo volumeacutetrica do

modelo Esta aproximada representaccedilatildeo volumeacutetrica pode nos fornecer outras

informaccedilotildees como por exemplo o volume aproximado do modelo

Aleacutem disso o uso da representaccedilatildeo impliacutecita MLS no meacutetodo de Pauly cria

uma complexidade a mais para o meacutetodo sem apresentar vantagens para a

realizaccedilatildeo de operaccedilotildees booleanas que eacute o nosso enfoque

Logo podemos dizer que o meacutetodo de Adams e Dutreacute apresenta as

seguintes vantagens em relaccedilatildeo ao de Pauly

- a estrutura de octree classificada aleacutem de ser usada para classificaccedilatildeo

fornece informaccedilotildees adicionais como volume aproximado do objeto

- o tempo de processamento no meacutetodo de Adams e Dutreacute tende a ser

melhor que no meacutetodo de Pauly se implementadas as melhorias acima citadas e

se colocaacutessemos em consideraccedilatildeo o uso da representaccedilatildeo impliacutecita MLS

(Moving Least Squares)

- o tratamento de interseccedilatildeo de Adams e Dutreacute apresenta a vantagem da

portabilidade ou seja iraacute funcionar independente do algoritmo de renderizaccedilatildeo

utilizado

E as vantagens do meacutetodo de Pauly em relaccedilatildeo ao de Adams e Dutreacute

- a colocaccedilatildeo de surfels exatamente na curva de interseccedilatildeo

- a possibilidade de trabalhar com modelos soacutelidos ou natildeo soacutelidos

E finalizando concluiacutemos que o estudo relatado nesta dissertaccedilatildeo foi

importante por

- fornecer um breve estudo sobre modelagem por pontos uma nova e

promissora aacuterea dentro da computaccedilatildeo graacutefica

Conclusatildeo 72

- por apresentar uma avaliaccedilatildeo dos dois trabalhos existentes sobre

operaccedilotildees booleanas com pontos encontrando as vantagens de cada um

e levantando questotildees que natildeo tinham sido citadas nos trabalhos originais

- por propor e implementar melhorias ao trabalho de Adams e Dutreacute

71 Trabalhos Futuros

Nossa implementaccedilatildeo pode ser ainda evoluiacuteda com as propostas

apresentadas na seccedilatildeo 62 Como observamos o tempo de processamento do

algoritmo aqui implementado ainda pode ser melhorado com o uso do meacutetodo

TINN [19] - que foi proposto em Adams[2] - para otimizar a pesquisa do surfel

mais proacuteximo a um ponto que estaacute localizado na regiatildeo de um noacute que conteacutem

surfels Aleacutem disso o trabalho Simple and Efficient Trasversal Methods for

Quadtrees and Octrees de Sara F Frisken [12] citado no capiacutetulo 2 apresenta

uma otimizaccedilatildeo no uso de octrees Outra proposta para melhorar o tempo de

processamento do algoritmo aqui implementado eacute usar a forma de trabalhar com

octrees apresentada neste trabalho

O trabalho de Adams e Dutreacute [2] eacute aplicado apenas a objetos soacutelidos O

nosso plugin portanto aplica-se somente a este tipo de objeto Jaacute o trabalho de

Pauly[3] eacute aplicado tambeacutem a modelos natildeo soacutelidos Apresentamos como

proposta a um trabalho futuro a extensatildeo do algoritmo aqui implementado para

modelos natildeo soacutelidos O surfel pode conter uma informaccedilatildeo adicional que indica

se ele estaacute delimitando um volume ou natildeo Assim pode-se ter um modelo com

ldquopartes soacutelidasrdquo e ldquopartes natildeo soacutelidasrdquo Por exemplo a uniatildeo de um plano com

uma esfera poderia resultar numa esfera com ldquoabasrdquo (seriam as partes do plano

que estariam fora da esfera) O modelo resultado teria uma parte correspondente

a um espaccedilo 3D (esfera) e outra parte que seria uma superfiacutecie 2D posicionada

no espaccedilo 3D sem delimitar algum volume (abas)

Muitos trabalhos podem ser desenvolvidos aplicando-se o modelo por

pontos em animaccedilatildeo jogos visualizaccedilatildeo de terrenos criaccedilatildeo de protoacutetipos etc

considerando-se a eficiecircncia e simplicidade do modelo E mais especificamente

as operaccedilotildees booleanas com pontos podem ser aplicadas para criaccedilatildeo de

cenaacuterios testes de colisotildees e nestes casos a representaccedilatildeo usando octrees

pode ser mais explorada considerando-se o seu potencial de representaccedilatildeo

volumeacutetrica de um objeto

Referecircncias Bibliograacuteficas 73

8 Referecircncias Bibliograacuteficas

[1] MAumlNTYLAuml M An Introduction to Solid Modeling Computer Science Press 1988

[2] ADAMS B DUTREacute P Interactive Boolean Operations on Surfel-

Bounded Solids Proceedings of SIGGRAPH 2003 San Diego USA 2003

[3] PAULY M KEISER R KOBBELT L GROSS M Shape Modeling

with Point-Sampled Geometry SIGGRAPH 2003 Computer Graphics

Proceedings Annual Conference Series ACM Press ACM SIGGRAPH 2003

[4] LEVOY M WHITTED T The Use of Points as Display Primitives

Technical Report TR 85-022 The University of North Carolina at Chapel Hill

Department of Computer Science 1985

[5] PFISTER H ZWICKER M VAN BAAR J GROSS M 2000 Surfels

Surface Elements as Rendering Primitives SIGGRAPH 2000 pp 335ndash342 New

Orleans LA July 23-28 2000

[6] ZWICKER M PFISTER H VAN BAAR J GROSS M Surface

Splatting SIGGRAPH 2001

[7] PAULY M KOBBELT L GROSS M Multiresolution Modeling of

Point-Sampled Geometry CS Techinical Report 378 September 16 2002

[8] CURLESS B New Methods for Surface Reconstruction from Range Images PhD thesis Stanford University 1997

[9] RUSINKIEWICZ S Real-time Acquisition and Rendering of Large 3D Models PhD thesis Stanford University 2001

Referecircncias Bibliograacuteficas 74

[10] AMENTA N BERN M KAMVYSSELIS M A new Voronoi-Based

Surface Reconstruction Algorithm SIGGRAPH 98 Conference proceedings pp

415-421 New York 1998

[11] ZWICKER M PAULY M KNOLL O GROSS M Pointshop 3D an

Interactive System for Point-Based Surface Editing Proceedings of SIGGRAPH 2002 San Antonio TX July 2002

[12] FRISKEN S PERRY R Simple and Efficient Traversal Methods for

Quadtrees and Octrees Journal of Graphics Tools Vol 7 Issue 3 May 2003

[13] CORREcircA W T OLIVEIRA M M Silva C T Wang J

Modeling and Rendering of Real Environments

Revista de Informaacutetica Teoacuterica e Aplicada (Brazilian Journal of Theoretic and Applied Computing) 9(2)127-156 2002

[14] DAVIS J MARSCHNER S GARR M LEVOY M Filling Holes in

Complex Surfaces Using Volumetric Diffusion First International Symposium on 3D Data Processing Visualization Transmission June 2002

[15] RAumlSAumlNEN J Surface Splatting Theory Extensions and Implementation Masterrsquos Thesis Dept of Computer Science Helsinki

University of Technology May 28 2002

[16] PAULY M Point Primitives for Interactive Modeling and Processing of 3D Geometry PhD thesis Federal Institute of Technology (ETH)

of Zurich 2003

[17] HOPPE H DEROSE T DUCHAMP T MCDONALD J

STUELZLE W Surface Reconstruction from Unorganized Points Computer Graphics 26(2)71ndash78 July 1992

[18] ALEXA M BEHR J COHEN-OR D FLEISHMAN S LEVIN D

SILVA C T Point Set Surfaces IEEE Visualization 2001 pp 21ndash28 October

2001

Referecircncias Bibliograacuteficas 75

[19] GREENSPAN M GODIN G TALBOT J Acceleration of Binning

Nearest Neighbor Methods Proceedings of Vision Interface 2000 pp 337-

344

[20] MENCL R Reconstruction of Surfaces from Unorganized Three-Dimensional Point Clouds Dissertation Dortmund Univ 2001

[21] KRIVANEK J Representing and Rendering Surfaces With Points

httpciteseernjneccomkrivanek03representinghtml Acesso em 30 jul

2003

[22] KRISTJANSSON ET AL Approximate Boolean Operations on Free-

form Solids Proceedings of SIGGRAPH 01 2001

Operaccedilotildees Booleanas com Pontos 30

Figura 5 [2]-A partir de dois modelos por pontos uma heacutelice e uma cabeccedila as trecircs operaccedilotildees booleanas satildeo mostradas da esquerda para a direita uniatildeo diferenccedila e interseccedilatildeo

Sejam A e B objetos 3D soacutelidos modelados por pontos Definem-se os

seguintes elementos

Af ndash superfiacutecie (contorno) de A que estaacute fora de B

Ad ndash superfiacutecie (contorno) de A que estaacute dentro de B

Bf ndash superfiacutecie (contorno) de B que estaacute fora de A

Bd ndash superfiacutecie (contorno) de B que estaacute dentro de A

O resultado da operaccedilatildeo booleana entre A e B seraacute um modelo C cuja

superfiacutecie de contorno pode ser determinada pela seguinte regra [2] que aqui

chamamos de Regra 1

Regra 1 A U B Af + Bf

A cap B Ad + Bd

A ndash B Af + Bd (com a orientaccedilatildeo invertida)

B ndash A Ad (com a orientaccedilatildeo invertida) + Bf

A Figura 6 mostra as operaccedilotildees com dois modelos A e B

(a) (b)

Operaccedilotildees Booleanas com Pontos 31

(c) (d)

Figura 6 [22] (a) Dois modelos A e B (b) Posicionados de forma que A tem

uma parte dentro de B eacute mostrado o resultado A U B Af + Bf (c) Resultado de A ndash B Af

+ Bd (d) Resultado de A cap B Ad + Bd

Bart [2] e Pauly [3] apresentam dois meacutetodos para determinar os

elementos acima Estes dois meacutetodos satildeo construiacutedos a partir dos seguintes

conceitos os elementos Af Ad Bf Bd satildeo uma parte da superfiacutecie modelada por

pontos e portanto satildeo conjuntos de surfels Para determinaacute-los eacute necessaacuteria

entatildeo a classificaccedilatildeo de um surfel (que pode se resumir agrave classificaccedilatildeo de um

ponto que eacute o seu centro) de uma superfiacutecie como dentro ou fora de um outro

modelo Os dois meacutetodos utilizam a seguinte regra para esta classificaccedilatildeo aqui

denominada Regra 2

Regra 2 Dado um ponto x qualquer um volume V determinado por uma superfiacutecie

de contorno S uma amostragem P da superfiacutecie S um ponto p є P que eacute a

amostra mais proacutexima a x um vetor np normal agrave S em p e orientado para fora de

S temos que

(x ndash p) np gt 0 x notinV

Ou seja para classificar um ponto em relaccedilatildeo a um modelo verificamos o

produto interno entre a normal em p (surfel mais proacuteximo a x) e o vetor (x - p)

se este produto interno for maior que zero x natildeo pertence ao volume V e seraacute

classificado como fora senatildeo seraacute classificado como dentro De maneira

ainda mais informal se a normal em p apontar para a direccedilatildeo oposta a x x seraacute

classificado como dentro se apontar para x x seraacute classificado como fora

A Figura 7 mostra a Regra 2

Operaccedilotildees Booleanas com Pontos 32

Figura 7 Para classificar o ponto x encontra-se o surfel p (com normal np) mais proacuteximo

a x Se o produto interno entre np e (x ndash p) for maior que zero entatildeo x eacute classificado como

fora senatildeo seraacute classificado como dentro

A validade da Regra 2 eacute discutida na Seccedilatildeo 44 Uma das restriccedilotildees

teoacutericas para garantir-lhe a validade eacute que a superfiacutecie seja suave

Cada um dos dois meacutetodos daacute um tratamento diferente para o uso desta

regra Pauly usa a regra diretamente encontrando o surfel mais proacuteximo a um

ponto e classificando este ponto a partir deste surfel Ele utiliza tambeacutem a

representaccedilatildeo impliacutecita MLS (Moving Least Squares [18]) para casos em que a

Regra 2 poderia falhar e para tratamento de interseccedilotildees [3] Seu meacutetodo vale

para modelos soacutelidos ou natildeo soacutelidos O meacutetodo de Adams e Dutreacute [2] utiliza

octrees [1] criando uma classificaccedilatildeo dos noacutes da octree a partir desta Regra 2

Os pontos satildeo entatildeo classificados de acordo com o noacute da octree que o conteacutem

Este segundo meacutetodo aplica-se somente a modelos soacutelidos Os dois meacutetodos

seratildeo descritos em detalhes nas seccedilotildees abaixo

Como um surfel eacute considerado um disco podemos dizer que surfels de

dois modelos diferentes podem se intersectar A interseccedilatildeo destes dois surfels

corresponde agrave interseccedilatildeo destes dois discos Estes surfels geram problemas

para visualizaccedilatildeo se forem acrescentados ao resultado sem um tratamento

especiacutefico apresentaratildeo artefatos natildeo desejaacuteveis na renderizaccedilatildeo do modelo

resultado (Figura 8) se natildeo forem acrescentados ao resultado deixaratildeo buracos

no modelo

Operaccedilotildees Booleanas com Pontos 33

Figura 8 [2] -Interseccedilatildeo de duas esferas agrave esquerda sem nenhum tratamento de interseccedilatildeo agrave direita apoacutes o tratamento de interseccedilatildeo

Aleacutem disso nem sempre esta interseccedilatildeo forma uma superfiacutecie suave

Esta interseccedilatildeo pode formar uma aresta viva (seccedilatildeo 4223) gerando

problemas tambeacutem para o uso da Regra 2 que eacute vaacutelida apenas para superfiacutecies

suaves Eacute necessaacuterio entatildeo fazer um tratamento desta superfiacutecie de interseccedilatildeo

(formada por surfels originados de diferentes modelos) O tratamento de cada

um dos meacutetodos para este caso seraacute tambeacutem abaixo apresentado

42 Meacutetodo de Adams e Dutreacute

O meacutetodo aplica-se somente a modelos soacutelidos Para determinaccedilatildeo dos

elementos da aqui chamada Regra 1 (seccedilatildeo 41) este meacutetodo utiliza uma octree

[1] que subdivide o espaccedilo do modelo em trecircs fora dentro ou no contorno do

modelo Estes espaccedilos satildeo determinados pela classificaccedilatildeo dos noacutes da octree a

partir da Regra 2 Tambeacutem eacute usado o meacutetodo TINN - Triangle Inequality Nearest

Neighbour [19] - para otimizar a pesquisa dentro do noacute A seguir descrevemos o

modelo usado neste meacutetodo apresentando os dados associados aos pontos o

tipo de distribuiccedilatildeo e o algoritmo que realiza as operaccedilotildees

421 Modelo por Pontos em Adams e Dutreacute

Os surfels neste meacutetodo contecircm as seguintes informaccedilotildees posiccedilatildeo do

surfel xs orientaccedilatildeo do surfel ns e raio de alcance do surfel rs O surfel pode ser

pensado como um disco ortogonal a ns com centro xs e raio rs O raio eacute

escolhido de tal forma que a projeccedilatildeo dos discos no plano da imagem se

sobreponham

Operaccedilotildees Booleanas com Pontos 34

Os objetos representados satildeo soacutelidos A distribuiccedilatildeo dos surfels eacute

uniforme embora o algoritmo natildeo exija esta condiccedilatildeo Para cada soacutelido eacute

definido um rmax = Max rs o raio de alcance do maior surfel pertencente agrave

superfiacutecie do soacutelido Como o raio eacute escolhido de tal forma que a projeccedilatildeo dos

discos no plano da imagem se sobreponham o controle da amostragem eacute

entatildeo ligado agrave renderizaccedilatildeo

422 Algoritmo de Operaccedilotildees Booleanas

Utilizando objetos modelados da forma descrita acima o meacutetodo realiza

operaccedilotildees de uniatildeo interseccedilatildeo e diferenccedila com modelos soacutelidos Supondo dois

modelos soacutelidos S1 e S2 O algoritmo pode ser dividido nas seguintes etapas

Criaccedilatildeo de uma octree para cada modelo Teste Dentro-Fora Tratamento da

interseccedilatildeo Estas etapas satildeo apresentadas nas proacuteximas seccedilotildees

4221 Criaccedilatildeo de uma octree para cada modelo

Eacute criada uma octree [1] para cada modelo A criaccedilatildeo de uma octree eacute feita

da seguinte forma

Gera-se a ldquoCaixa envolventerdquo caixa alinhada com os eixos que conteacutem

todo o modelo A ldquoCaixa envolventerdquo corresponde ao noacute raiz da octree Este noacute

conteacutem inicialmente todos os surfels do modelo Em seguida o noacute raiz eacute

dividido em oito noacutes filhos Os surfels satildeo distribuiacutedos entre estes oito noacutes Cada

um deles caso contenha surfels eacute dividido novamente em 8 filhos e seus surfels

satildeo redistribuiacutedos entre eles Este processo eacute repetido recursivamente enquanto

o nuacutemero de surfels do noacute for maior que zero ou ateacute uma profundidade maacutexima

preacute-definida da octree ser alcanccedilada

Cada noacute da octree deve ser classificado O objetivo desta classificaccedilatildeo eacute

determinar que parte da octree estaacute dentro do modelo e que parte estaacute fora Os

noacutes da octree satildeo entatildeo classificados como ldquodentrordquo ldquoforardquo e ldquocontornordquo

Podemos ilustrar esta classificaccedilatildeo em 2D a Figura 9 mostra uma quadtree

classificada

Operaccedilotildees Booleanas com Pontos 35

Figura 9-Um objeto representado por pontos com suas normais e sua quadtree correspondente classificada os noacutes cinza claro estatildeo dentro do modelo noacutes cinza mais escuro estatildeo fora do modelo e noacutes com cinza intermediaacuterio satildeo noacutes cheios noacutes que conteacutem pontos

O noacutes que conteacutem surfels satildeo classificados como ldquocontornordquo Para

classificar um noacute vazio existem trecircs casos

o noacute vazio tem apenas um vizinho-irmatildeo natildeo vazio

o noacute vazio tem mais de um vizinho-irmatildeo natildeo vazio

o noacute vazio natildeo tem vizinhos-irmatildeos natildeo vazios

No primeiro caso o noacute vazio eacute classificado pelo seu vizinho natildeo vazio No

segundo caso considera-se qualquer um dos vizinhos natildeo vazios No terceiro

caso classifica-se primeiro os noacutes vizinhos e eacute dada a mesma classificaccedilatildeo para

o noacute vazio Como cada noacute natildeo folha de uma octree tem pelo menos um noacute filho

natildeo vazio sempre pode ser feita a classificaccedilatildeo dos noacutes vazios A classificaccedilatildeo

eacute feita da seguinte forma dentre os surfels do vizinho-irmatildeo escolhido encontra-

se o surfel mais proacuteximo ao noacute a ser classificado Se a normal deste surfel

aponta para o noacute vazio a ser classificado entatildeo ele eacute classificado como ldquoforardquo

Se a normal aponta no sentido contraacuterio entatildeo ele eacute classificado como ldquodentrordquo

De maneira mais formal sejam cv e cc coordenadas dos centros do noacute vazio e

do noacute contorno respectivamente Seja s o surfel mais proacuteximo ao noacute vazio e ns

a normal em s Se ( cv - cc )٠ ns gt 0 ( produto interno entre a normal em s e o

vetor cv - cc for maior que zero ) o noacute vazio seraacute classificado como ldquoforardquo

Senatildeo seraacute classificado como ldquodentrordquo

Em geral os noacutes ldquocontornordquo satildeo subdivididos em trecircs partes uma que estaacute

fora do modelo uma que estaacute dentro do modelo e uma terceira que conteacutem os

surfels Esta subdivisatildeo eacute feita por meio da criaccedilatildeo de dois planos paralelos que

Operaccedilotildees Booleanas com Pontos 36

dividem o noacute Para determinar estes planos calcula-se o vetor nm igual agrave

meacutedia das normais dos surfels do noacute nm = sum ns sum ns onde ns eacute a normal de

cada surfel do noacute

Em seguida encontra-se o surfel com maior produto interno entre a sua

normal e a normal meacutedia d1=Max(nm ٠ ns) Este surfel juntamente com a normal

meacutedia define um dos planos Encontra-se tambeacutem o surfel com menor produto

interno entre a sua normal e a normal meacutedia d2=Min(nm ٠ ns) Este surfel

juntamente com a normal meacutedia define o outro plano A Figura 10 mostra a

divisatildeo de um noacute de uma quadtree nas trecircs partes dentro do modelo fora do

modelo e no ldquocontornordquo

Esta subdivisatildeo aplica-se apenas a noacutes que conteacutem surfels cujas direccedilotildees

natildeo variem em mais de 90 graus Caso isso ocorra ele natildeo seraacute subdividido Ou

seja se um noacute possuir dois vetores normais (de dois surfels diferentes) que

formem um acircngulo maior que 90 graus ele natildeo seraacute subdividido

Figura 10 [2] -Divisatildeo de noacute de contorno a parte agrave esquerda estaacute fora do modelo a parte agrave direita estaacute dentro do modelo e a faixa intermediaacuteria conteacutem os surfels

4222 Teste Dentro-Fora

O Teste Dentro-Fora faz a classificaccedilatildeo dos surfels de um modelo como

ldquodentrordquo ou ldquoforardquo de outro modelo Portanto aplicaremos este mesmo teste duas

vezes uma para o modelo S1 em relaccedilatildeo ao modelo S2 e outra para S2 em

relaccedilatildeo a S1 Vamos mostrar o teste Dentro-Fora para o caso da classificaccedilatildeo

dos surfels do modelo S1 em relaccedilatildeo a S2

Operaccedilotildees Booleanas com Pontos 37

No item anterior foram criadas duas octrees uma para o modelo S1 e

outra para o modelo S2 Chamemos de A e B as octrees de S1 e S2

respectivamente Para classificar S1 em relaccedilatildeo a S2 inicialmente eacute feita uma

avaliaccedilatildeo da posiccedilatildeo de A em relaccedilatildeo a B A e B podem estar nas seguintes

situaccedilotildees

- A natildeo intersecta B

- A intersecta apenas noacutes ldquoforardquo de B

- A intersecta apenas noacutes ldquodentrordquo de B

- A intersecta noacutes ldquoforardquo e noacutes ldquodentrordquo de B

Para testar estas situaccedilotildees os noacutes satildeo aumentados de rmax o raio do

maior surfel do modelo soacutelido Isto eacute feito para compensar o fato de que o surfel

natildeo eacute apenas um ponto mas sim considerado como um disco

No primeiro e no segundo caso todos os surfels de A satildeo classificados

como ldquoforardquo No terceiro caso todos os surfels de A satildeo classificados como

ldquodentrordquo

No quarto caso temos que percorrer a octree A Comeccedilando pelo noacute raiz

percorre-se os filhos deste noacute Para cada filho os quatro testes acima satildeo feitos

Se o noacute filho encontra-se em um dos trecircs primeiros casos a classificaccedilatildeo eacute dada

como foi citada acima Se um filho estaacute no quarto caso e natildeo eacute um noacute folha

repete-se recursivamente o mesmo procedimento para seus filhos ateacute encontrar-

se um noacute folha Para um noacute que estaacute no quarto caso e eacute folha percorre-se a lista

de surfels que este noacute conteacutem classificando cada um destes surfels Seja sa um

surfel desta lista Para este caso percorre-se a octree B para classificar sa

Primeiramente encontramos o noacute de B que conteacutem sa Se este noacute de B foi

dividido testa-se de acordo com esta divisatildeo do noacute se o surfel sa estaacute na parte

do noacute que estaacute dentro do modelo ele eacute classificado como ldquodentrordquo se sa estaacute na

parte que estaacute fora do modelo ele eacute classificado como ldquoforardquo se sa estaacute na parte

intermediaacuteria ou se o noacute de B natildeo foi subdividido em planos encontra-se sb que

eacute o surfel pertencente a este noacute de B que estaacute mais proacuteximo de sa sa seraacute

entatildeo classificado de acordo com sb Se ( sa - sb )٠ nb gt 0 sa eacute classificado

como ldquoforardquo senatildeo eacute classificado como ldquodentrordquo Se os discos de sb e sa se

intersectam sa eacute marcado como interseccedilatildeo Para encontrar sb o algoritmo

implementa o meacutetodo TINN ndash Triangle Inequality Nearest Neighbour [19]

Operaccedilotildees Booleanas com Pontos 38

4223 Tratamento da interseccedilatildeo

Os surfels de A que intersectam surfels de B satildeo classificados como

ldquointerseccedilatildeordquo Se eles natildeo forem incluiacutedos no modelo resultado o soacutelido resultado

teraacute buracos Se eles forem incluiacutedos sem algum tratamento eles natildeo

representaratildeo adequadamente a regiatildeo Em geral o surfel sa (um surfel

ldquointerseccedilatildeordquo de A) eacute dividido em dois pelo plano que conteacutem o surfel sb (surfel de

B que sa intersecta) uma parte que estaacute fora de B e outra que estaacute dentro de B

Dependendo da operaccedilatildeo que estaacute sendo realizada vamos querer manter uma

destas partes do surfel sa no modelo resultado Seja xa a posiccedilatildeo do surfel sa e o

surfel sa uma circunferecircncia de centro xa e raio ra igual ao raio de alcance de sa

O plano que conteacutem o surfel sb define uma corda desta circunferecircncia como

mostra a Figura 11 O surfel sa seraacute substituiacutedo por um surfel menor que

ultrapassa esta corda de uma distacircncia e definida pelo usuaacuterio Para cobrir

completamente a interseccedilatildeo seratildeo adicionados surfels menores que cruzam a

corda de interseccedilatildeo

Figura 11 -Interseccedilatildeo do surfel s e do plano que passa pelo surfel t o surfel mais proacuteximo a s O surfel s eacute substituiacutedo por trecircs surfels menores

Operaccedilotildees Booleanas com Pontos 39

O tratamento de interseccedilatildeo proposto por Adams e Dutreacute [2] natildeo soacute evita

os buracos mas tambeacutem cria uma forma de renderizaccedilatildeo de arestas vivas A

colocaccedilatildeo de vaacuterios pequenos surfels na regiatildeo da interseccedilatildeo permite esta

correta renderizaccedilatildeo das ldquoarestas vivasrdquo Desta forma o problema das arestas

vivas eacute resolvido na modelagem (Figura 12) A vantagem de se resolver o caso

na modelagem eacute que natildeo eacute necessaacuterio fazer um tratamento especial na

renderizaccedilatildeo para que mostre esta aresta viva Diferente do tratamento feito

em Pauly (seccedilatildeo 431) que resolve esta questatildeo em tempo de renderizaccedilatildeo

Aleacutem disso o tratamento resolve alguns casos onde a Regra 2 poderia falhar

(veja em Validade da Regra 2-seccedilatildeo 44)

Figura 12 [2] -Agrave direita eacute mostrado o resultado do tratamento de interseccedilatildeo para o caso de Arestas Vivas do objeto agrave esquerda

43 Meacutetodo de Pauly

O meacutetodo aplica-se a objetos soacutelidos e natildeo soacutelidos Os modelos podem ser

obtidos a partir de diferentes entradas como nuvem de pontos irregulares ou por

meio de scanners 3D Cria um modelo hiacutebrido destes objetos usa o modelo por

pontos juntamente com a representaccedilatildeo impliacutecita Moving Least Squares - MLS

[18] Realiza operaccedilotildees booleanas com pontos e utiliza adicionalmente MLS

para alguns casos de classificaccedilatildeo de surfels e no tratamento de interseccedilatildeo A

seguir apresentamos as caracteriacutesticas do modelo por pontos deste meacutetodo e o

algoritmo que realiza as operaccedilotildees

Operaccedilotildees Booleanas com Pontos 40

431 Modelo em Pauly

O modelo eacute uma estrutura hiacutebrida de pontos com a representaccedilatildeo impliacutecita

Moving Least Squares - MLS [18] Esta estrutura eacute usada para fazer operaccedilotildees

booleanas e tambeacutem operaccedilotildees de free-form (natildeo abordadas nesta

dissertaccedilatildeo) Para operaccedilotildees booleanas a representaccedilatildeo MLS permite que a

curva de interseccedilatildeo entre os modelos seja reconstruiacuteda e surfels sejam

colocados nesta curva e em alguns casos de classificaccedilatildeo de surfels mostrados

na seccedilatildeo 432 Para este modelo natildeo existem restriccedilotildees quanto agrave forma do

objeto

Os surfels contecircm informaccedilotildees sobre sua posiccedilatildeo e sua normal Aleacutem

disso surfels podem conter informaccedilotildees adicionais como textura cor

propriedades de materiais

A distribuiccedilatildeo dos surfels eacute natildeo-uniforme e a amostragem eacute

aproximadamente adequada (Veja seccedilatildeo 44)

432 Algoritmo de Operaccedilotildees Booleanas

O algoritmo classifica surfels de um modelo como ldquodentrordquo ou ldquoforardquo de

outro modelo Antes de colocarmos como eacute feita esta classificaccedilatildeo devemos

acrescentar que Pauly estende esta classificaccedilatildeo para modelos que natildeo satildeo

soacutelidos Ou seja mesmo um modelo natildeo soacutelido divide o espaccedilo da cena (espaccedilo

em que se encontra o modelo) em dois sub-espaccedilos dentro ou fora do modelo

Pauly faz esta subdivisatildeo da seguinte forma

Como a superfiacutecie que determina o modelo eacute orientada (conteacutem vetores

normais agrave superfiacutecie que apontam para ldquoforardquo do modelo) Pauly considera que

um modelo natildeo soacutelido divide o espaccedilo em dois sub-espaccedilos um ldquoforardquo do

modelo (os vetores normais apontam para este sub-espaccedilo) e um que estaacute

ldquodentrordquo do modelo (os vetores normais apontam para direccedilatildeo oposta a este sub-

espaccedilo) Por exemplo um plano eacute representado como um conjunto de surfels

contidos num determinado espaccedilo geomeacutetrico plano π Cada surfel conteacutem um

vetor normal direcionado Este modelo divide entatildeo o espaccedilo em dois sub-

espaccedilos o sub-espaccedilo que eacute apontado por estes surfels (considerado ldquoforardquo do

modelo) e o sub-espaccedilo que estaacute na direccedilatildeo oposta (considerado ldquodentrordquo do

modelo) Desta forma ele aplica as classificaccedilotildees de ldquodentrordquo e ldquoforardquo de um

modelo tambeacutem a modelos natildeo soacutelidos A partir desta consideraccedilatildeo as

Operaccedilotildees Booleanas com Pontos 41

operaccedilotildees booleanas satildeo realizadas com os modelos natildeo soacutelidos da mesma

forma que com os modelos soacutelidos

Para determinar esta classificaccedilatildeo (dentro ou fora do modelo) Pauly utiliza

a Regra 2 Para pesquisa do surfel mais proacuteximo o meacutetodo usa a estrutura Kd-

tree [16] e tambeacutem o algoritmo ANN [16] No entanto o meacutetodo apresenta uma

restriccedilatildeo da Regra 2 ela soacute deve ser usada para classificaccedilotildees de pontos x se

a distacircncia x-p for maior que o espaccedilamento da amostragem local ηp em p

Este espaccedilamento da amostragem local ηp em p eacute um caacutelculo aproximado da

distacircncia meacutedia entre os surfels vizinhos a p Se x estaacute muito proacuteximo agrave

superfiacutecie a classificaccedilatildeo pode falhar Neste caso ele calcula o ponto exato de

S mais proacuteximo a x usando a projeccedilatildeo MLS (ldquoMoving Least Squaresrdquo)

Por questotildees de melhoria de desempenho utiliza-se o fato de que sendo

Ωp (x) a classificaccedilatildeo do ponto x em relaccedilatildeo agrave amostragem P tem-se que Ωp (x)

= Ωp (xrsquo) para todos os pontos de xrsquo que estatildeo dentro da esfera de centro x e

raio igual a x-p - ηp (onde p eacute o surfel mais proacuteximo e ηp eacute o espaccedilamento

local da amostragem em p acima citado) Ou seja sendo x um ponto qualquer p

o surfel mais proacuteximo a x ηp eacute o espaccedilamento local da amostragem em p se

desenharmos uma esfera com centro x e raio igual a x-p - ηp temos que

todos os pontos xrsquo que estatildeo dentro da esfera teratildeo a mesma classificaccedilatildeo de x

Desta forma o nuacutemero de vezes que a classificaccedilatildeo eacute feita (pesquisando-se o

surfel mais proacuteximo ao ponto e usando a Regra 2) diminui em ateacute 90 Assim

em geral a classificaccedilatildeo de um surfel eacute obtida a partir do seu surfel vizinho

Dados

S1 a superfiacutecie MLS de contorno que define o modelo A

S2 a superfiacutecie MLS de contorno que define o modelo B

P1 o conjunto de surfels que representa a superfiacutecie S1

P2 o conjunto de surfels que representa a superfiacutecie S2

Ωp1 (x) a classificaccedilatildeo do ponto p em relaccedilatildeo a uma amostragem P1

Q1 o subconjunto de P1 que vai compor o resultado

Ωp2 (x) a classificaccedilatildeo do ponto p em relaccedilatildeo a uma amostragem P2

Q2 o subconjunto de P2 que vai compor o resultado

Os conjuntos Q1 e Q2 satildeo obtidos por meio da Tabela 1 mostrada abaixo

Operaccedilotildees Booleanas com Pontos 42

Tabela 1 Classificaccedilatildeo para operaccedilotildees booleanas

Para o tratamento de interseccedilatildeo neste meacutetodo satildeo computados pontos

que caem exatamente na curva de interseccedilatildeo e estes satildeo acrescentados ao

modelo resultado Estes pontos satildeo determinados de forma que a densidade da

amostragem vai crescendo agrave medida que os surfels se aproximam da curva de

interseccedilatildeo e convergem para este ponto de interseccedilatildeo como mostra a Figura

13

(a) (b) (c)

Figura 13 - Os novos surfels satildeo colocados exatamente na curva de interseccedilatildeo

e convergem para o ponto de interseccedilatildeo

A Figura 14 mostra o processo de encontrar os surfels que caem nesta

curva de interseccedilatildeo Inicialmente satildeo encontrados todos os pontos de Q1 e Q2

que estatildeo proacuteximos agrave curva de interseccedilatildeo por meio da funccedilatildeo de distacircncia do

operador de projeccedilatildeo MLS Em seguida procura-se todos os pares mais

proacuteximos (q1 є Q1 q2 є Q2 ) e computa-se o ponto q na curva de interseccedilatildeo da

seguinte forma (veja a Figura 14)Seja r o ponto na linha de interseccedilatildeo dos dois

planos tangentes em q1 e q2 e que estaacute mais proacuteximo a estes dois pontos isto eacute

que minimiza a distacircncia ||r-q1|| + ||r-q2|| r eacute a primeira aproximaccedilatildeo de q e agora

pode ser projetado sobre S1 e S2 para obter dois novos pontos de partida q1rsquo e q2

rsquo

para a iteraccedilatildeo Este procedimento pode ser repetido iterativamente ateacute que os

pontos q1 e q2 convirjam ao ponto q na curva de interseccedilatildeo Normalmente este

processo requer menos de trecircs iteraccedilotildees

Operaccedilotildees Booleanas com Pontos 43

(a) (b)

(c)

Figura 14 (a) Suponhamos a reta que eacute a interseccedilatildeo do plano tangente a S1 em q1 e o

plano tangente a S2 em q2 O ponto r eacute o ponto desta reta que estaacute mais proacuteximo a q1 e

q2 (b) r eacute projetado sobre S1 e S2 obtendo-se q1acute e q2acute dois novos pontos de partida

para nova iteraccedilatildeo (c) A nova iteraccedilatildeo gera r que eacute uma aproximaccedilatildeo melhor de q

Pauly faz o tratamento de arestas vivas em tempo de renderizaccedilatildeo Ele

faz uma alteraccedilatildeo no renderizador Marca os surfels de interseccedilatildeo e ao

renderizaacute-los satildeo cortados para gerar uma aresta viva

44 Validade da Regra 2

Os dois meacutetodos analisados nesta dissertaccedilatildeo utilizam a seguinte regra

para a classificaccedilatildeo de um surfel

Regra 2 dado um volume V determinado por uma superfiacutecie de contorno

S uma amostragem P da superfiacutecie S um ponto x qualquer um ponto p є P que

eacute a amostra mais proacutexima a x um vetor ny normal a S em p e orientado para

fora de S temos que (x ndash p) np gt 0 x notinV

Em [16] eacute colocado que esta regra eacute tirada da seguinte propriedade da

geometria diferencial (aqui chamada Propriedade 1)

Propriedade 1 Dado um volume V determinado por uma superfiacutecie de

contorno S contiacutenua e duplamente diferenciaacutevel um ponto x qualquer um ponto

Operaccedilotildees Booleanas com Pontos 44

y є S que eacute o ponto de S mais proacuteximo a x um vetor ny normal a S em y e

orientado para fora de S temos que (x ndash y) ny gt 0 x notinV

A Figura 15 ilustra esta propriedade

Figura 15 Para verificar se o ponto x estaacute fora de um contorno C encontra-se o ponto y

de C Se o produto interno entre a normal em y e o vetor que liga y a x for maior que

zero entatildeo x estaacute fora de C senatildeo estaacute dentro de C

Pauly assume que tendo uma amostragem P da superfiacutecie S podemos

usar a Propriedade 1 substituindo y por p o surfel mais proacuteximo ao ponto x (x ndash

p) np gt 0 x notinV (Regra 2) Esta amostragem P em seu trabalho eacute

(aproximadamente) uma ldquoamostragem adequadardquo Tambeacutem seu tratamento de

interseccedilatildeo cria uma aproximaccedilatildeo dela (seccedilatildeo 43) Empiricamente a

ldquodiscretizaccedilatildeo da propriedaderdquo eacute vaacutelida a partir desta suposiccedilatildeo Mas isso natildeo foi

demonstrado teoricamente em seu trabalho

Pauly coloca em [16] que natildeo existe ainda uma teoria matemaacutetica rigorosa

de amostragem anaacuteloga a teoria de Fourier para superfiacutecies discretas

A melhor aproximaccedilatildeo teoacuterica para esta aacuterea eacute o uso do Eixo Medial que

foi colocado em [10] Vamos descrever este trabalho brevemente nesta seccedilatildeo

Este trabalho apresenta um algoritmo de reconstruccedilatildeo de superfiacutecie que parte de

uma amostragem adequada (abaixo definida) de pontos e obteacutem uma malha

que eacute topologicamente equivalente agrave superfiacutecie do objeto e agrave medida que a

densidade da amostragem cresce a saiacuteda converge para esta superfiacutecie

Para definir amostragem adequada o trabalho parte do conceito de Eixo

Medial

Operaccedilotildees Booleanas com Pontos 45

ldquoEixo Medialrdquo de uma superfiacutecie 2D posicionada no R3 eacute o conjunto

(fechado) de pontos pi para os quais buscando-se o ponto da superfiacutecie que

estaacute mais proacuteximo a pi mais de um ponto pertencentes a esta superfiacutecie satildeo

encontrados A Figura 16 abaixo ilustra o Eixo Medial em 2D

Figura 16 [10] As curvas de cor mais clara satildeo o Eixo Medial da curva em preto

Em duas dimensotildees os veacutertices de Voronoi de uma amostragem densa

aproximam o ldquoEixo Medialrdquo da amostragem (mas esta propriedade natildeo se

estende a 3D) A Figura 17 mostra o Eixo Medial em 3D

Figura 17 [10] Em 3D geralmente o Eixo Medial eacute uma superfiacutecie 2D (em cor mais

clara) Aqui o quadrado eacute o Eixo Medial da superfiacutecie transparente que o contorna

Podemos definir agora a amostragem adequada da seguinte forma

Supondo uma superfiacutecie suave que quer dizer uma 2-manifold duplamente

diferenciaacutevel posicionada no R3 uma ldquoamostragem adequadardquo desta superfiacutecie eacute

aquela na qual a densidade da amostragem eacute (pelo menos) inversamente

proporcional agrave distacircncia ao ldquoEixo Medialrdquo A Figura 18 mostra uma amostragem

adequada

Operaccedilotildees Booleanas com Pontos 46

Figura 18 [10] A figura mostra o diagrama de Voronoi de uma amostragem de pontos S

Da mesma forma que o a amostragem aproxima a curva os veacutertices de Voronoi

aproximam o Eixo Medial

Na praacutetica na reconstruccedilatildeo da superfiacutecie uma aproximaccedilatildeo deste ldquoEixo

Medialrdquo eacute computada (devido agrave dificuldade de computaacute-lo exatamente e em

alguns casos ateacute impossibilidade)

Melhorias Propostas 47

5 Melhorias Propostas

No capiacutetulo 4 apresentamos dois meacutetodos que realizam operaccedilotildees

booleanas em modelos por pontos o meacutetodo de Adams e Dutreacute [2] e o meacutetodo

de Pauly[3] Para esta dissertaccedilatildeo usamos o meacutetodo de Adams e Dutreacute [2] e

propomos as seguintes melhorias

- Alteramos o momento em que eacute feita a classificaccedilatildeo da octree Fazemos

esta classificaccedilatildeo durante a sua criaccedilatildeo Os noacutes filhos de um noacute pai P qualquer

satildeo classificados logo apoacutes a criaccedilatildeo de todos estes filhos de P

independentemente do restante da octree ter sido criada Isso pode ser feito

porque a octree eacute construiacuteda na ordem raiz-esquerda-direita (preorder

traversal) e portanto apoacutes todos os filhos de um noacute pai serem criados a parte

necessaacuteria da octree para a classificaccedilatildeo destes filhos jaacute estaacute criada

- A classificaccedilatildeo da octree eacute otimizada classificando-se os cantos dos seus

noacutes como dentro ou fora do modelo Na classificaccedilatildeo de um noacute n1 a partir de seu

vizinho n2 se os cantos que satildeo comuns a n1 e n2 tiverem a mesma

classificaccedilatildeo esta seraacute dada ao noacute Assim diminuiacutemos o nuacutemero de pesquisas

pelo surfel mais proacuteximo que eacute a parte criacutetica da classificaccedilatildeo dos noacutes da octree

em termos de tempo de processamento

- Acrescentamos um valor miacutenimo (maior que zero) para o nuacutemero de

surfels contidos em um noacute que eacute uma das condiccedilotildees de parada na criaccedilatildeo da

octree Verificamos que desta forma diminui-se a chance de erro na classificaccedilatildeo

de partes criacuteticas como ldquoarestas vivasrdquo

Uma comparaccedilatildeo entre a nossa implementaccedilatildeo e a de Pauly tambeacutem seraacute

feita no capiacutetulo 6

51 Descriccedilatildeo do algoritmo

O algoritmo implementado para esta dissertaccedilatildeo baseado no meacutetodo de

Adams e Dutreacute [2] pode ser dividido nas seguintes partes Criaccedilatildeo e

classificaccedilatildeo de uma octree para cada modelo Teste DentroFora Criaccedilatildeo do

modelo resultado Natildeo foi implementado tratamento especial algum de

interseccedilatildeo para o nosso plugin As proacuteximas seccedilotildees apresentam estas partes

Melhorias Propostas 48

511 Criaccedilatildeo e classificaccedilatildeo de uma octree para cada modelo

As ideacuteias do algoritmo satildeo aqui ilustradas em 2D mas a extensatildeo delas

para 3D eacute feita facilmente

Para cada modelo a octree eacute criada e classificada da seguinte forma

Figura 19-Quadtree classificada Os noacutes mais escuros estatildeo fora do modelo os mais claros dentro e os em tom intermediaacuterio satildeo noacutes de contorno

Gera-se uma ldquocaixa envolventerdquo do modelo contendo todos os surfels e

cria-se o noacute raiz da octree que corresponde a esta ldquocaixa envolventerdquo Este noacute

raiz eacute subdividido em oito filhos e seus surfels satildeo distribuiacutedos entre eles Ao

inveacutes de testarmos os valores de xy e z para cada surfel a fim de determinar

para qual filho ele iraacute utilizamos listas auxiliares Primeiro os surfels satildeo

subdivididos em dois grupos pelos valores de x e armazenados em uma lista

auxiliar Em seguida cada uma das listas eacute subdividida pelo valor de y e as

quatro listas obtidas seratildeo subdivididas pelo valor de z Ao final teremos 8 listas

de surfels cada uma delas pertencente a um filho

Cada noacute seraacute entatildeo novamente subdividido enquanto contiver um nuacutemero

de surfels gt nmin (valor preacute-definido) ou enquanto a profundidade da aacutervore lt pmax

(valor preacute-definido) Na figura 19 pmax = 3 e nmin = 3

Melhorias Propostas 49

Figura 20-O noacute cheio eacute dividido em trecircs partes agrave esquerda a regiatildeo estaacute dentro do modelo agrave direita estaacute fora e entre as duas linhas que dividem o noacute estaacute a regiatildeo que conteacutem os surfels

Os noacutes cheios recebem um tratamento especial Eles satildeo subdivididos em

trecircs partes da seguinte forma uma que estaacute fora do modelo outra que estaacute

dentro e uma que conteacutem os surfels Esta subdivisatildeo eacute feita por meio da criaccedilatildeo

de dois planos paralelos que dividem o noacute Para determinar estes planos

calcula-se o vetor nm igual agrave meacutedia das normais dos surfels do noacute nm = sum ns

sum ns onde ns eacute a normal de cada surfel do noacute Em seguida encontra-se o

surfel com maior produto interno entre a sua normal e a normal meacutedia

d1=Max(nm ٠ ns) Este surfel juntamente com a normal meacutedia define um dos

planos Encontra-se tambeacutem o surfel com menor produto interno entre a sua

normal e a normal meacutedia d2=Min (nm ٠ ns) Este surfel juntamente com a normal

meacutedia define o outro plano (Figura 20) Se o noacute conteacutem surfels de superfiacutecies de

orientaccedilotildees diferentes ele natildeo seraacute subdividido ou seja os planos coincidiratildeo

com os planos que delimitam o proacuteprio noacute Este teste foi implementado da

seguinte forma escolhe-se um surfel qualquer do noacute Calcula-se o produto

interno entre a normal deste surfel e as outras normais dos outros surfels deste

noacute Se algum produto interno for menor que zero este noacute natildeo seraacute subdividido

Apoacutes a etapa de subdivisatildeo classificam-se os oito cantos deste noacute como

dentro ou fora do modelo por meio da classificaccedilatildeo de um ponto que

descreveremos na sub-seccedilatildeo 5111

Melhorias Propostas 50

a b

c d

Figura 21-O noacute a eacute classificado pelo noacute c o noacute d tambeacutem eacute classificado pelo noacute c a classificaccedilatildeo do noacute a eacute propagada para o noacute b

Jaacute os noacutes vazios da octree seratildeo classificados como ldquodentrordquo ou ldquoforardquo do

modelo da seguinte forma cada noacute folha vazio eacute classificado a partir de um de

seus irmatildeos vizinhos adjacentes Se ele possuir um vizinho adjacente cheio ele

seraacute classificado por este vizinho se natildeo possuir os vizinhos adjacentes seratildeo

classificados primeiro e ele teraacute esta mesma classificaccedilatildeo (Figura 21) Como tem

que existir sempre pelo menos um noacute cheio entre os filhos de um noacute pai entatildeo

sempre esta classificaccedilatildeo poderaacute ser feita Com a classificaccedilatildeo de todos os

filhos tem-se tambeacutem a classificaccedilatildeo dos cantos do noacute pai

Mf03c003fmx a b

Figura 22-Os cantos a e b do noacute cheio possuem a mesma classificaccedilatildeo fora do modelo Esta classificaccedilatildeo foi dada ao noacute vazio adjacente

Melhorias Propostas 51

Para classificar um noacute vazio por meio de um noacute cheio verificam-se os

cantos comuns destes dois noacutes se todos os cantos tiverem a mesma

classificaccedilatildeo esta seraacute dada ao noacute vazio (Figura 22) Se houver classificaccedilotildees

diferentes escolhe-se o surfel do noacute cheio mais proacuteximo ao noacute vazio faz-se o

produto interno entre a normal deste surfel e o vetor que liga o centro do noacute

cheio ao centro do noacute vazio (ou o vetor que liga o surfel ao centro do noacute vazio)

Se o produto interno for maior que zero o noacute eacute classificado como ldquoforardquo senatildeo eacute

classificado como ldquodentrordquo Para encontrar o surfel (pertencente a um noacute cheio)

mais proacuteximo ao noacute vazio existem dois casos

- O noacute cheio eacute folha percorre-se toda a lista de surfels e escolhe o surfel

mais proacuteximo da fronteira entre o noacute cheio e o vazio

- O noacute cheio natildeo eacute um noacute folha percorrem-se os filhos do noacute cheio ou seja

esta pesquisa eacute feita descendo na octree a partir do noacute cheio procurando o

surfel mais proacuteximo agrave fronteira do pai com o noacute vazio a ser classificado

Classificando o centro do noacute vazio todo o noacute deve ter a mesma

classificaccedilatildeo pois este noacute natildeo conteacutem surfels Para encontrar o surfel do noacute

vazio mais proacuteximo da fronteira entre o noacute cheio e o vazio basta testar o valor da

coordenada se a fronteira eacute o lado direito do noacute cheio escolhe-se o surfel com

maior coordenada lsquoxrsquo se eacute o lado esquerdo escolhe-se o surfel com menor lsquoxrsquo

se lado superior surfel com maior lsquoyrsquo etc A seguir apresentamos a classificaccedilatildeo

de um ponto qualquer pertencente a um noacute cheio

Figura 23- Quadtree classificada

Melhorias Propostas 52

5111 Classificaccedilatildeo de um ponto de um noacute cheio

Figura 24 [2] A normal n eacute a normal meacutedia e os surfels s1 e s2 juntamente com a normal

n definem as retas que dividem o noacute O ponto a estaacute fora do modelo e o ponto b estaacute

dentro do modelo

Para um ponto localizado dentro do noacute faz-se o seguinte teste se o noacute foi

dividido testa-se de acordo com a divisatildeo do noacute se o ponto estaacute na parte do noacute

que estaacute dentro do modelo ele eacute classificado como ldquodentrordquo se o ponto estaacute na

parte que estaacute fora do modelo ele eacute classificado como ldquoforardquo (Figura 24) se o

ponto estaacute na parte que conteacutem os surfels encontra-se o surfel s pertencente ao

noacute mais proacuteximo do ponto e o classifica de acordo com s seja ns a normal em s

cs a coordenada de s cp a coordenada do ponto Se (cp - cs )٠ ns gt 0 o ponto

seraacute classificado como ldquoforardquo Senatildeo seraacute classificado como ldquodentrordquo

Se o noacute natildeo foi dividido em planos esta classificaccedilatildeo a partir do surfel

mais proacuteximo seraacute sempre feita

512 Teste DentroFora

Melhorias Propostas 53

Figura 25-Duas circunferecircncias e suas quadtrees correspondentes

O Teste DentroFora classifica os surfels de um modelo como dentro ou

fora de outro modelo ou na sua interseccedilatildeo Este teste foi aqui implementado

exatamente como foi proposto em Adams e Dutreacute [2] exceto que natildeo foi

implementado o meacutetodo TINN - Triangle Inequality Nearest Neighbour [19]

Cada octree eacute percorrida verificando-se se os seus noacutes ou surfels estatildeo dentro

fora ou no contorno do outro modelo (Figura 25) Sejam A e B duas octrees e

queremos classificar a octree A As duas octrees (AB) satildeo percorridas partindo

da raiz

Para cada noacute de A existem quatro casos (Figura 26) Para testar estas

situaccedilotildees os boxes dos noacutes satildeo aumentados de rmax o raio do maior surfel do

modelo Isto eacute feito para compensar o fato de que o surfel natildeo eacute apenas um

ponto mas sim considerado como um disco

Os quatro casos satildeo

Se o noacute de A natildeo intersecta B entatildeo todos os surfels deste noacute satildeo

classificados como fora

Se o noacute de A intersecta apenas noacutes de B que estatildeo fora do modelo

todos os surfels deste noacute satildeo fora

Se o noacute de A intersecta apenas noacutes de B que estatildeo dentro do modelo

todos os surfels deste noacute satildeo dentro

Melhorias Propostas 54

Se o noacute de A intersecta noacutes de B que estatildeo dentro e tambeacutem noacutes de B

que estatildeo fora testa-se se este noacute de A eacute ou natildeo folha Se natildeo for folha

percorre-se os filhos deste noacute de A ateacute encontrar um noacute folha cheio que

intersecta B Para cada surfel sa deste noacute folha de A encontra-se o surfel de B

mais proacuteximo e classifica-se a coordenada de sa da forma apresentada na seccedilatildeo

5111 Seja sb o surfel usado na classificaccedilatildeo de sa Se os discos de sb e sa

se intersectam sa eacute classificado como ldquointerseccedilatildeordquo

(a) (b)

(c) (d)

Figura 26- a modelos natildeo se intersectam b modelo intersecta noacutes fora c modelo intersecta apenas noacutes dentro d modelo intersecta noacutes dentro e noacutes fora

513 Criaccedilatildeo do modelo resultado

Um novo modelo eacute criado com os seguintes surfels (de acordo com a

operaccedilatildeo booleana escolhida pelo usuaacuterio - veja Regra 1 da seccedilatildeo 41)

Uniatildeo - surfels de A que estatildeo fora de B + surfels de B que estatildeo fora de A

Melhorias Propostas 55

Interseccedilatildeo - surfels de A que estatildeo dentro de B + surfels de B que estatildeo

dentro de A

Diferenccedila A-B - surfels de A que estatildeo fora de B + surfels de B que estatildeo

dentro de A (com orientaccedilatildeo invertida)

Como natildeo foi implementado tratamento especial algum de interseccedilatildeo para

o nosso plugin os surfels que se intersectam satildeo mantidos no modelo resultado

final sem modificaccedilotildees

Descrito o algoritmo vejamos a seguir a sua implementaccedilatildeo

52 Implementaccedilatildeo

Este algoritmo foi implementado na forma de um plugin para o software

PointShop 3D [11] Este plugin foi desenvolvido na linguagem C e no sistema

operacional Windows

A escolha deste tipo de implementaccedilatildeo permitiu-nos usar o software

PointShop para os testes do algoritmo Estes testes foram feitos com os modelos

disponibilizados para o PointShop [11] Nesta seccedilatildeo apresentaremos o software

PointShop e as principais estruturas de dados usadas em nosso plugin

O Pointshop eacute um software aberto com seu coacutedigo disponiacutevel e preparado

para trabalhar com plugins Eacute um software de ediccedilatildeo de modelos 3D por pontos

Ele permite aleacutem de visualizar o modelo alterar as suas caracteriacutesticas como

cor brilho e fazer mapeamento de textura iluminaccedilatildeo filtragem (Figura 27)

Melhorias Propostas 56

Figura 27-Software PointShop 3D com dois modelos carregados na sua cena

Aleacutem disso pode-se criar uma cena com vaacuterios modelos e visualizaacute-los de

qualquer ponto de vista Implementa o virtual trackball para rotacionaacute-los e

transladaacute-los Usa uma iluminaccedilatildeo simples direcional A sua arquitetura eacute

extensiacutevel permite que o usuaacuterio adicione seus proacuteprios componentes ao

sistema Possui trecircs tipos de componentes

ldquoToolsrdquo fornece funcionalidades para ediccedilatildeo interativa de superfiacutecie Satildeo

disponibilizados na ldquotoolbarrdquo

Plugins fornece funcionalidades para processar em um soacute passo

modelos ou partes deles selecionadas Satildeo disponibilizados no menu ldquoPluginsrdquo

Renderes fornece funcionalidades de display para os modelos

Para esta dissertaccedilatildeo foi escolhida a construccedilatildeo do componente Plugin

por adequar-se agrave nossa proposta e ser a mais simples de ser construiacuteda O

PointShop [11] jaacute conteacutem uma tool que executa operaccedilotildees booleanas e

deformaccedilatildeo free-form sobre os modelos carregados na cena usando o meacutetodo

de Pauly [3] apresentado no capiacutetulo 4 O nosso plugin Operaccedilotildees Booleanas

implementa o algoritmo descrito na seccedilatildeo anterior baseado na proposta de

Melhorias Propostas 57

Adams e Dutreacute [2] Uma comparaccedilatildeo entre o nosso plugin e a tool de Pauly [3] eacute

feita no capiacutetulo 6

Figura 28-Menu do PointShop com o plugin e as opccedilotildees para operaccedilotildees booleanas

Para se executar o plugin o usuaacuterio precisa carregar dois modelos na

cena do PointShop acionar o plugin informando a operaccedilatildeo que seraacute executada

O plugin executaraacute o algoritmo acima proposto e carregaraacute o resultado na cena

do Pointshop retirando os modelos anteriores

521 Estruturas de Dados

Como vimos o software PointShop [11] trabalha com modelos por pontos

Um modelo deste software descrito na seccedilatildeo 42 conteacutem todas as informaccedilotildees

que o algoritmo proposto em Bart [2] necessita Abaixo relacionamos as

Melhorias Propostas 58

principais estruturas de dados do PointShop usadas no plugin e as principais

estruturas de dados do nosso plugin

As principais classes do PointShop usadas no plugin satildeo

Classe Scene

Classe Objects

Classe SurfelColections

Classe Surfel

Classe StatusBar

Classe Transformer

A hierarquia de dados eacute a seguinte a Scene conteacutem vaacuterios Objects os

quais conteacutem SurfelColections Cada SurfelColections conteacutem Surfels que

suportam uma ou mais propriedades tais como cor difusa cor especular

Classe Scene Classe que representa uma cena que conteacutem modelos

Classe Object Um modelo eacute representado pela classe Object que

conteacutem uma SurfelCollection e as matrizes de transformaccedilatildeo para rotaccedilatildeo

escala e translaccedilatildeo Cada Object eacute identificado pelo seu nome que eacute uacutenico na

Scene O meacutetodo getUniqueName retorna um nome uacutenico Cada Object tem sua

proacutepria matriz de transformaccedilatildeo que pode ser modificada com setRotation

rotate setPosition translate setScale e scale Objects podem ser copiados com

copy Objects consiste em um conjunto de surfels os quais podem ser

recuperados pela getSurfelCollection O Object pode ser ativado com

setActiveObject e recuperado com getActiveObject

Objects podem ser adicionados ou removidos com addObject e

removeObject Os Objects podem ser obtidos pela getFirstObject e

getNextObject

Classe SurfelCollection representa o conjunto de surfels de um modelo

Cada surfelcollection consiste em um conjunto de surfels (SurfelInterface) de

tamanho obtido por getNofSurfels Os surfels podem ser recuperados com

getFirstSurfel getCurrentSurfel e getNextSurfel

A SurfelCollection conteacutem um PropertyDescriptor e uma SurfelList

A SurfelList eacute uma lista duplamente encadeada de surfels Possui os

atributos firstSurfel lastSurfel currentSurfel que satildeo ponteiros para uma

SurfelInterface nSurfels que eacute o nuacutemero de Surfels

A SurfelInterface define a API para os surfels que satildeo os menores

elementos que compotildeem um Object Podem ser considerados como pontos com

uma normal que define a orientaccedilatildeo do ciacuterculo (ou elipse) que seraacute desenhado

Melhorias Propostas 59

tatildeo logo o surfel seja renderizado Tem como atributos dois ponteiros (next e

prev) para SurfelInterface

PropertyDescriptor consiste em ateacute 32 valores descrevendo quais as

propriedades a SurfelInterface suporta

Classe Surfel classe que representa o surfel

Classe StatusBar classe que imprime mensagens na tela Os plugins

podem mandar mensagens para o usuaacuterio pela StatusBar

Mensagens texto podem ser impressas com showMessage O progresso

de uma operaccedilatildeo pode ser indicado com setProgress ou resetProgress

Classe Transformer representa a transformaccedilatildeo entre sistemas de

coordenadas Esta classe fornece meacutetodos para transformar pontos e vetores

entre os diferentes sistemas de coordenadas do Pointshop

A seguir apresentamos as principais estruturas de dados do plugin

Operaccedilotildees Booleanas

As principais estruturas de dados do plugin satildeo boundingbox tree no

lista_surfel surfel

Boundingbox conteacutem dois pontos 3D que definem uma caixa que conteacutem

o modelo um ponto com menores coordenadas xy e z e outro ponto com

maiores xyz

Tree representa a octree do modelo Cada registro conteacutem um ponteiro

para um noacute e oito ponteiros para as 8 octrees filhas

No representa um noacute da octree Conteacutem os seguintes dados

- localizaccedilatildeo do noacute que eacute o canto inferior esquerdo do noacute

- lista_surfel (preenchida apenas para noacutes folha cheios)

- quantidade de surfels do noacute

- classificaccedilatildeo do noacute como dentro fora ou contorno

- classificaccedilatildeo do noacute em relaccedilatildeo a outro modelo

- indica se o noacute eacute folha ou natildeo

- vetor que eacute a meacutedia das normais dos surfels do noacute

- ponto que eacute a meacutedia das localizaccedilotildees dos surfels do noacute

- surfel que tem (entre todos os surfels do noacute) o maior produto interno

entre a sua normal e a normal meacutedia

- surfel que tem (entre todos os surfels do noacute) o menor produto interno

entre a sua normal e a normal meacutedia

- produto interno maacuteximo e miacutenimo entre as normais dos surfels do noacute e a

normal meacutedia deste noacute

Melhorias Propostas 60

- indica se o noacute conteacutem surfels com normais em sentido oposto (produto

interno entre elas eacute menor que zero)

- classificaccedilatildeo dos oito cantos do noacute

lista_surfels lista em que cada registro conteacutem um apontador para um

surfel e um apontador para o proacuteximo registro

surfel representa o surfel da octree Conteacutem a classificaccedilatildeo em relaccedilatildeo a

outro modelo e um ponteiro para o surfel do Poinshop

Resultados 61

6 Resultados

Neste capiacutetulo apresentamos os testes realizados com o plugin para o

PointShop implementado para esta dissertaccedilatildeo a comparaccedilatildeo deste plugin com

o plugin de Pauly [3] e a comparaccedilatildeo entre o meacutetodo de Adams e Dutreacute [2] e o

meacutetodo de Pauly [3]

61 Testes

Os testes foram feitos em um PC x86 Family 6 261600 KB de RAM sem

placa graacutefica sistema operacional Windows 2000 O plugin foi implementado na

linguagem C

Os modelos usados para os testes satildeo modelos disponibilizados no

PointShop [11] Vale lembrar que o meacutetodo implementado em nosso plugin eacute

restrito a modelos soacutelidos e portanto foram usados apenas estes modelos

soacutelidos para os testes

O modelo na Figura 29 que eacute um dos modelos disponibilizados no

PointShop [11] foi usado para mostrar o resultado das operaccedilotildees realizadas

pelo plugin implementado nesta dissertaccedilatildeo O modelo Igea eacute um modelo soacutelido

que conteacutem 134345 surfels

Resultados 62

Figura 29-Modelo do PointShop Igea

Para realizar as operaccedilotildees este modelo foi carregado na cena do

PointShop duas vezes e um deles colorido de vermelho As Figuras 30 31 32

mostram o resultado da operaccedilatildeo de uniatildeo interseccedilatildeo e diferenccedila

respectivamente Os nuacutemeros de surfels dos modelos resultantes satildeo mostrados

na Tabela 2

Resultados 63

Figura 30-Resultado da uniatildeo de duas Igeas

Figura 31-Resultado da interseccedilatildeo de duas Igeas

Resultados 64

Figura 32-Resultado da diferenccedila entre duas Igeas

Tabela 2-Nuacutemero de surfels dos modelos resultantes

Observamos que o nuacutemero de surfels dos modelos resultantes estaacute

coerente com as figuras dos seus modelos

Para avaliar o tempo de processamento das operaccedilotildees foram realizados

vaacuterios testes com o objetivo de obter uma meacutedia dos tempos de realizaccedilatildeo de

cada operaccedilatildeo Tambeacutem foram armazenados os tempos da criaccedilatildeo das duas

octrees e da classificaccedilatildeo de todos os surfels dos dois objetos (como dentro ou

fora do outro modelo) Estes testes foram feitos usando o modelo Igea A meacutedia

dos tempos de processamento foi calculada e os resultados satildeo mostrados na

Tabela 3 Verificamos que o maior tempo gasto eacute para criaccedilatildeo das octrees

Verificamos tambeacutem que este resultado apresentado eacute similar ao resultado

verificado empiricamente com o plugin de Pauly [3] Os tempos gastos para

realizar as operaccedilotildees satildeo similares e o maior tempo gasto no plugin de Pauly

tambeacutem eacute para inicializaccedilatildeo de suas estruturas de dados que incluem a kd-tree

Operaccedilatildeo Nuacutemero de surfels do modelo resultado

Uniatildeo 189715

Interseccedilatildeo 72225

Diferenccedila 134552

Resultados 65

Operaccedilatildeo Criaccedilatildeo das

Octrees (seg)

Classificaccedilatildeo

(seg)

Criaccedilatildeo do

resultado (seg)

Total (seg)

Uniatildeo 39375 1324 18925 7154

Interseccedilatildeo 38585 1585 09547 63982

Diferenccedila 399875 1504 1729 729475

Tabela 3- Meacutedia dos tempos de processamento para as operaccedilotildees com duas Igeas

Com o objetivo de expor melhor os resultados deste trabalho

apresentamos abaixo mais um teste das operaccedilotildees booleanas usando o nosso

plugin Os modelos usados para este segundo teste satildeo o Max Planck e o Male

ambos modelos soacutelidos disponibilizados no PointShop Estes modelos satildeo

mostrados nas figura 33 e 34

O primeiro Max Planck conteacutem 52809 surfels

Figura 33-Modelo do PointShop MaxPlanck

O segundo modelo abaixo Male conteacutem 148138 surfels

Resultados 66

Figura 34-Modelo do PointShop Male

As Figuras 353637 mostram o resultado da operaccedilatildeo de uniatildeo interseccedilatildeo

e diferenccedila respectivamente usando os dois modelos acima Podemos observar

pela figura 35 que o resultado da operaccedilatildeo de diferenccedila neste caso gerou um

modelo resultado com trecircs partes desconexas Os nuacutemeros de surfels de cada

modelo resultado satildeo mostrados na Tabela 5

Figura 35- Resultado da Uniatildeo do modelo Male com MaxPlanck

Resultados 67

Figura 36-Resultado da interseccedilatildeo do modelo Male com o MaxPlanck

Figura 37-Resultado da diferenccedila do modelo Male do modelo MaxPlanck

As meacutedias de tempos de processamento foram calculadas da mesma

forma que o primeiro teste com o modelo Igea acima apresentado Os

resultados satildeo mostrados na Tabela 4 Podemos observar que este teste

Resultados 68

apresenta tempos um pouco menores que o teste com o modelo Igea Isto se

deve ao fato de que o modelo MaxPlanck ser significativamente menor que o

modelo Igea MaxPlanck possui 52809 surfels e Igea conteacutem 134345 surfels

Operaccedilatildeo Criaccedilatildeo das

Octrees (seg)

Classificaccedilatildeo

(seg)

Criaccedilatildeo do

resultado (seg)

Total

(seg)

Uniatildeo 3012 1254 102 5285

Interseccedilatildeo 2985 0901 0861 4747

Diferenccedila 2965 0911 0791 4667

Tabela 4-Tempo de processamento das operaccedilotildees com os modelos MaxPlanck e Male

Operaccedilatildeo Nuacutemero de surfels do resultado

Uniatildeo 126532

Interseccedilatildeo 88414

Diferenccedila 77635

Tabela 5-Nuacutemero de surfels dos modelos resultados das operaccedilotildees com os modelos MaxPlanck e Male

Em seguida apresentaremos uma comparaccedilatildeo entre o nosso plugin e o

plugin de Pauly[3] e tambeacutem uma comparaccedilatildeo entre o meacutetodo de Adams e Dutreacute

[2] e o meacutetodo de Pauly [3]

62 Comparaccedilatildeo entre os dois meacutetodos que realizam operaccedilotildees booleanas

A comparaccedilatildeo entre os meacutetodos de Pauly[3] e de Adams e Dutreacute foi feita

em termos de tempo de processamento e em termos conceituais Em termos de

tempo de processamento comparamos o plugin de Pauly[3] com o nosso plugin

Em termos de tempo de processamento verifica-se empiricamente que os

dois meacutetodos apresentam tempos bastante similares Entretanto o tempo de

processamento do algoritmo aqui implementado ainda pode ser melhorado com

Resultados 69

o uso do meacutetodo TINN [19] que foi proposto em Adams[2] - para otimizar a

pesquisa do surfel mais proacuteximo a um ponto que estaacute localizado na regiatildeo de um

noacute que conteacutem surfels - veja seccedilatildeo 42 O uso deste meacutetodo natildeo foi

implementado para este trabalho e a sua implementaccedilatildeo melhoraria o tempo de

resposta do algoritmo Aleacutem disso o trabalho de Sara F Frisken [12] citado no

capiacutetulo 2 apresenta uma otimizaccedilatildeo no uso de octrees que pode ser

incorporada no algoritmo implementado neste trabalho

Em termos conceituais vamos fazer a comparaccedilatildeo do uso do que

chamamos aqui de Regra 2 do tratamento de interseccedilatildeo e do tratamento de

ldquoarestas vivasrdquo

Como vimos na seccedilatildeo 41 tanto o algoritmo implementado nesta

dissertaccedilatildeo baseado no trabalho de Adams e Dutreacute como o meacutetodo de Pauly

[3] parte do que chamamos aqui de Regra 2 para realizar operaccedilotildees booleanas

com pontos Mas cada um destes meacutetodos daacute um tratamento diferente para o

uso desta regra

O meacutetodo de Pauly usa a Regra 2 para classificaccedilatildeo de cada ponto ou de

cada surfel Para classificar um surfel de B sb como dentro ou fora de A eacute

encontrado o surfel de A sa mais proacuteximo a sb e sb eacute classificado a partir de sa

Para encontrar sa Pauly utiliza uma kd-tree Como esta pesquisa para encontrar

sa eacute cara (mesmo usando uma kd-tree) Pauly utiliza uma esfera que conteacutem

pontos com a mesma classificaccedilatildeo (seccedilatildeo 432) e diminui em 90 este nuacutemero

de pesquisas Pauly utiliza tambeacutem a representaccedilatildeo impliacutecita MLS (Moving Least

Squares) para casos em que a Regra 2 poderia falhar e para tratamento de

interseccedilotildees Entretanto o nuacutemero destes casos em que a Regra 2 poderia falhar

eacute muito pequeno E a representaccedilatildeo MLS natildeo eacute uma estrutura simples de ser

implementada Portanto natildeo encontramos vantagens em usar MLS para estes

casos O meacutetodo de Adams e Dutreacute natildeo trata estes casos e na praacutetica

apresenta resultados bastante satisfatoacuterios como foi mostrado Portanto

consideramos que valeria a pena fazer algum tratamento especial para estes

casos se fosse um procedimento simples Para a execuccedilatildeo do algoritmo de

Pauly o uso de MLS natildeo interfere significativamente porque a construccedilatildeo desta

representaccedilatildeo natildeo eacute feita somente para realizar operaccedilotildees booleanas Os testes

empiacutericos que fizemos com o algoritmo de Pauly natildeo incluem a construccedilatildeo desta

representaccedilatildeo

Aparentemente os dois algoritmos satildeo bastante parecidos um usa octrees

e o outro usa kd-tree As duas estruturas de dados satildeo simples e otimizam a

classificaccedilatildeo dos surfels de um modelo como dentro ou fora do outro modelo

Resultados 70

Mas existe uma diferenccedila conceitual entre dois que merece ser destacada O

algoritmo aqui implementado usa a Regra 2 para classificaccedilatildeo dos noacutes de uma

octree e armazena esta octree classificada (ver capiacutetulo 5) Assim na maioria dos

casos natildeo seraacute necessaacuterio encontrar o surfel mais proacuteximo para classificar um

ponto (ou um surfel) como fora ou dentro de um modelo Caso o ponto esteja em

uma aacuterea da octree classificada ele teraacute a classificaccedilatildeo dada agravequela aacuterea A

pesquisa ao surfel mais proacuteximo seraacute feita apenas nos casos em que o ponto a

ser classificado estaacute localizado entre os planos que subdividem um noacute cheio

O uso desta octree classificada levanta uma questatildeo que natildeo foi citada no

trabalho de Adams e Dutreacute que eacute a proximidade desta estrutura (armazenada)

de octree classificada com uma representaccedilatildeo volumeacutetrica do objeto Sendo

assim esta estrutura pode ser aproveitada para outras funccedilotildees aleacutem da

classificaccedilatildeo dos surfels Por exemplo podemos ter uma aproximaccedilatildeo do

volume de uma cena somando os volumes aproximados dos modelos que a

compotildeem Como o enfoque deste trabalho eacute operaccedilatildeo booleana natildeo vamos nos

aprofundar nesta questatildeo

Outra importante diferenccedila entre os dois trabalhos que jaacute foi explicada na

seccedilatildeo 432 eacute que o meacutetodo de Pauly aplica-se a modelos soacutelidos ou natildeo

soacutelidos enquanto que o meacutetodo de Adams e Dutreacute aplica-se somente a modelos

soacutelidos

Quanto ao tratamento de interseccedilatildeo em termos de visualizaccedilatildeo todos os

dois resolvem bem o problema O tratamento de interseccedilatildeo nos dois trabalhos

tambeacutem resolve o problema da validade da Regra 2 (ver seccedilatildeo 44) Entretanto

o tratamento de Adams e Dutreacute natildeo depende da renderizaccedilatildeo sendo portanto

mais portaacutevel Aleacutem disso uma desvantagem do meacutetodo de Pauly eacute o uso da

representaccedilatildeo impliacutecita MLS (ldquoMoving Least Squaresrdquo) do objeto para obter os

pontos exatamente na curva de interseccedilatildeo Esta representaccedilatildeo torna o

tratamento de interseccedilatildeo mais complexo e a vantagem apresentada natildeo eacute tatildeo

significativa para este tratamento de interseccedilatildeo

Conclusatildeo 71

7 Conclusatildeo

Concluiacutemos entatildeo que as escolhas de Adams e Dutreacute por usar uma

octree classificada e pelo tratamento dado agrave interseccedilatildeo satildeo mais abrangentes

que a escolha de Pauly E consideramos que quanto mais abrangente for uma

escolha conceitual mais resultados poderemos tirar dela No caso de Adams e

Dutreacute eles estendem o problema de classificar um ponto para classificar todo o

modelo Como foi citado ele quase fornece uma representaccedilatildeo volumeacutetrica do

modelo Esta aproximada representaccedilatildeo volumeacutetrica pode nos fornecer outras

informaccedilotildees como por exemplo o volume aproximado do modelo

Aleacutem disso o uso da representaccedilatildeo impliacutecita MLS no meacutetodo de Pauly cria

uma complexidade a mais para o meacutetodo sem apresentar vantagens para a

realizaccedilatildeo de operaccedilotildees booleanas que eacute o nosso enfoque

Logo podemos dizer que o meacutetodo de Adams e Dutreacute apresenta as

seguintes vantagens em relaccedilatildeo ao de Pauly

- a estrutura de octree classificada aleacutem de ser usada para classificaccedilatildeo

fornece informaccedilotildees adicionais como volume aproximado do objeto

- o tempo de processamento no meacutetodo de Adams e Dutreacute tende a ser

melhor que no meacutetodo de Pauly se implementadas as melhorias acima citadas e

se colocaacutessemos em consideraccedilatildeo o uso da representaccedilatildeo impliacutecita MLS

(Moving Least Squares)

- o tratamento de interseccedilatildeo de Adams e Dutreacute apresenta a vantagem da

portabilidade ou seja iraacute funcionar independente do algoritmo de renderizaccedilatildeo

utilizado

E as vantagens do meacutetodo de Pauly em relaccedilatildeo ao de Adams e Dutreacute

- a colocaccedilatildeo de surfels exatamente na curva de interseccedilatildeo

- a possibilidade de trabalhar com modelos soacutelidos ou natildeo soacutelidos

E finalizando concluiacutemos que o estudo relatado nesta dissertaccedilatildeo foi

importante por

- fornecer um breve estudo sobre modelagem por pontos uma nova e

promissora aacuterea dentro da computaccedilatildeo graacutefica

Conclusatildeo 72

- por apresentar uma avaliaccedilatildeo dos dois trabalhos existentes sobre

operaccedilotildees booleanas com pontos encontrando as vantagens de cada um

e levantando questotildees que natildeo tinham sido citadas nos trabalhos originais

- por propor e implementar melhorias ao trabalho de Adams e Dutreacute

71 Trabalhos Futuros

Nossa implementaccedilatildeo pode ser ainda evoluiacuteda com as propostas

apresentadas na seccedilatildeo 62 Como observamos o tempo de processamento do

algoritmo aqui implementado ainda pode ser melhorado com o uso do meacutetodo

TINN [19] - que foi proposto em Adams[2] - para otimizar a pesquisa do surfel

mais proacuteximo a um ponto que estaacute localizado na regiatildeo de um noacute que conteacutem

surfels Aleacutem disso o trabalho Simple and Efficient Trasversal Methods for

Quadtrees and Octrees de Sara F Frisken [12] citado no capiacutetulo 2 apresenta

uma otimizaccedilatildeo no uso de octrees Outra proposta para melhorar o tempo de

processamento do algoritmo aqui implementado eacute usar a forma de trabalhar com

octrees apresentada neste trabalho

O trabalho de Adams e Dutreacute [2] eacute aplicado apenas a objetos soacutelidos O

nosso plugin portanto aplica-se somente a este tipo de objeto Jaacute o trabalho de

Pauly[3] eacute aplicado tambeacutem a modelos natildeo soacutelidos Apresentamos como

proposta a um trabalho futuro a extensatildeo do algoritmo aqui implementado para

modelos natildeo soacutelidos O surfel pode conter uma informaccedilatildeo adicional que indica

se ele estaacute delimitando um volume ou natildeo Assim pode-se ter um modelo com

ldquopartes soacutelidasrdquo e ldquopartes natildeo soacutelidasrdquo Por exemplo a uniatildeo de um plano com

uma esfera poderia resultar numa esfera com ldquoabasrdquo (seriam as partes do plano

que estariam fora da esfera) O modelo resultado teria uma parte correspondente

a um espaccedilo 3D (esfera) e outra parte que seria uma superfiacutecie 2D posicionada

no espaccedilo 3D sem delimitar algum volume (abas)

Muitos trabalhos podem ser desenvolvidos aplicando-se o modelo por

pontos em animaccedilatildeo jogos visualizaccedilatildeo de terrenos criaccedilatildeo de protoacutetipos etc

considerando-se a eficiecircncia e simplicidade do modelo E mais especificamente

as operaccedilotildees booleanas com pontos podem ser aplicadas para criaccedilatildeo de

cenaacuterios testes de colisotildees e nestes casos a representaccedilatildeo usando octrees

pode ser mais explorada considerando-se o seu potencial de representaccedilatildeo

volumeacutetrica de um objeto

Referecircncias Bibliograacuteficas 73

8 Referecircncias Bibliograacuteficas

[1] MAumlNTYLAuml M An Introduction to Solid Modeling Computer Science Press 1988

[2] ADAMS B DUTREacute P Interactive Boolean Operations on Surfel-

Bounded Solids Proceedings of SIGGRAPH 2003 San Diego USA 2003

[3] PAULY M KEISER R KOBBELT L GROSS M Shape Modeling

with Point-Sampled Geometry SIGGRAPH 2003 Computer Graphics

Proceedings Annual Conference Series ACM Press ACM SIGGRAPH 2003

[4] LEVOY M WHITTED T The Use of Points as Display Primitives

Technical Report TR 85-022 The University of North Carolina at Chapel Hill

Department of Computer Science 1985

[5] PFISTER H ZWICKER M VAN BAAR J GROSS M 2000 Surfels

Surface Elements as Rendering Primitives SIGGRAPH 2000 pp 335ndash342 New

Orleans LA July 23-28 2000

[6] ZWICKER M PFISTER H VAN BAAR J GROSS M Surface

Splatting SIGGRAPH 2001

[7] PAULY M KOBBELT L GROSS M Multiresolution Modeling of

Point-Sampled Geometry CS Techinical Report 378 September 16 2002

[8] CURLESS B New Methods for Surface Reconstruction from Range Images PhD thesis Stanford University 1997

[9] RUSINKIEWICZ S Real-time Acquisition and Rendering of Large 3D Models PhD thesis Stanford University 2001

Referecircncias Bibliograacuteficas 74

[10] AMENTA N BERN M KAMVYSSELIS M A new Voronoi-Based

Surface Reconstruction Algorithm SIGGRAPH 98 Conference proceedings pp

415-421 New York 1998

[11] ZWICKER M PAULY M KNOLL O GROSS M Pointshop 3D an

Interactive System for Point-Based Surface Editing Proceedings of SIGGRAPH 2002 San Antonio TX July 2002

[12] FRISKEN S PERRY R Simple and Efficient Traversal Methods for

Quadtrees and Octrees Journal of Graphics Tools Vol 7 Issue 3 May 2003

[13] CORREcircA W T OLIVEIRA M M Silva C T Wang J

Modeling and Rendering of Real Environments

Revista de Informaacutetica Teoacuterica e Aplicada (Brazilian Journal of Theoretic and Applied Computing) 9(2)127-156 2002

[14] DAVIS J MARSCHNER S GARR M LEVOY M Filling Holes in

Complex Surfaces Using Volumetric Diffusion First International Symposium on 3D Data Processing Visualization Transmission June 2002

[15] RAumlSAumlNEN J Surface Splatting Theory Extensions and Implementation Masterrsquos Thesis Dept of Computer Science Helsinki

University of Technology May 28 2002

[16] PAULY M Point Primitives for Interactive Modeling and Processing of 3D Geometry PhD thesis Federal Institute of Technology (ETH)

of Zurich 2003

[17] HOPPE H DEROSE T DUCHAMP T MCDONALD J

STUELZLE W Surface Reconstruction from Unorganized Points Computer Graphics 26(2)71ndash78 July 1992

[18] ALEXA M BEHR J COHEN-OR D FLEISHMAN S LEVIN D

SILVA C T Point Set Surfaces IEEE Visualization 2001 pp 21ndash28 October

2001

Referecircncias Bibliograacuteficas 75

[19] GREENSPAN M GODIN G TALBOT J Acceleration of Binning

Nearest Neighbor Methods Proceedings of Vision Interface 2000 pp 337-

344

[20] MENCL R Reconstruction of Surfaces from Unorganized Three-Dimensional Point Clouds Dissertation Dortmund Univ 2001

[21] KRIVANEK J Representing and Rendering Surfaces With Points

httpciteseernjneccomkrivanek03representinghtml Acesso em 30 jul

2003

[22] KRISTJANSSON ET AL Approximate Boolean Operations on Free-

form Solids Proceedings of SIGGRAPH 01 2001

Operaccedilotildees Booleanas com Pontos 31

(c) (d)

Figura 6 [22] (a) Dois modelos A e B (b) Posicionados de forma que A tem

uma parte dentro de B eacute mostrado o resultado A U B Af + Bf (c) Resultado de A ndash B Af

+ Bd (d) Resultado de A cap B Ad + Bd

Bart [2] e Pauly [3] apresentam dois meacutetodos para determinar os

elementos acima Estes dois meacutetodos satildeo construiacutedos a partir dos seguintes

conceitos os elementos Af Ad Bf Bd satildeo uma parte da superfiacutecie modelada por

pontos e portanto satildeo conjuntos de surfels Para determinaacute-los eacute necessaacuteria

entatildeo a classificaccedilatildeo de um surfel (que pode se resumir agrave classificaccedilatildeo de um

ponto que eacute o seu centro) de uma superfiacutecie como dentro ou fora de um outro

modelo Os dois meacutetodos utilizam a seguinte regra para esta classificaccedilatildeo aqui

denominada Regra 2

Regra 2 Dado um ponto x qualquer um volume V determinado por uma superfiacutecie

de contorno S uma amostragem P da superfiacutecie S um ponto p є P que eacute a

amostra mais proacutexima a x um vetor np normal agrave S em p e orientado para fora de

S temos que

(x ndash p) np gt 0 x notinV

Ou seja para classificar um ponto em relaccedilatildeo a um modelo verificamos o

produto interno entre a normal em p (surfel mais proacuteximo a x) e o vetor (x - p)

se este produto interno for maior que zero x natildeo pertence ao volume V e seraacute

classificado como fora senatildeo seraacute classificado como dentro De maneira

ainda mais informal se a normal em p apontar para a direccedilatildeo oposta a x x seraacute

classificado como dentro se apontar para x x seraacute classificado como fora

A Figura 7 mostra a Regra 2

Operaccedilotildees Booleanas com Pontos 32

Figura 7 Para classificar o ponto x encontra-se o surfel p (com normal np) mais proacuteximo

a x Se o produto interno entre np e (x ndash p) for maior que zero entatildeo x eacute classificado como

fora senatildeo seraacute classificado como dentro

A validade da Regra 2 eacute discutida na Seccedilatildeo 44 Uma das restriccedilotildees

teoacutericas para garantir-lhe a validade eacute que a superfiacutecie seja suave

Cada um dos dois meacutetodos daacute um tratamento diferente para o uso desta

regra Pauly usa a regra diretamente encontrando o surfel mais proacuteximo a um

ponto e classificando este ponto a partir deste surfel Ele utiliza tambeacutem a

representaccedilatildeo impliacutecita MLS (Moving Least Squares [18]) para casos em que a

Regra 2 poderia falhar e para tratamento de interseccedilotildees [3] Seu meacutetodo vale

para modelos soacutelidos ou natildeo soacutelidos O meacutetodo de Adams e Dutreacute [2] utiliza

octrees [1] criando uma classificaccedilatildeo dos noacutes da octree a partir desta Regra 2

Os pontos satildeo entatildeo classificados de acordo com o noacute da octree que o conteacutem

Este segundo meacutetodo aplica-se somente a modelos soacutelidos Os dois meacutetodos

seratildeo descritos em detalhes nas seccedilotildees abaixo

Como um surfel eacute considerado um disco podemos dizer que surfels de

dois modelos diferentes podem se intersectar A interseccedilatildeo destes dois surfels

corresponde agrave interseccedilatildeo destes dois discos Estes surfels geram problemas

para visualizaccedilatildeo se forem acrescentados ao resultado sem um tratamento

especiacutefico apresentaratildeo artefatos natildeo desejaacuteveis na renderizaccedilatildeo do modelo

resultado (Figura 8) se natildeo forem acrescentados ao resultado deixaratildeo buracos

no modelo

Operaccedilotildees Booleanas com Pontos 33

Figura 8 [2] -Interseccedilatildeo de duas esferas agrave esquerda sem nenhum tratamento de interseccedilatildeo agrave direita apoacutes o tratamento de interseccedilatildeo

Aleacutem disso nem sempre esta interseccedilatildeo forma uma superfiacutecie suave

Esta interseccedilatildeo pode formar uma aresta viva (seccedilatildeo 4223) gerando

problemas tambeacutem para o uso da Regra 2 que eacute vaacutelida apenas para superfiacutecies

suaves Eacute necessaacuterio entatildeo fazer um tratamento desta superfiacutecie de interseccedilatildeo

(formada por surfels originados de diferentes modelos) O tratamento de cada

um dos meacutetodos para este caso seraacute tambeacutem abaixo apresentado

42 Meacutetodo de Adams e Dutreacute

O meacutetodo aplica-se somente a modelos soacutelidos Para determinaccedilatildeo dos

elementos da aqui chamada Regra 1 (seccedilatildeo 41) este meacutetodo utiliza uma octree

[1] que subdivide o espaccedilo do modelo em trecircs fora dentro ou no contorno do

modelo Estes espaccedilos satildeo determinados pela classificaccedilatildeo dos noacutes da octree a

partir da Regra 2 Tambeacutem eacute usado o meacutetodo TINN - Triangle Inequality Nearest

Neighbour [19] - para otimizar a pesquisa dentro do noacute A seguir descrevemos o

modelo usado neste meacutetodo apresentando os dados associados aos pontos o

tipo de distribuiccedilatildeo e o algoritmo que realiza as operaccedilotildees

421 Modelo por Pontos em Adams e Dutreacute

Os surfels neste meacutetodo contecircm as seguintes informaccedilotildees posiccedilatildeo do

surfel xs orientaccedilatildeo do surfel ns e raio de alcance do surfel rs O surfel pode ser

pensado como um disco ortogonal a ns com centro xs e raio rs O raio eacute

escolhido de tal forma que a projeccedilatildeo dos discos no plano da imagem se

sobreponham

Operaccedilotildees Booleanas com Pontos 34

Os objetos representados satildeo soacutelidos A distribuiccedilatildeo dos surfels eacute

uniforme embora o algoritmo natildeo exija esta condiccedilatildeo Para cada soacutelido eacute

definido um rmax = Max rs o raio de alcance do maior surfel pertencente agrave

superfiacutecie do soacutelido Como o raio eacute escolhido de tal forma que a projeccedilatildeo dos

discos no plano da imagem se sobreponham o controle da amostragem eacute

entatildeo ligado agrave renderizaccedilatildeo

422 Algoritmo de Operaccedilotildees Booleanas

Utilizando objetos modelados da forma descrita acima o meacutetodo realiza

operaccedilotildees de uniatildeo interseccedilatildeo e diferenccedila com modelos soacutelidos Supondo dois

modelos soacutelidos S1 e S2 O algoritmo pode ser dividido nas seguintes etapas

Criaccedilatildeo de uma octree para cada modelo Teste Dentro-Fora Tratamento da

interseccedilatildeo Estas etapas satildeo apresentadas nas proacuteximas seccedilotildees

4221 Criaccedilatildeo de uma octree para cada modelo

Eacute criada uma octree [1] para cada modelo A criaccedilatildeo de uma octree eacute feita

da seguinte forma

Gera-se a ldquoCaixa envolventerdquo caixa alinhada com os eixos que conteacutem

todo o modelo A ldquoCaixa envolventerdquo corresponde ao noacute raiz da octree Este noacute

conteacutem inicialmente todos os surfels do modelo Em seguida o noacute raiz eacute

dividido em oito noacutes filhos Os surfels satildeo distribuiacutedos entre estes oito noacutes Cada

um deles caso contenha surfels eacute dividido novamente em 8 filhos e seus surfels

satildeo redistribuiacutedos entre eles Este processo eacute repetido recursivamente enquanto

o nuacutemero de surfels do noacute for maior que zero ou ateacute uma profundidade maacutexima

preacute-definida da octree ser alcanccedilada

Cada noacute da octree deve ser classificado O objetivo desta classificaccedilatildeo eacute

determinar que parte da octree estaacute dentro do modelo e que parte estaacute fora Os

noacutes da octree satildeo entatildeo classificados como ldquodentrordquo ldquoforardquo e ldquocontornordquo

Podemos ilustrar esta classificaccedilatildeo em 2D a Figura 9 mostra uma quadtree

classificada

Operaccedilotildees Booleanas com Pontos 35

Figura 9-Um objeto representado por pontos com suas normais e sua quadtree correspondente classificada os noacutes cinza claro estatildeo dentro do modelo noacutes cinza mais escuro estatildeo fora do modelo e noacutes com cinza intermediaacuterio satildeo noacutes cheios noacutes que conteacutem pontos

O noacutes que conteacutem surfels satildeo classificados como ldquocontornordquo Para

classificar um noacute vazio existem trecircs casos

o noacute vazio tem apenas um vizinho-irmatildeo natildeo vazio

o noacute vazio tem mais de um vizinho-irmatildeo natildeo vazio

o noacute vazio natildeo tem vizinhos-irmatildeos natildeo vazios

No primeiro caso o noacute vazio eacute classificado pelo seu vizinho natildeo vazio No

segundo caso considera-se qualquer um dos vizinhos natildeo vazios No terceiro

caso classifica-se primeiro os noacutes vizinhos e eacute dada a mesma classificaccedilatildeo para

o noacute vazio Como cada noacute natildeo folha de uma octree tem pelo menos um noacute filho

natildeo vazio sempre pode ser feita a classificaccedilatildeo dos noacutes vazios A classificaccedilatildeo

eacute feita da seguinte forma dentre os surfels do vizinho-irmatildeo escolhido encontra-

se o surfel mais proacuteximo ao noacute a ser classificado Se a normal deste surfel

aponta para o noacute vazio a ser classificado entatildeo ele eacute classificado como ldquoforardquo

Se a normal aponta no sentido contraacuterio entatildeo ele eacute classificado como ldquodentrordquo

De maneira mais formal sejam cv e cc coordenadas dos centros do noacute vazio e

do noacute contorno respectivamente Seja s o surfel mais proacuteximo ao noacute vazio e ns

a normal em s Se ( cv - cc )٠ ns gt 0 ( produto interno entre a normal em s e o

vetor cv - cc for maior que zero ) o noacute vazio seraacute classificado como ldquoforardquo

Senatildeo seraacute classificado como ldquodentrordquo

Em geral os noacutes ldquocontornordquo satildeo subdivididos em trecircs partes uma que estaacute

fora do modelo uma que estaacute dentro do modelo e uma terceira que conteacutem os

surfels Esta subdivisatildeo eacute feita por meio da criaccedilatildeo de dois planos paralelos que

Operaccedilotildees Booleanas com Pontos 36

dividem o noacute Para determinar estes planos calcula-se o vetor nm igual agrave

meacutedia das normais dos surfels do noacute nm = sum ns sum ns onde ns eacute a normal de

cada surfel do noacute

Em seguida encontra-se o surfel com maior produto interno entre a sua

normal e a normal meacutedia d1=Max(nm ٠ ns) Este surfel juntamente com a normal

meacutedia define um dos planos Encontra-se tambeacutem o surfel com menor produto

interno entre a sua normal e a normal meacutedia d2=Min(nm ٠ ns) Este surfel

juntamente com a normal meacutedia define o outro plano A Figura 10 mostra a

divisatildeo de um noacute de uma quadtree nas trecircs partes dentro do modelo fora do

modelo e no ldquocontornordquo

Esta subdivisatildeo aplica-se apenas a noacutes que conteacutem surfels cujas direccedilotildees

natildeo variem em mais de 90 graus Caso isso ocorra ele natildeo seraacute subdividido Ou

seja se um noacute possuir dois vetores normais (de dois surfels diferentes) que

formem um acircngulo maior que 90 graus ele natildeo seraacute subdividido

Figura 10 [2] -Divisatildeo de noacute de contorno a parte agrave esquerda estaacute fora do modelo a parte agrave direita estaacute dentro do modelo e a faixa intermediaacuteria conteacutem os surfels

4222 Teste Dentro-Fora

O Teste Dentro-Fora faz a classificaccedilatildeo dos surfels de um modelo como

ldquodentrordquo ou ldquoforardquo de outro modelo Portanto aplicaremos este mesmo teste duas

vezes uma para o modelo S1 em relaccedilatildeo ao modelo S2 e outra para S2 em

relaccedilatildeo a S1 Vamos mostrar o teste Dentro-Fora para o caso da classificaccedilatildeo

dos surfels do modelo S1 em relaccedilatildeo a S2

Operaccedilotildees Booleanas com Pontos 37

No item anterior foram criadas duas octrees uma para o modelo S1 e

outra para o modelo S2 Chamemos de A e B as octrees de S1 e S2

respectivamente Para classificar S1 em relaccedilatildeo a S2 inicialmente eacute feita uma

avaliaccedilatildeo da posiccedilatildeo de A em relaccedilatildeo a B A e B podem estar nas seguintes

situaccedilotildees

- A natildeo intersecta B

- A intersecta apenas noacutes ldquoforardquo de B

- A intersecta apenas noacutes ldquodentrordquo de B

- A intersecta noacutes ldquoforardquo e noacutes ldquodentrordquo de B

Para testar estas situaccedilotildees os noacutes satildeo aumentados de rmax o raio do

maior surfel do modelo soacutelido Isto eacute feito para compensar o fato de que o surfel

natildeo eacute apenas um ponto mas sim considerado como um disco

No primeiro e no segundo caso todos os surfels de A satildeo classificados

como ldquoforardquo No terceiro caso todos os surfels de A satildeo classificados como

ldquodentrordquo

No quarto caso temos que percorrer a octree A Comeccedilando pelo noacute raiz

percorre-se os filhos deste noacute Para cada filho os quatro testes acima satildeo feitos

Se o noacute filho encontra-se em um dos trecircs primeiros casos a classificaccedilatildeo eacute dada

como foi citada acima Se um filho estaacute no quarto caso e natildeo eacute um noacute folha

repete-se recursivamente o mesmo procedimento para seus filhos ateacute encontrar-

se um noacute folha Para um noacute que estaacute no quarto caso e eacute folha percorre-se a lista

de surfels que este noacute conteacutem classificando cada um destes surfels Seja sa um

surfel desta lista Para este caso percorre-se a octree B para classificar sa

Primeiramente encontramos o noacute de B que conteacutem sa Se este noacute de B foi

dividido testa-se de acordo com esta divisatildeo do noacute se o surfel sa estaacute na parte

do noacute que estaacute dentro do modelo ele eacute classificado como ldquodentrordquo se sa estaacute na

parte que estaacute fora do modelo ele eacute classificado como ldquoforardquo se sa estaacute na parte

intermediaacuteria ou se o noacute de B natildeo foi subdividido em planos encontra-se sb que

eacute o surfel pertencente a este noacute de B que estaacute mais proacuteximo de sa sa seraacute

entatildeo classificado de acordo com sb Se ( sa - sb )٠ nb gt 0 sa eacute classificado

como ldquoforardquo senatildeo eacute classificado como ldquodentrordquo Se os discos de sb e sa se

intersectam sa eacute marcado como interseccedilatildeo Para encontrar sb o algoritmo

implementa o meacutetodo TINN ndash Triangle Inequality Nearest Neighbour [19]

Operaccedilotildees Booleanas com Pontos 38

4223 Tratamento da interseccedilatildeo

Os surfels de A que intersectam surfels de B satildeo classificados como

ldquointerseccedilatildeordquo Se eles natildeo forem incluiacutedos no modelo resultado o soacutelido resultado

teraacute buracos Se eles forem incluiacutedos sem algum tratamento eles natildeo

representaratildeo adequadamente a regiatildeo Em geral o surfel sa (um surfel

ldquointerseccedilatildeordquo de A) eacute dividido em dois pelo plano que conteacutem o surfel sb (surfel de

B que sa intersecta) uma parte que estaacute fora de B e outra que estaacute dentro de B

Dependendo da operaccedilatildeo que estaacute sendo realizada vamos querer manter uma

destas partes do surfel sa no modelo resultado Seja xa a posiccedilatildeo do surfel sa e o

surfel sa uma circunferecircncia de centro xa e raio ra igual ao raio de alcance de sa

O plano que conteacutem o surfel sb define uma corda desta circunferecircncia como

mostra a Figura 11 O surfel sa seraacute substituiacutedo por um surfel menor que

ultrapassa esta corda de uma distacircncia e definida pelo usuaacuterio Para cobrir

completamente a interseccedilatildeo seratildeo adicionados surfels menores que cruzam a

corda de interseccedilatildeo

Figura 11 -Interseccedilatildeo do surfel s e do plano que passa pelo surfel t o surfel mais proacuteximo a s O surfel s eacute substituiacutedo por trecircs surfels menores

Operaccedilotildees Booleanas com Pontos 39

O tratamento de interseccedilatildeo proposto por Adams e Dutreacute [2] natildeo soacute evita

os buracos mas tambeacutem cria uma forma de renderizaccedilatildeo de arestas vivas A

colocaccedilatildeo de vaacuterios pequenos surfels na regiatildeo da interseccedilatildeo permite esta

correta renderizaccedilatildeo das ldquoarestas vivasrdquo Desta forma o problema das arestas

vivas eacute resolvido na modelagem (Figura 12) A vantagem de se resolver o caso

na modelagem eacute que natildeo eacute necessaacuterio fazer um tratamento especial na

renderizaccedilatildeo para que mostre esta aresta viva Diferente do tratamento feito

em Pauly (seccedilatildeo 431) que resolve esta questatildeo em tempo de renderizaccedilatildeo

Aleacutem disso o tratamento resolve alguns casos onde a Regra 2 poderia falhar

(veja em Validade da Regra 2-seccedilatildeo 44)

Figura 12 [2] -Agrave direita eacute mostrado o resultado do tratamento de interseccedilatildeo para o caso de Arestas Vivas do objeto agrave esquerda

43 Meacutetodo de Pauly

O meacutetodo aplica-se a objetos soacutelidos e natildeo soacutelidos Os modelos podem ser

obtidos a partir de diferentes entradas como nuvem de pontos irregulares ou por

meio de scanners 3D Cria um modelo hiacutebrido destes objetos usa o modelo por

pontos juntamente com a representaccedilatildeo impliacutecita Moving Least Squares - MLS

[18] Realiza operaccedilotildees booleanas com pontos e utiliza adicionalmente MLS

para alguns casos de classificaccedilatildeo de surfels e no tratamento de interseccedilatildeo A

seguir apresentamos as caracteriacutesticas do modelo por pontos deste meacutetodo e o

algoritmo que realiza as operaccedilotildees

Operaccedilotildees Booleanas com Pontos 40

431 Modelo em Pauly

O modelo eacute uma estrutura hiacutebrida de pontos com a representaccedilatildeo impliacutecita

Moving Least Squares - MLS [18] Esta estrutura eacute usada para fazer operaccedilotildees

booleanas e tambeacutem operaccedilotildees de free-form (natildeo abordadas nesta

dissertaccedilatildeo) Para operaccedilotildees booleanas a representaccedilatildeo MLS permite que a

curva de interseccedilatildeo entre os modelos seja reconstruiacuteda e surfels sejam

colocados nesta curva e em alguns casos de classificaccedilatildeo de surfels mostrados

na seccedilatildeo 432 Para este modelo natildeo existem restriccedilotildees quanto agrave forma do

objeto

Os surfels contecircm informaccedilotildees sobre sua posiccedilatildeo e sua normal Aleacutem

disso surfels podem conter informaccedilotildees adicionais como textura cor

propriedades de materiais

A distribuiccedilatildeo dos surfels eacute natildeo-uniforme e a amostragem eacute

aproximadamente adequada (Veja seccedilatildeo 44)

432 Algoritmo de Operaccedilotildees Booleanas

O algoritmo classifica surfels de um modelo como ldquodentrordquo ou ldquoforardquo de

outro modelo Antes de colocarmos como eacute feita esta classificaccedilatildeo devemos

acrescentar que Pauly estende esta classificaccedilatildeo para modelos que natildeo satildeo

soacutelidos Ou seja mesmo um modelo natildeo soacutelido divide o espaccedilo da cena (espaccedilo

em que se encontra o modelo) em dois sub-espaccedilos dentro ou fora do modelo

Pauly faz esta subdivisatildeo da seguinte forma

Como a superfiacutecie que determina o modelo eacute orientada (conteacutem vetores

normais agrave superfiacutecie que apontam para ldquoforardquo do modelo) Pauly considera que

um modelo natildeo soacutelido divide o espaccedilo em dois sub-espaccedilos um ldquoforardquo do

modelo (os vetores normais apontam para este sub-espaccedilo) e um que estaacute

ldquodentrordquo do modelo (os vetores normais apontam para direccedilatildeo oposta a este sub-

espaccedilo) Por exemplo um plano eacute representado como um conjunto de surfels

contidos num determinado espaccedilo geomeacutetrico plano π Cada surfel conteacutem um

vetor normal direcionado Este modelo divide entatildeo o espaccedilo em dois sub-

espaccedilos o sub-espaccedilo que eacute apontado por estes surfels (considerado ldquoforardquo do

modelo) e o sub-espaccedilo que estaacute na direccedilatildeo oposta (considerado ldquodentrordquo do

modelo) Desta forma ele aplica as classificaccedilotildees de ldquodentrordquo e ldquoforardquo de um

modelo tambeacutem a modelos natildeo soacutelidos A partir desta consideraccedilatildeo as

Operaccedilotildees Booleanas com Pontos 41

operaccedilotildees booleanas satildeo realizadas com os modelos natildeo soacutelidos da mesma

forma que com os modelos soacutelidos

Para determinar esta classificaccedilatildeo (dentro ou fora do modelo) Pauly utiliza

a Regra 2 Para pesquisa do surfel mais proacuteximo o meacutetodo usa a estrutura Kd-

tree [16] e tambeacutem o algoritmo ANN [16] No entanto o meacutetodo apresenta uma

restriccedilatildeo da Regra 2 ela soacute deve ser usada para classificaccedilotildees de pontos x se

a distacircncia x-p for maior que o espaccedilamento da amostragem local ηp em p

Este espaccedilamento da amostragem local ηp em p eacute um caacutelculo aproximado da

distacircncia meacutedia entre os surfels vizinhos a p Se x estaacute muito proacuteximo agrave

superfiacutecie a classificaccedilatildeo pode falhar Neste caso ele calcula o ponto exato de

S mais proacuteximo a x usando a projeccedilatildeo MLS (ldquoMoving Least Squaresrdquo)

Por questotildees de melhoria de desempenho utiliza-se o fato de que sendo

Ωp (x) a classificaccedilatildeo do ponto x em relaccedilatildeo agrave amostragem P tem-se que Ωp (x)

= Ωp (xrsquo) para todos os pontos de xrsquo que estatildeo dentro da esfera de centro x e

raio igual a x-p - ηp (onde p eacute o surfel mais proacuteximo e ηp eacute o espaccedilamento

local da amostragem em p acima citado) Ou seja sendo x um ponto qualquer p

o surfel mais proacuteximo a x ηp eacute o espaccedilamento local da amostragem em p se

desenharmos uma esfera com centro x e raio igual a x-p - ηp temos que

todos os pontos xrsquo que estatildeo dentro da esfera teratildeo a mesma classificaccedilatildeo de x

Desta forma o nuacutemero de vezes que a classificaccedilatildeo eacute feita (pesquisando-se o

surfel mais proacuteximo ao ponto e usando a Regra 2) diminui em ateacute 90 Assim

em geral a classificaccedilatildeo de um surfel eacute obtida a partir do seu surfel vizinho

Dados

S1 a superfiacutecie MLS de contorno que define o modelo A

S2 a superfiacutecie MLS de contorno que define o modelo B

P1 o conjunto de surfels que representa a superfiacutecie S1

P2 o conjunto de surfels que representa a superfiacutecie S2

Ωp1 (x) a classificaccedilatildeo do ponto p em relaccedilatildeo a uma amostragem P1

Q1 o subconjunto de P1 que vai compor o resultado

Ωp2 (x) a classificaccedilatildeo do ponto p em relaccedilatildeo a uma amostragem P2

Q2 o subconjunto de P2 que vai compor o resultado

Os conjuntos Q1 e Q2 satildeo obtidos por meio da Tabela 1 mostrada abaixo

Operaccedilotildees Booleanas com Pontos 42

Tabela 1 Classificaccedilatildeo para operaccedilotildees booleanas

Para o tratamento de interseccedilatildeo neste meacutetodo satildeo computados pontos

que caem exatamente na curva de interseccedilatildeo e estes satildeo acrescentados ao

modelo resultado Estes pontos satildeo determinados de forma que a densidade da

amostragem vai crescendo agrave medida que os surfels se aproximam da curva de

interseccedilatildeo e convergem para este ponto de interseccedilatildeo como mostra a Figura

13

(a) (b) (c)

Figura 13 - Os novos surfels satildeo colocados exatamente na curva de interseccedilatildeo

e convergem para o ponto de interseccedilatildeo

A Figura 14 mostra o processo de encontrar os surfels que caem nesta

curva de interseccedilatildeo Inicialmente satildeo encontrados todos os pontos de Q1 e Q2

que estatildeo proacuteximos agrave curva de interseccedilatildeo por meio da funccedilatildeo de distacircncia do

operador de projeccedilatildeo MLS Em seguida procura-se todos os pares mais

proacuteximos (q1 є Q1 q2 є Q2 ) e computa-se o ponto q na curva de interseccedilatildeo da

seguinte forma (veja a Figura 14)Seja r o ponto na linha de interseccedilatildeo dos dois

planos tangentes em q1 e q2 e que estaacute mais proacuteximo a estes dois pontos isto eacute

que minimiza a distacircncia ||r-q1|| + ||r-q2|| r eacute a primeira aproximaccedilatildeo de q e agora

pode ser projetado sobre S1 e S2 para obter dois novos pontos de partida q1rsquo e q2

rsquo

para a iteraccedilatildeo Este procedimento pode ser repetido iterativamente ateacute que os

pontos q1 e q2 convirjam ao ponto q na curva de interseccedilatildeo Normalmente este

processo requer menos de trecircs iteraccedilotildees

Operaccedilotildees Booleanas com Pontos 43

(a) (b)

(c)

Figura 14 (a) Suponhamos a reta que eacute a interseccedilatildeo do plano tangente a S1 em q1 e o

plano tangente a S2 em q2 O ponto r eacute o ponto desta reta que estaacute mais proacuteximo a q1 e

q2 (b) r eacute projetado sobre S1 e S2 obtendo-se q1acute e q2acute dois novos pontos de partida

para nova iteraccedilatildeo (c) A nova iteraccedilatildeo gera r que eacute uma aproximaccedilatildeo melhor de q

Pauly faz o tratamento de arestas vivas em tempo de renderizaccedilatildeo Ele

faz uma alteraccedilatildeo no renderizador Marca os surfels de interseccedilatildeo e ao

renderizaacute-los satildeo cortados para gerar uma aresta viva

44 Validade da Regra 2

Os dois meacutetodos analisados nesta dissertaccedilatildeo utilizam a seguinte regra

para a classificaccedilatildeo de um surfel

Regra 2 dado um volume V determinado por uma superfiacutecie de contorno

S uma amostragem P da superfiacutecie S um ponto x qualquer um ponto p є P que

eacute a amostra mais proacutexima a x um vetor ny normal a S em p e orientado para

fora de S temos que (x ndash p) np gt 0 x notinV

Em [16] eacute colocado que esta regra eacute tirada da seguinte propriedade da

geometria diferencial (aqui chamada Propriedade 1)

Propriedade 1 Dado um volume V determinado por uma superfiacutecie de

contorno S contiacutenua e duplamente diferenciaacutevel um ponto x qualquer um ponto

Operaccedilotildees Booleanas com Pontos 44

y є S que eacute o ponto de S mais proacuteximo a x um vetor ny normal a S em y e

orientado para fora de S temos que (x ndash y) ny gt 0 x notinV

A Figura 15 ilustra esta propriedade

Figura 15 Para verificar se o ponto x estaacute fora de um contorno C encontra-se o ponto y

de C Se o produto interno entre a normal em y e o vetor que liga y a x for maior que

zero entatildeo x estaacute fora de C senatildeo estaacute dentro de C

Pauly assume que tendo uma amostragem P da superfiacutecie S podemos

usar a Propriedade 1 substituindo y por p o surfel mais proacuteximo ao ponto x (x ndash

p) np gt 0 x notinV (Regra 2) Esta amostragem P em seu trabalho eacute

(aproximadamente) uma ldquoamostragem adequadardquo Tambeacutem seu tratamento de

interseccedilatildeo cria uma aproximaccedilatildeo dela (seccedilatildeo 43) Empiricamente a

ldquodiscretizaccedilatildeo da propriedaderdquo eacute vaacutelida a partir desta suposiccedilatildeo Mas isso natildeo foi

demonstrado teoricamente em seu trabalho

Pauly coloca em [16] que natildeo existe ainda uma teoria matemaacutetica rigorosa

de amostragem anaacuteloga a teoria de Fourier para superfiacutecies discretas

A melhor aproximaccedilatildeo teoacuterica para esta aacuterea eacute o uso do Eixo Medial que

foi colocado em [10] Vamos descrever este trabalho brevemente nesta seccedilatildeo

Este trabalho apresenta um algoritmo de reconstruccedilatildeo de superfiacutecie que parte de

uma amostragem adequada (abaixo definida) de pontos e obteacutem uma malha

que eacute topologicamente equivalente agrave superfiacutecie do objeto e agrave medida que a

densidade da amostragem cresce a saiacuteda converge para esta superfiacutecie

Para definir amostragem adequada o trabalho parte do conceito de Eixo

Medial

Operaccedilotildees Booleanas com Pontos 45

ldquoEixo Medialrdquo de uma superfiacutecie 2D posicionada no R3 eacute o conjunto

(fechado) de pontos pi para os quais buscando-se o ponto da superfiacutecie que

estaacute mais proacuteximo a pi mais de um ponto pertencentes a esta superfiacutecie satildeo

encontrados A Figura 16 abaixo ilustra o Eixo Medial em 2D

Figura 16 [10] As curvas de cor mais clara satildeo o Eixo Medial da curva em preto

Em duas dimensotildees os veacutertices de Voronoi de uma amostragem densa

aproximam o ldquoEixo Medialrdquo da amostragem (mas esta propriedade natildeo se

estende a 3D) A Figura 17 mostra o Eixo Medial em 3D

Figura 17 [10] Em 3D geralmente o Eixo Medial eacute uma superfiacutecie 2D (em cor mais

clara) Aqui o quadrado eacute o Eixo Medial da superfiacutecie transparente que o contorna

Podemos definir agora a amostragem adequada da seguinte forma

Supondo uma superfiacutecie suave que quer dizer uma 2-manifold duplamente

diferenciaacutevel posicionada no R3 uma ldquoamostragem adequadardquo desta superfiacutecie eacute

aquela na qual a densidade da amostragem eacute (pelo menos) inversamente

proporcional agrave distacircncia ao ldquoEixo Medialrdquo A Figura 18 mostra uma amostragem

adequada

Operaccedilotildees Booleanas com Pontos 46

Figura 18 [10] A figura mostra o diagrama de Voronoi de uma amostragem de pontos S

Da mesma forma que o a amostragem aproxima a curva os veacutertices de Voronoi

aproximam o Eixo Medial

Na praacutetica na reconstruccedilatildeo da superfiacutecie uma aproximaccedilatildeo deste ldquoEixo

Medialrdquo eacute computada (devido agrave dificuldade de computaacute-lo exatamente e em

alguns casos ateacute impossibilidade)

Melhorias Propostas 47

5 Melhorias Propostas

No capiacutetulo 4 apresentamos dois meacutetodos que realizam operaccedilotildees

booleanas em modelos por pontos o meacutetodo de Adams e Dutreacute [2] e o meacutetodo

de Pauly[3] Para esta dissertaccedilatildeo usamos o meacutetodo de Adams e Dutreacute [2] e

propomos as seguintes melhorias

- Alteramos o momento em que eacute feita a classificaccedilatildeo da octree Fazemos

esta classificaccedilatildeo durante a sua criaccedilatildeo Os noacutes filhos de um noacute pai P qualquer

satildeo classificados logo apoacutes a criaccedilatildeo de todos estes filhos de P

independentemente do restante da octree ter sido criada Isso pode ser feito

porque a octree eacute construiacuteda na ordem raiz-esquerda-direita (preorder

traversal) e portanto apoacutes todos os filhos de um noacute pai serem criados a parte

necessaacuteria da octree para a classificaccedilatildeo destes filhos jaacute estaacute criada

- A classificaccedilatildeo da octree eacute otimizada classificando-se os cantos dos seus

noacutes como dentro ou fora do modelo Na classificaccedilatildeo de um noacute n1 a partir de seu

vizinho n2 se os cantos que satildeo comuns a n1 e n2 tiverem a mesma

classificaccedilatildeo esta seraacute dada ao noacute Assim diminuiacutemos o nuacutemero de pesquisas

pelo surfel mais proacuteximo que eacute a parte criacutetica da classificaccedilatildeo dos noacutes da octree

em termos de tempo de processamento

- Acrescentamos um valor miacutenimo (maior que zero) para o nuacutemero de

surfels contidos em um noacute que eacute uma das condiccedilotildees de parada na criaccedilatildeo da

octree Verificamos que desta forma diminui-se a chance de erro na classificaccedilatildeo

de partes criacuteticas como ldquoarestas vivasrdquo

Uma comparaccedilatildeo entre a nossa implementaccedilatildeo e a de Pauly tambeacutem seraacute

feita no capiacutetulo 6

51 Descriccedilatildeo do algoritmo

O algoritmo implementado para esta dissertaccedilatildeo baseado no meacutetodo de

Adams e Dutreacute [2] pode ser dividido nas seguintes partes Criaccedilatildeo e

classificaccedilatildeo de uma octree para cada modelo Teste DentroFora Criaccedilatildeo do

modelo resultado Natildeo foi implementado tratamento especial algum de

interseccedilatildeo para o nosso plugin As proacuteximas seccedilotildees apresentam estas partes

Melhorias Propostas 48

511 Criaccedilatildeo e classificaccedilatildeo de uma octree para cada modelo

As ideacuteias do algoritmo satildeo aqui ilustradas em 2D mas a extensatildeo delas

para 3D eacute feita facilmente

Para cada modelo a octree eacute criada e classificada da seguinte forma

Figura 19-Quadtree classificada Os noacutes mais escuros estatildeo fora do modelo os mais claros dentro e os em tom intermediaacuterio satildeo noacutes de contorno

Gera-se uma ldquocaixa envolventerdquo do modelo contendo todos os surfels e

cria-se o noacute raiz da octree que corresponde a esta ldquocaixa envolventerdquo Este noacute

raiz eacute subdividido em oito filhos e seus surfels satildeo distribuiacutedos entre eles Ao

inveacutes de testarmos os valores de xy e z para cada surfel a fim de determinar

para qual filho ele iraacute utilizamos listas auxiliares Primeiro os surfels satildeo

subdivididos em dois grupos pelos valores de x e armazenados em uma lista

auxiliar Em seguida cada uma das listas eacute subdividida pelo valor de y e as

quatro listas obtidas seratildeo subdivididas pelo valor de z Ao final teremos 8 listas

de surfels cada uma delas pertencente a um filho

Cada noacute seraacute entatildeo novamente subdividido enquanto contiver um nuacutemero

de surfels gt nmin (valor preacute-definido) ou enquanto a profundidade da aacutervore lt pmax

(valor preacute-definido) Na figura 19 pmax = 3 e nmin = 3

Melhorias Propostas 49

Figura 20-O noacute cheio eacute dividido em trecircs partes agrave esquerda a regiatildeo estaacute dentro do modelo agrave direita estaacute fora e entre as duas linhas que dividem o noacute estaacute a regiatildeo que conteacutem os surfels

Os noacutes cheios recebem um tratamento especial Eles satildeo subdivididos em

trecircs partes da seguinte forma uma que estaacute fora do modelo outra que estaacute

dentro e uma que conteacutem os surfels Esta subdivisatildeo eacute feita por meio da criaccedilatildeo

de dois planos paralelos que dividem o noacute Para determinar estes planos

calcula-se o vetor nm igual agrave meacutedia das normais dos surfels do noacute nm = sum ns

sum ns onde ns eacute a normal de cada surfel do noacute Em seguida encontra-se o

surfel com maior produto interno entre a sua normal e a normal meacutedia

d1=Max(nm ٠ ns) Este surfel juntamente com a normal meacutedia define um dos

planos Encontra-se tambeacutem o surfel com menor produto interno entre a sua

normal e a normal meacutedia d2=Min (nm ٠ ns) Este surfel juntamente com a normal

meacutedia define o outro plano (Figura 20) Se o noacute conteacutem surfels de superfiacutecies de

orientaccedilotildees diferentes ele natildeo seraacute subdividido ou seja os planos coincidiratildeo

com os planos que delimitam o proacuteprio noacute Este teste foi implementado da

seguinte forma escolhe-se um surfel qualquer do noacute Calcula-se o produto

interno entre a normal deste surfel e as outras normais dos outros surfels deste

noacute Se algum produto interno for menor que zero este noacute natildeo seraacute subdividido

Apoacutes a etapa de subdivisatildeo classificam-se os oito cantos deste noacute como

dentro ou fora do modelo por meio da classificaccedilatildeo de um ponto que

descreveremos na sub-seccedilatildeo 5111

Melhorias Propostas 50

a b

c d

Figura 21-O noacute a eacute classificado pelo noacute c o noacute d tambeacutem eacute classificado pelo noacute c a classificaccedilatildeo do noacute a eacute propagada para o noacute b

Jaacute os noacutes vazios da octree seratildeo classificados como ldquodentrordquo ou ldquoforardquo do

modelo da seguinte forma cada noacute folha vazio eacute classificado a partir de um de

seus irmatildeos vizinhos adjacentes Se ele possuir um vizinho adjacente cheio ele

seraacute classificado por este vizinho se natildeo possuir os vizinhos adjacentes seratildeo

classificados primeiro e ele teraacute esta mesma classificaccedilatildeo (Figura 21) Como tem

que existir sempre pelo menos um noacute cheio entre os filhos de um noacute pai entatildeo

sempre esta classificaccedilatildeo poderaacute ser feita Com a classificaccedilatildeo de todos os

filhos tem-se tambeacutem a classificaccedilatildeo dos cantos do noacute pai

Mf03c003fmx a b

Figura 22-Os cantos a e b do noacute cheio possuem a mesma classificaccedilatildeo fora do modelo Esta classificaccedilatildeo foi dada ao noacute vazio adjacente

Melhorias Propostas 51

Para classificar um noacute vazio por meio de um noacute cheio verificam-se os

cantos comuns destes dois noacutes se todos os cantos tiverem a mesma

classificaccedilatildeo esta seraacute dada ao noacute vazio (Figura 22) Se houver classificaccedilotildees

diferentes escolhe-se o surfel do noacute cheio mais proacuteximo ao noacute vazio faz-se o

produto interno entre a normal deste surfel e o vetor que liga o centro do noacute

cheio ao centro do noacute vazio (ou o vetor que liga o surfel ao centro do noacute vazio)

Se o produto interno for maior que zero o noacute eacute classificado como ldquoforardquo senatildeo eacute

classificado como ldquodentrordquo Para encontrar o surfel (pertencente a um noacute cheio)

mais proacuteximo ao noacute vazio existem dois casos

- O noacute cheio eacute folha percorre-se toda a lista de surfels e escolhe o surfel

mais proacuteximo da fronteira entre o noacute cheio e o vazio

- O noacute cheio natildeo eacute um noacute folha percorrem-se os filhos do noacute cheio ou seja

esta pesquisa eacute feita descendo na octree a partir do noacute cheio procurando o

surfel mais proacuteximo agrave fronteira do pai com o noacute vazio a ser classificado

Classificando o centro do noacute vazio todo o noacute deve ter a mesma

classificaccedilatildeo pois este noacute natildeo conteacutem surfels Para encontrar o surfel do noacute

vazio mais proacuteximo da fronteira entre o noacute cheio e o vazio basta testar o valor da

coordenada se a fronteira eacute o lado direito do noacute cheio escolhe-se o surfel com

maior coordenada lsquoxrsquo se eacute o lado esquerdo escolhe-se o surfel com menor lsquoxrsquo

se lado superior surfel com maior lsquoyrsquo etc A seguir apresentamos a classificaccedilatildeo

de um ponto qualquer pertencente a um noacute cheio

Figura 23- Quadtree classificada

Melhorias Propostas 52

5111 Classificaccedilatildeo de um ponto de um noacute cheio

Figura 24 [2] A normal n eacute a normal meacutedia e os surfels s1 e s2 juntamente com a normal

n definem as retas que dividem o noacute O ponto a estaacute fora do modelo e o ponto b estaacute

dentro do modelo

Para um ponto localizado dentro do noacute faz-se o seguinte teste se o noacute foi

dividido testa-se de acordo com a divisatildeo do noacute se o ponto estaacute na parte do noacute

que estaacute dentro do modelo ele eacute classificado como ldquodentrordquo se o ponto estaacute na

parte que estaacute fora do modelo ele eacute classificado como ldquoforardquo (Figura 24) se o

ponto estaacute na parte que conteacutem os surfels encontra-se o surfel s pertencente ao

noacute mais proacuteximo do ponto e o classifica de acordo com s seja ns a normal em s

cs a coordenada de s cp a coordenada do ponto Se (cp - cs )٠ ns gt 0 o ponto

seraacute classificado como ldquoforardquo Senatildeo seraacute classificado como ldquodentrordquo

Se o noacute natildeo foi dividido em planos esta classificaccedilatildeo a partir do surfel

mais proacuteximo seraacute sempre feita

512 Teste DentroFora

Melhorias Propostas 53

Figura 25-Duas circunferecircncias e suas quadtrees correspondentes

O Teste DentroFora classifica os surfels de um modelo como dentro ou

fora de outro modelo ou na sua interseccedilatildeo Este teste foi aqui implementado

exatamente como foi proposto em Adams e Dutreacute [2] exceto que natildeo foi

implementado o meacutetodo TINN - Triangle Inequality Nearest Neighbour [19]

Cada octree eacute percorrida verificando-se se os seus noacutes ou surfels estatildeo dentro

fora ou no contorno do outro modelo (Figura 25) Sejam A e B duas octrees e

queremos classificar a octree A As duas octrees (AB) satildeo percorridas partindo

da raiz

Para cada noacute de A existem quatro casos (Figura 26) Para testar estas

situaccedilotildees os boxes dos noacutes satildeo aumentados de rmax o raio do maior surfel do

modelo Isto eacute feito para compensar o fato de que o surfel natildeo eacute apenas um

ponto mas sim considerado como um disco

Os quatro casos satildeo

Se o noacute de A natildeo intersecta B entatildeo todos os surfels deste noacute satildeo

classificados como fora

Se o noacute de A intersecta apenas noacutes de B que estatildeo fora do modelo

todos os surfels deste noacute satildeo fora

Se o noacute de A intersecta apenas noacutes de B que estatildeo dentro do modelo

todos os surfels deste noacute satildeo dentro

Melhorias Propostas 54

Se o noacute de A intersecta noacutes de B que estatildeo dentro e tambeacutem noacutes de B

que estatildeo fora testa-se se este noacute de A eacute ou natildeo folha Se natildeo for folha

percorre-se os filhos deste noacute de A ateacute encontrar um noacute folha cheio que

intersecta B Para cada surfel sa deste noacute folha de A encontra-se o surfel de B

mais proacuteximo e classifica-se a coordenada de sa da forma apresentada na seccedilatildeo

5111 Seja sb o surfel usado na classificaccedilatildeo de sa Se os discos de sb e sa

se intersectam sa eacute classificado como ldquointerseccedilatildeordquo

(a) (b)

(c) (d)

Figura 26- a modelos natildeo se intersectam b modelo intersecta noacutes fora c modelo intersecta apenas noacutes dentro d modelo intersecta noacutes dentro e noacutes fora

513 Criaccedilatildeo do modelo resultado

Um novo modelo eacute criado com os seguintes surfels (de acordo com a

operaccedilatildeo booleana escolhida pelo usuaacuterio - veja Regra 1 da seccedilatildeo 41)

Uniatildeo - surfels de A que estatildeo fora de B + surfels de B que estatildeo fora de A

Melhorias Propostas 55

Interseccedilatildeo - surfels de A que estatildeo dentro de B + surfels de B que estatildeo

dentro de A

Diferenccedila A-B - surfels de A que estatildeo fora de B + surfels de B que estatildeo

dentro de A (com orientaccedilatildeo invertida)

Como natildeo foi implementado tratamento especial algum de interseccedilatildeo para

o nosso plugin os surfels que se intersectam satildeo mantidos no modelo resultado

final sem modificaccedilotildees

Descrito o algoritmo vejamos a seguir a sua implementaccedilatildeo

52 Implementaccedilatildeo

Este algoritmo foi implementado na forma de um plugin para o software

PointShop 3D [11] Este plugin foi desenvolvido na linguagem C e no sistema

operacional Windows

A escolha deste tipo de implementaccedilatildeo permitiu-nos usar o software

PointShop para os testes do algoritmo Estes testes foram feitos com os modelos

disponibilizados para o PointShop [11] Nesta seccedilatildeo apresentaremos o software

PointShop e as principais estruturas de dados usadas em nosso plugin

O Pointshop eacute um software aberto com seu coacutedigo disponiacutevel e preparado

para trabalhar com plugins Eacute um software de ediccedilatildeo de modelos 3D por pontos

Ele permite aleacutem de visualizar o modelo alterar as suas caracteriacutesticas como

cor brilho e fazer mapeamento de textura iluminaccedilatildeo filtragem (Figura 27)

Melhorias Propostas 56

Figura 27-Software PointShop 3D com dois modelos carregados na sua cena

Aleacutem disso pode-se criar uma cena com vaacuterios modelos e visualizaacute-los de

qualquer ponto de vista Implementa o virtual trackball para rotacionaacute-los e

transladaacute-los Usa uma iluminaccedilatildeo simples direcional A sua arquitetura eacute

extensiacutevel permite que o usuaacuterio adicione seus proacuteprios componentes ao

sistema Possui trecircs tipos de componentes

ldquoToolsrdquo fornece funcionalidades para ediccedilatildeo interativa de superfiacutecie Satildeo

disponibilizados na ldquotoolbarrdquo

Plugins fornece funcionalidades para processar em um soacute passo

modelos ou partes deles selecionadas Satildeo disponibilizados no menu ldquoPluginsrdquo

Renderes fornece funcionalidades de display para os modelos

Para esta dissertaccedilatildeo foi escolhida a construccedilatildeo do componente Plugin

por adequar-se agrave nossa proposta e ser a mais simples de ser construiacuteda O

PointShop [11] jaacute conteacutem uma tool que executa operaccedilotildees booleanas e

deformaccedilatildeo free-form sobre os modelos carregados na cena usando o meacutetodo

de Pauly [3] apresentado no capiacutetulo 4 O nosso plugin Operaccedilotildees Booleanas

implementa o algoritmo descrito na seccedilatildeo anterior baseado na proposta de

Melhorias Propostas 57

Adams e Dutreacute [2] Uma comparaccedilatildeo entre o nosso plugin e a tool de Pauly [3] eacute

feita no capiacutetulo 6

Figura 28-Menu do PointShop com o plugin e as opccedilotildees para operaccedilotildees booleanas

Para se executar o plugin o usuaacuterio precisa carregar dois modelos na

cena do PointShop acionar o plugin informando a operaccedilatildeo que seraacute executada

O plugin executaraacute o algoritmo acima proposto e carregaraacute o resultado na cena

do Pointshop retirando os modelos anteriores

521 Estruturas de Dados

Como vimos o software PointShop [11] trabalha com modelos por pontos

Um modelo deste software descrito na seccedilatildeo 42 conteacutem todas as informaccedilotildees

que o algoritmo proposto em Bart [2] necessita Abaixo relacionamos as

Melhorias Propostas 58

principais estruturas de dados do PointShop usadas no plugin e as principais

estruturas de dados do nosso plugin

As principais classes do PointShop usadas no plugin satildeo

Classe Scene

Classe Objects

Classe SurfelColections

Classe Surfel

Classe StatusBar

Classe Transformer

A hierarquia de dados eacute a seguinte a Scene conteacutem vaacuterios Objects os

quais conteacutem SurfelColections Cada SurfelColections conteacutem Surfels que

suportam uma ou mais propriedades tais como cor difusa cor especular

Classe Scene Classe que representa uma cena que conteacutem modelos

Classe Object Um modelo eacute representado pela classe Object que

conteacutem uma SurfelCollection e as matrizes de transformaccedilatildeo para rotaccedilatildeo

escala e translaccedilatildeo Cada Object eacute identificado pelo seu nome que eacute uacutenico na

Scene O meacutetodo getUniqueName retorna um nome uacutenico Cada Object tem sua

proacutepria matriz de transformaccedilatildeo que pode ser modificada com setRotation

rotate setPosition translate setScale e scale Objects podem ser copiados com

copy Objects consiste em um conjunto de surfels os quais podem ser

recuperados pela getSurfelCollection O Object pode ser ativado com

setActiveObject e recuperado com getActiveObject

Objects podem ser adicionados ou removidos com addObject e

removeObject Os Objects podem ser obtidos pela getFirstObject e

getNextObject

Classe SurfelCollection representa o conjunto de surfels de um modelo

Cada surfelcollection consiste em um conjunto de surfels (SurfelInterface) de

tamanho obtido por getNofSurfels Os surfels podem ser recuperados com

getFirstSurfel getCurrentSurfel e getNextSurfel

A SurfelCollection conteacutem um PropertyDescriptor e uma SurfelList

A SurfelList eacute uma lista duplamente encadeada de surfels Possui os

atributos firstSurfel lastSurfel currentSurfel que satildeo ponteiros para uma

SurfelInterface nSurfels que eacute o nuacutemero de Surfels

A SurfelInterface define a API para os surfels que satildeo os menores

elementos que compotildeem um Object Podem ser considerados como pontos com

uma normal que define a orientaccedilatildeo do ciacuterculo (ou elipse) que seraacute desenhado

Melhorias Propostas 59

tatildeo logo o surfel seja renderizado Tem como atributos dois ponteiros (next e

prev) para SurfelInterface

PropertyDescriptor consiste em ateacute 32 valores descrevendo quais as

propriedades a SurfelInterface suporta

Classe Surfel classe que representa o surfel

Classe StatusBar classe que imprime mensagens na tela Os plugins

podem mandar mensagens para o usuaacuterio pela StatusBar

Mensagens texto podem ser impressas com showMessage O progresso

de uma operaccedilatildeo pode ser indicado com setProgress ou resetProgress

Classe Transformer representa a transformaccedilatildeo entre sistemas de

coordenadas Esta classe fornece meacutetodos para transformar pontos e vetores

entre os diferentes sistemas de coordenadas do Pointshop

A seguir apresentamos as principais estruturas de dados do plugin

Operaccedilotildees Booleanas

As principais estruturas de dados do plugin satildeo boundingbox tree no

lista_surfel surfel

Boundingbox conteacutem dois pontos 3D que definem uma caixa que conteacutem

o modelo um ponto com menores coordenadas xy e z e outro ponto com

maiores xyz

Tree representa a octree do modelo Cada registro conteacutem um ponteiro

para um noacute e oito ponteiros para as 8 octrees filhas

No representa um noacute da octree Conteacutem os seguintes dados

- localizaccedilatildeo do noacute que eacute o canto inferior esquerdo do noacute

- lista_surfel (preenchida apenas para noacutes folha cheios)

- quantidade de surfels do noacute

- classificaccedilatildeo do noacute como dentro fora ou contorno

- classificaccedilatildeo do noacute em relaccedilatildeo a outro modelo

- indica se o noacute eacute folha ou natildeo

- vetor que eacute a meacutedia das normais dos surfels do noacute

- ponto que eacute a meacutedia das localizaccedilotildees dos surfels do noacute

- surfel que tem (entre todos os surfels do noacute) o maior produto interno

entre a sua normal e a normal meacutedia

- surfel que tem (entre todos os surfels do noacute) o menor produto interno

entre a sua normal e a normal meacutedia

- produto interno maacuteximo e miacutenimo entre as normais dos surfels do noacute e a

normal meacutedia deste noacute

Melhorias Propostas 60

- indica se o noacute conteacutem surfels com normais em sentido oposto (produto

interno entre elas eacute menor que zero)

- classificaccedilatildeo dos oito cantos do noacute

lista_surfels lista em que cada registro conteacutem um apontador para um

surfel e um apontador para o proacuteximo registro

surfel representa o surfel da octree Conteacutem a classificaccedilatildeo em relaccedilatildeo a

outro modelo e um ponteiro para o surfel do Poinshop

Resultados 61

6 Resultados

Neste capiacutetulo apresentamos os testes realizados com o plugin para o

PointShop implementado para esta dissertaccedilatildeo a comparaccedilatildeo deste plugin com

o plugin de Pauly [3] e a comparaccedilatildeo entre o meacutetodo de Adams e Dutreacute [2] e o

meacutetodo de Pauly [3]

61 Testes

Os testes foram feitos em um PC x86 Family 6 261600 KB de RAM sem

placa graacutefica sistema operacional Windows 2000 O plugin foi implementado na

linguagem C

Os modelos usados para os testes satildeo modelos disponibilizados no

PointShop [11] Vale lembrar que o meacutetodo implementado em nosso plugin eacute

restrito a modelos soacutelidos e portanto foram usados apenas estes modelos

soacutelidos para os testes

O modelo na Figura 29 que eacute um dos modelos disponibilizados no

PointShop [11] foi usado para mostrar o resultado das operaccedilotildees realizadas

pelo plugin implementado nesta dissertaccedilatildeo O modelo Igea eacute um modelo soacutelido

que conteacutem 134345 surfels

Resultados 62

Figura 29-Modelo do PointShop Igea

Para realizar as operaccedilotildees este modelo foi carregado na cena do

PointShop duas vezes e um deles colorido de vermelho As Figuras 30 31 32

mostram o resultado da operaccedilatildeo de uniatildeo interseccedilatildeo e diferenccedila

respectivamente Os nuacutemeros de surfels dos modelos resultantes satildeo mostrados

na Tabela 2

Resultados 63

Figura 30-Resultado da uniatildeo de duas Igeas

Figura 31-Resultado da interseccedilatildeo de duas Igeas

Resultados 64

Figura 32-Resultado da diferenccedila entre duas Igeas

Tabela 2-Nuacutemero de surfels dos modelos resultantes

Observamos que o nuacutemero de surfels dos modelos resultantes estaacute

coerente com as figuras dos seus modelos

Para avaliar o tempo de processamento das operaccedilotildees foram realizados

vaacuterios testes com o objetivo de obter uma meacutedia dos tempos de realizaccedilatildeo de

cada operaccedilatildeo Tambeacutem foram armazenados os tempos da criaccedilatildeo das duas

octrees e da classificaccedilatildeo de todos os surfels dos dois objetos (como dentro ou

fora do outro modelo) Estes testes foram feitos usando o modelo Igea A meacutedia

dos tempos de processamento foi calculada e os resultados satildeo mostrados na

Tabela 3 Verificamos que o maior tempo gasto eacute para criaccedilatildeo das octrees

Verificamos tambeacutem que este resultado apresentado eacute similar ao resultado

verificado empiricamente com o plugin de Pauly [3] Os tempos gastos para

realizar as operaccedilotildees satildeo similares e o maior tempo gasto no plugin de Pauly

tambeacutem eacute para inicializaccedilatildeo de suas estruturas de dados que incluem a kd-tree

Operaccedilatildeo Nuacutemero de surfels do modelo resultado

Uniatildeo 189715

Interseccedilatildeo 72225

Diferenccedila 134552

Resultados 65

Operaccedilatildeo Criaccedilatildeo das

Octrees (seg)

Classificaccedilatildeo

(seg)

Criaccedilatildeo do

resultado (seg)

Total (seg)

Uniatildeo 39375 1324 18925 7154

Interseccedilatildeo 38585 1585 09547 63982

Diferenccedila 399875 1504 1729 729475

Tabela 3- Meacutedia dos tempos de processamento para as operaccedilotildees com duas Igeas

Com o objetivo de expor melhor os resultados deste trabalho

apresentamos abaixo mais um teste das operaccedilotildees booleanas usando o nosso

plugin Os modelos usados para este segundo teste satildeo o Max Planck e o Male

ambos modelos soacutelidos disponibilizados no PointShop Estes modelos satildeo

mostrados nas figura 33 e 34

O primeiro Max Planck conteacutem 52809 surfels

Figura 33-Modelo do PointShop MaxPlanck

O segundo modelo abaixo Male conteacutem 148138 surfels

Resultados 66

Figura 34-Modelo do PointShop Male

As Figuras 353637 mostram o resultado da operaccedilatildeo de uniatildeo interseccedilatildeo

e diferenccedila respectivamente usando os dois modelos acima Podemos observar

pela figura 35 que o resultado da operaccedilatildeo de diferenccedila neste caso gerou um

modelo resultado com trecircs partes desconexas Os nuacutemeros de surfels de cada

modelo resultado satildeo mostrados na Tabela 5

Figura 35- Resultado da Uniatildeo do modelo Male com MaxPlanck

Resultados 67

Figura 36-Resultado da interseccedilatildeo do modelo Male com o MaxPlanck

Figura 37-Resultado da diferenccedila do modelo Male do modelo MaxPlanck

As meacutedias de tempos de processamento foram calculadas da mesma

forma que o primeiro teste com o modelo Igea acima apresentado Os

resultados satildeo mostrados na Tabela 4 Podemos observar que este teste

Resultados 68

apresenta tempos um pouco menores que o teste com o modelo Igea Isto se

deve ao fato de que o modelo MaxPlanck ser significativamente menor que o

modelo Igea MaxPlanck possui 52809 surfels e Igea conteacutem 134345 surfels

Operaccedilatildeo Criaccedilatildeo das

Octrees (seg)

Classificaccedilatildeo

(seg)

Criaccedilatildeo do

resultado (seg)

Total

(seg)

Uniatildeo 3012 1254 102 5285

Interseccedilatildeo 2985 0901 0861 4747

Diferenccedila 2965 0911 0791 4667

Tabela 4-Tempo de processamento das operaccedilotildees com os modelos MaxPlanck e Male

Operaccedilatildeo Nuacutemero de surfels do resultado

Uniatildeo 126532

Interseccedilatildeo 88414

Diferenccedila 77635

Tabela 5-Nuacutemero de surfels dos modelos resultados das operaccedilotildees com os modelos MaxPlanck e Male

Em seguida apresentaremos uma comparaccedilatildeo entre o nosso plugin e o

plugin de Pauly[3] e tambeacutem uma comparaccedilatildeo entre o meacutetodo de Adams e Dutreacute

[2] e o meacutetodo de Pauly [3]

62 Comparaccedilatildeo entre os dois meacutetodos que realizam operaccedilotildees booleanas

A comparaccedilatildeo entre os meacutetodos de Pauly[3] e de Adams e Dutreacute foi feita

em termos de tempo de processamento e em termos conceituais Em termos de

tempo de processamento comparamos o plugin de Pauly[3] com o nosso plugin

Em termos de tempo de processamento verifica-se empiricamente que os

dois meacutetodos apresentam tempos bastante similares Entretanto o tempo de

processamento do algoritmo aqui implementado ainda pode ser melhorado com

Resultados 69

o uso do meacutetodo TINN [19] que foi proposto em Adams[2] - para otimizar a

pesquisa do surfel mais proacuteximo a um ponto que estaacute localizado na regiatildeo de um

noacute que conteacutem surfels - veja seccedilatildeo 42 O uso deste meacutetodo natildeo foi

implementado para este trabalho e a sua implementaccedilatildeo melhoraria o tempo de

resposta do algoritmo Aleacutem disso o trabalho de Sara F Frisken [12] citado no

capiacutetulo 2 apresenta uma otimizaccedilatildeo no uso de octrees que pode ser

incorporada no algoritmo implementado neste trabalho

Em termos conceituais vamos fazer a comparaccedilatildeo do uso do que

chamamos aqui de Regra 2 do tratamento de interseccedilatildeo e do tratamento de

ldquoarestas vivasrdquo

Como vimos na seccedilatildeo 41 tanto o algoritmo implementado nesta

dissertaccedilatildeo baseado no trabalho de Adams e Dutreacute como o meacutetodo de Pauly

[3] parte do que chamamos aqui de Regra 2 para realizar operaccedilotildees booleanas

com pontos Mas cada um destes meacutetodos daacute um tratamento diferente para o

uso desta regra

O meacutetodo de Pauly usa a Regra 2 para classificaccedilatildeo de cada ponto ou de

cada surfel Para classificar um surfel de B sb como dentro ou fora de A eacute

encontrado o surfel de A sa mais proacuteximo a sb e sb eacute classificado a partir de sa

Para encontrar sa Pauly utiliza uma kd-tree Como esta pesquisa para encontrar

sa eacute cara (mesmo usando uma kd-tree) Pauly utiliza uma esfera que conteacutem

pontos com a mesma classificaccedilatildeo (seccedilatildeo 432) e diminui em 90 este nuacutemero

de pesquisas Pauly utiliza tambeacutem a representaccedilatildeo impliacutecita MLS (Moving Least

Squares) para casos em que a Regra 2 poderia falhar e para tratamento de

interseccedilotildees Entretanto o nuacutemero destes casos em que a Regra 2 poderia falhar

eacute muito pequeno E a representaccedilatildeo MLS natildeo eacute uma estrutura simples de ser

implementada Portanto natildeo encontramos vantagens em usar MLS para estes

casos O meacutetodo de Adams e Dutreacute natildeo trata estes casos e na praacutetica

apresenta resultados bastante satisfatoacuterios como foi mostrado Portanto

consideramos que valeria a pena fazer algum tratamento especial para estes

casos se fosse um procedimento simples Para a execuccedilatildeo do algoritmo de

Pauly o uso de MLS natildeo interfere significativamente porque a construccedilatildeo desta

representaccedilatildeo natildeo eacute feita somente para realizar operaccedilotildees booleanas Os testes

empiacutericos que fizemos com o algoritmo de Pauly natildeo incluem a construccedilatildeo desta

representaccedilatildeo

Aparentemente os dois algoritmos satildeo bastante parecidos um usa octrees

e o outro usa kd-tree As duas estruturas de dados satildeo simples e otimizam a

classificaccedilatildeo dos surfels de um modelo como dentro ou fora do outro modelo

Resultados 70

Mas existe uma diferenccedila conceitual entre dois que merece ser destacada O

algoritmo aqui implementado usa a Regra 2 para classificaccedilatildeo dos noacutes de uma

octree e armazena esta octree classificada (ver capiacutetulo 5) Assim na maioria dos

casos natildeo seraacute necessaacuterio encontrar o surfel mais proacuteximo para classificar um

ponto (ou um surfel) como fora ou dentro de um modelo Caso o ponto esteja em

uma aacuterea da octree classificada ele teraacute a classificaccedilatildeo dada agravequela aacuterea A

pesquisa ao surfel mais proacuteximo seraacute feita apenas nos casos em que o ponto a

ser classificado estaacute localizado entre os planos que subdividem um noacute cheio

O uso desta octree classificada levanta uma questatildeo que natildeo foi citada no

trabalho de Adams e Dutreacute que eacute a proximidade desta estrutura (armazenada)

de octree classificada com uma representaccedilatildeo volumeacutetrica do objeto Sendo

assim esta estrutura pode ser aproveitada para outras funccedilotildees aleacutem da

classificaccedilatildeo dos surfels Por exemplo podemos ter uma aproximaccedilatildeo do

volume de uma cena somando os volumes aproximados dos modelos que a

compotildeem Como o enfoque deste trabalho eacute operaccedilatildeo booleana natildeo vamos nos

aprofundar nesta questatildeo

Outra importante diferenccedila entre os dois trabalhos que jaacute foi explicada na

seccedilatildeo 432 eacute que o meacutetodo de Pauly aplica-se a modelos soacutelidos ou natildeo

soacutelidos enquanto que o meacutetodo de Adams e Dutreacute aplica-se somente a modelos

soacutelidos

Quanto ao tratamento de interseccedilatildeo em termos de visualizaccedilatildeo todos os

dois resolvem bem o problema O tratamento de interseccedilatildeo nos dois trabalhos

tambeacutem resolve o problema da validade da Regra 2 (ver seccedilatildeo 44) Entretanto

o tratamento de Adams e Dutreacute natildeo depende da renderizaccedilatildeo sendo portanto

mais portaacutevel Aleacutem disso uma desvantagem do meacutetodo de Pauly eacute o uso da

representaccedilatildeo impliacutecita MLS (ldquoMoving Least Squaresrdquo) do objeto para obter os

pontos exatamente na curva de interseccedilatildeo Esta representaccedilatildeo torna o

tratamento de interseccedilatildeo mais complexo e a vantagem apresentada natildeo eacute tatildeo

significativa para este tratamento de interseccedilatildeo

Conclusatildeo 71

7 Conclusatildeo

Concluiacutemos entatildeo que as escolhas de Adams e Dutreacute por usar uma

octree classificada e pelo tratamento dado agrave interseccedilatildeo satildeo mais abrangentes

que a escolha de Pauly E consideramos que quanto mais abrangente for uma

escolha conceitual mais resultados poderemos tirar dela No caso de Adams e

Dutreacute eles estendem o problema de classificar um ponto para classificar todo o

modelo Como foi citado ele quase fornece uma representaccedilatildeo volumeacutetrica do

modelo Esta aproximada representaccedilatildeo volumeacutetrica pode nos fornecer outras

informaccedilotildees como por exemplo o volume aproximado do modelo

Aleacutem disso o uso da representaccedilatildeo impliacutecita MLS no meacutetodo de Pauly cria

uma complexidade a mais para o meacutetodo sem apresentar vantagens para a

realizaccedilatildeo de operaccedilotildees booleanas que eacute o nosso enfoque

Logo podemos dizer que o meacutetodo de Adams e Dutreacute apresenta as

seguintes vantagens em relaccedilatildeo ao de Pauly

- a estrutura de octree classificada aleacutem de ser usada para classificaccedilatildeo

fornece informaccedilotildees adicionais como volume aproximado do objeto

- o tempo de processamento no meacutetodo de Adams e Dutreacute tende a ser

melhor que no meacutetodo de Pauly se implementadas as melhorias acima citadas e

se colocaacutessemos em consideraccedilatildeo o uso da representaccedilatildeo impliacutecita MLS

(Moving Least Squares)

- o tratamento de interseccedilatildeo de Adams e Dutreacute apresenta a vantagem da

portabilidade ou seja iraacute funcionar independente do algoritmo de renderizaccedilatildeo

utilizado

E as vantagens do meacutetodo de Pauly em relaccedilatildeo ao de Adams e Dutreacute

- a colocaccedilatildeo de surfels exatamente na curva de interseccedilatildeo

- a possibilidade de trabalhar com modelos soacutelidos ou natildeo soacutelidos

E finalizando concluiacutemos que o estudo relatado nesta dissertaccedilatildeo foi

importante por

- fornecer um breve estudo sobre modelagem por pontos uma nova e

promissora aacuterea dentro da computaccedilatildeo graacutefica

Conclusatildeo 72

- por apresentar uma avaliaccedilatildeo dos dois trabalhos existentes sobre

operaccedilotildees booleanas com pontos encontrando as vantagens de cada um

e levantando questotildees que natildeo tinham sido citadas nos trabalhos originais

- por propor e implementar melhorias ao trabalho de Adams e Dutreacute

71 Trabalhos Futuros

Nossa implementaccedilatildeo pode ser ainda evoluiacuteda com as propostas

apresentadas na seccedilatildeo 62 Como observamos o tempo de processamento do

algoritmo aqui implementado ainda pode ser melhorado com o uso do meacutetodo

TINN [19] - que foi proposto em Adams[2] - para otimizar a pesquisa do surfel

mais proacuteximo a um ponto que estaacute localizado na regiatildeo de um noacute que conteacutem

surfels Aleacutem disso o trabalho Simple and Efficient Trasversal Methods for

Quadtrees and Octrees de Sara F Frisken [12] citado no capiacutetulo 2 apresenta

uma otimizaccedilatildeo no uso de octrees Outra proposta para melhorar o tempo de

processamento do algoritmo aqui implementado eacute usar a forma de trabalhar com

octrees apresentada neste trabalho

O trabalho de Adams e Dutreacute [2] eacute aplicado apenas a objetos soacutelidos O

nosso plugin portanto aplica-se somente a este tipo de objeto Jaacute o trabalho de

Pauly[3] eacute aplicado tambeacutem a modelos natildeo soacutelidos Apresentamos como

proposta a um trabalho futuro a extensatildeo do algoritmo aqui implementado para

modelos natildeo soacutelidos O surfel pode conter uma informaccedilatildeo adicional que indica

se ele estaacute delimitando um volume ou natildeo Assim pode-se ter um modelo com

ldquopartes soacutelidasrdquo e ldquopartes natildeo soacutelidasrdquo Por exemplo a uniatildeo de um plano com

uma esfera poderia resultar numa esfera com ldquoabasrdquo (seriam as partes do plano

que estariam fora da esfera) O modelo resultado teria uma parte correspondente

a um espaccedilo 3D (esfera) e outra parte que seria uma superfiacutecie 2D posicionada

no espaccedilo 3D sem delimitar algum volume (abas)

Muitos trabalhos podem ser desenvolvidos aplicando-se o modelo por

pontos em animaccedilatildeo jogos visualizaccedilatildeo de terrenos criaccedilatildeo de protoacutetipos etc

considerando-se a eficiecircncia e simplicidade do modelo E mais especificamente

as operaccedilotildees booleanas com pontos podem ser aplicadas para criaccedilatildeo de

cenaacuterios testes de colisotildees e nestes casos a representaccedilatildeo usando octrees

pode ser mais explorada considerando-se o seu potencial de representaccedilatildeo

volumeacutetrica de um objeto

Referecircncias Bibliograacuteficas 73

8 Referecircncias Bibliograacuteficas

[1] MAumlNTYLAuml M An Introduction to Solid Modeling Computer Science Press 1988

[2] ADAMS B DUTREacute P Interactive Boolean Operations on Surfel-

Bounded Solids Proceedings of SIGGRAPH 2003 San Diego USA 2003

[3] PAULY M KEISER R KOBBELT L GROSS M Shape Modeling

with Point-Sampled Geometry SIGGRAPH 2003 Computer Graphics

Proceedings Annual Conference Series ACM Press ACM SIGGRAPH 2003

[4] LEVOY M WHITTED T The Use of Points as Display Primitives

Technical Report TR 85-022 The University of North Carolina at Chapel Hill

Department of Computer Science 1985

[5] PFISTER H ZWICKER M VAN BAAR J GROSS M 2000 Surfels

Surface Elements as Rendering Primitives SIGGRAPH 2000 pp 335ndash342 New

Orleans LA July 23-28 2000

[6] ZWICKER M PFISTER H VAN BAAR J GROSS M Surface

Splatting SIGGRAPH 2001

[7] PAULY M KOBBELT L GROSS M Multiresolution Modeling of

Point-Sampled Geometry CS Techinical Report 378 September 16 2002

[8] CURLESS B New Methods for Surface Reconstruction from Range Images PhD thesis Stanford University 1997

[9] RUSINKIEWICZ S Real-time Acquisition and Rendering of Large 3D Models PhD thesis Stanford University 2001

Referecircncias Bibliograacuteficas 74

[10] AMENTA N BERN M KAMVYSSELIS M A new Voronoi-Based

Surface Reconstruction Algorithm SIGGRAPH 98 Conference proceedings pp

415-421 New York 1998

[11] ZWICKER M PAULY M KNOLL O GROSS M Pointshop 3D an

Interactive System for Point-Based Surface Editing Proceedings of SIGGRAPH 2002 San Antonio TX July 2002

[12] FRISKEN S PERRY R Simple and Efficient Traversal Methods for

Quadtrees and Octrees Journal of Graphics Tools Vol 7 Issue 3 May 2003

[13] CORREcircA W T OLIVEIRA M M Silva C T Wang J

Modeling and Rendering of Real Environments

Revista de Informaacutetica Teoacuterica e Aplicada (Brazilian Journal of Theoretic and Applied Computing) 9(2)127-156 2002

[14] DAVIS J MARSCHNER S GARR M LEVOY M Filling Holes in

Complex Surfaces Using Volumetric Diffusion First International Symposium on 3D Data Processing Visualization Transmission June 2002

[15] RAumlSAumlNEN J Surface Splatting Theory Extensions and Implementation Masterrsquos Thesis Dept of Computer Science Helsinki

University of Technology May 28 2002

[16] PAULY M Point Primitives for Interactive Modeling and Processing of 3D Geometry PhD thesis Federal Institute of Technology (ETH)

of Zurich 2003

[17] HOPPE H DEROSE T DUCHAMP T MCDONALD J

STUELZLE W Surface Reconstruction from Unorganized Points Computer Graphics 26(2)71ndash78 July 1992

[18] ALEXA M BEHR J COHEN-OR D FLEISHMAN S LEVIN D

SILVA C T Point Set Surfaces IEEE Visualization 2001 pp 21ndash28 October

2001

Referecircncias Bibliograacuteficas 75

[19] GREENSPAN M GODIN G TALBOT J Acceleration of Binning

Nearest Neighbor Methods Proceedings of Vision Interface 2000 pp 337-

344

[20] MENCL R Reconstruction of Surfaces from Unorganized Three-Dimensional Point Clouds Dissertation Dortmund Univ 2001

[21] KRIVANEK J Representing and Rendering Surfaces With Points

httpciteseernjneccomkrivanek03representinghtml Acesso em 30 jul

2003

[22] KRISTJANSSON ET AL Approximate Boolean Operations on Free-

form Solids Proceedings of SIGGRAPH 01 2001

Operaccedilotildees Booleanas com Pontos 32

Figura 7 Para classificar o ponto x encontra-se o surfel p (com normal np) mais proacuteximo

a x Se o produto interno entre np e (x ndash p) for maior que zero entatildeo x eacute classificado como

fora senatildeo seraacute classificado como dentro

A validade da Regra 2 eacute discutida na Seccedilatildeo 44 Uma das restriccedilotildees

teoacutericas para garantir-lhe a validade eacute que a superfiacutecie seja suave

Cada um dos dois meacutetodos daacute um tratamento diferente para o uso desta

regra Pauly usa a regra diretamente encontrando o surfel mais proacuteximo a um

ponto e classificando este ponto a partir deste surfel Ele utiliza tambeacutem a

representaccedilatildeo impliacutecita MLS (Moving Least Squares [18]) para casos em que a

Regra 2 poderia falhar e para tratamento de interseccedilotildees [3] Seu meacutetodo vale

para modelos soacutelidos ou natildeo soacutelidos O meacutetodo de Adams e Dutreacute [2] utiliza

octrees [1] criando uma classificaccedilatildeo dos noacutes da octree a partir desta Regra 2

Os pontos satildeo entatildeo classificados de acordo com o noacute da octree que o conteacutem

Este segundo meacutetodo aplica-se somente a modelos soacutelidos Os dois meacutetodos

seratildeo descritos em detalhes nas seccedilotildees abaixo

Como um surfel eacute considerado um disco podemos dizer que surfels de

dois modelos diferentes podem se intersectar A interseccedilatildeo destes dois surfels

corresponde agrave interseccedilatildeo destes dois discos Estes surfels geram problemas

para visualizaccedilatildeo se forem acrescentados ao resultado sem um tratamento

especiacutefico apresentaratildeo artefatos natildeo desejaacuteveis na renderizaccedilatildeo do modelo

resultado (Figura 8) se natildeo forem acrescentados ao resultado deixaratildeo buracos

no modelo

Operaccedilotildees Booleanas com Pontos 33

Figura 8 [2] -Interseccedilatildeo de duas esferas agrave esquerda sem nenhum tratamento de interseccedilatildeo agrave direita apoacutes o tratamento de interseccedilatildeo

Aleacutem disso nem sempre esta interseccedilatildeo forma uma superfiacutecie suave

Esta interseccedilatildeo pode formar uma aresta viva (seccedilatildeo 4223) gerando

problemas tambeacutem para o uso da Regra 2 que eacute vaacutelida apenas para superfiacutecies

suaves Eacute necessaacuterio entatildeo fazer um tratamento desta superfiacutecie de interseccedilatildeo

(formada por surfels originados de diferentes modelos) O tratamento de cada

um dos meacutetodos para este caso seraacute tambeacutem abaixo apresentado

42 Meacutetodo de Adams e Dutreacute

O meacutetodo aplica-se somente a modelos soacutelidos Para determinaccedilatildeo dos

elementos da aqui chamada Regra 1 (seccedilatildeo 41) este meacutetodo utiliza uma octree

[1] que subdivide o espaccedilo do modelo em trecircs fora dentro ou no contorno do

modelo Estes espaccedilos satildeo determinados pela classificaccedilatildeo dos noacutes da octree a

partir da Regra 2 Tambeacutem eacute usado o meacutetodo TINN - Triangle Inequality Nearest

Neighbour [19] - para otimizar a pesquisa dentro do noacute A seguir descrevemos o

modelo usado neste meacutetodo apresentando os dados associados aos pontos o

tipo de distribuiccedilatildeo e o algoritmo que realiza as operaccedilotildees

421 Modelo por Pontos em Adams e Dutreacute

Os surfels neste meacutetodo contecircm as seguintes informaccedilotildees posiccedilatildeo do

surfel xs orientaccedilatildeo do surfel ns e raio de alcance do surfel rs O surfel pode ser

pensado como um disco ortogonal a ns com centro xs e raio rs O raio eacute

escolhido de tal forma que a projeccedilatildeo dos discos no plano da imagem se

sobreponham

Operaccedilotildees Booleanas com Pontos 34

Os objetos representados satildeo soacutelidos A distribuiccedilatildeo dos surfels eacute

uniforme embora o algoritmo natildeo exija esta condiccedilatildeo Para cada soacutelido eacute

definido um rmax = Max rs o raio de alcance do maior surfel pertencente agrave

superfiacutecie do soacutelido Como o raio eacute escolhido de tal forma que a projeccedilatildeo dos

discos no plano da imagem se sobreponham o controle da amostragem eacute

entatildeo ligado agrave renderizaccedilatildeo

422 Algoritmo de Operaccedilotildees Booleanas

Utilizando objetos modelados da forma descrita acima o meacutetodo realiza

operaccedilotildees de uniatildeo interseccedilatildeo e diferenccedila com modelos soacutelidos Supondo dois

modelos soacutelidos S1 e S2 O algoritmo pode ser dividido nas seguintes etapas

Criaccedilatildeo de uma octree para cada modelo Teste Dentro-Fora Tratamento da

interseccedilatildeo Estas etapas satildeo apresentadas nas proacuteximas seccedilotildees

4221 Criaccedilatildeo de uma octree para cada modelo

Eacute criada uma octree [1] para cada modelo A criaccedilatildeo de uma octree eacute feita

da seguinte forma

Gera-se a ldquoCaixa envolventerdquo caixa alinhada com os eixos que conteacutem

todo o modelo A ldquoCaixa envolventerdquo corresponde ao noacute raiz da octree Este noacute

conteacutem inicialmente todos os surfels do modelo Em seguida o noacute raiz eacute

dividido em oito noacutes filhos Os surfels satildeo distribuiacutedos entre estes oito noacutes Cada

um deles caso contenha surfels eacute dividido novamente em 8 filhos e seus surfels

satildeo redistribuiacutedos entre eles Este processo eacute repetido recursivamente enquanto

o nuacutemero de surfels do noacute for maior que zero ou ateacute uma profundidade maacutexima

preacute-definida da octree ser alcanccedilada

Cada noacute da octree deve ser classificado O objetivo desta classificaccedilatildeo eacute

determinar que parte da octree estaacute dentro do modelo e que parte estaacute fora Os

noacutes da octree satildeo entatildeo classificados como ldquodentrordquo ldquoforardquo e ldquocontornordquo

Podemos ilustrar esta classificaccedilatildeo em 2D a Figura 9 mostra uma quadtree

classificada

Operaccedilotildees Booleanas com Pontos 35

Figura 9-Um objeto representado por pontos com suas normais e sua quadtree correspondente classificada os noacutes cinza claro estatildeo dentro do modelo noacutes cinza mais escuro estatildeo fora do modelo e noacutes com cinza intermediaacuterio satildeo noacutes cheios noacutes que conteacutem pontos

O noacutes que conteacutem surfels satildeo classificados como ldquocontornordquo Para

classificar um noacute vazio existem trecircs casos

o noacute vazio tem apenas um vizinho-irmatildeo natildeo vazio

o noacute vazio tem mais de um vizinho-irmatildeo natildeo vazio

o noacute vazio natildeo tem vizinhos-irmatildeos natildeo vazios

No primeiro caso o noacute vazio eacute classificado pelo seu vizinho natildeo vazio No

segundo caso considera-se qualquer um dos vizinhos natildeo vazios No terceiro

caso classifica-se primeiro os noacutes vizinhos e eacute dada a mesma classificaccedilatildeo para

o noacute vazio Como cada noacute natildeo folha de uma octree tem pelo menos um noacute filho

natildeo vazio sempre pode ser feita a classificaccedilatildeo dos noacutes vazios A classificaccedilatildeo

eacute feita da seguinte forma dentre os surfels do vizinho-irmatildeo escolhido encontra-

se o surfel mais proacuteximo ao noacute a ser classificado Se a normal deste surfel

aponta para o noacute vazio a ser classificado entatildeo ele eacute classificado como ldquoforardquo

Se a normal aponta no sentido contraacuterio entatildeo ele eacute classificado como ldquodentrordquo

De maneira mais formal sejam cv e cc coordenadas dos centros do noacute vazio e

do noacute contorno respectivamente Seja s o surfel mais proacuteximo ao noacute vazio e ns

a normal em s Se ( cv - cc )٠ ns gt 0 ( produto interno entre a normal em s e o

vetor cv - cc for maior que zero ) o noacute vazio seraacute classificado como ldquoforardquo

Senatildeo seraacute classificado como ldquodentrordquo

Em geral os noacutes ldquocontornordquo satildeo subdivididos em trecircs partes uma que estaacute

fora do modelo uma que estaacute dentro do modelo e uma terceira que conteacutem os

surfels Esta subdivisatildeo eacute feita por meio da criaccedilatildeo de dois planos paralelos que

Operaccedilotildees Booleanas com Pontos 36

dividem o noacute Para determinar estes planos calcula-se o vetor nm igual agrave

meacutedia das normais dos surfels do noacute nm = sum ns sum ns onde ns eacute a normal de

cada surfel do noacute

Em seguida encontra-se o surfel com maior produto interno entre a sua

normal e a normal meacutedia d1=Max(nm ٠ ns) Este surfel juntamente com a normal

meacutedia define um dos planos Encontra-se tambeacutem o surfel com menor produto

interno entre a sua normal e a normal meacutedia d2=Min(nm ٠ ns) Este surfel

juntamente com a normal meacutedia define o outro plano A Figura 10 mostra a

divisatildeo de um noacute de uma quadtree nas trecircs partes dentro do modelo fora do

modelo e no ldquocontornordquo

Esta subdivisatildeo aplica-se apenas a noacutes que conteacutem surfels cujas direccedilotildees

natildeo variem em mais de 90 graus Caso isso ocorra ele natildeo seraacute subdividido Ou

seja se um noacute possuir dois vetores normais (de dois surfels diferentes) que

formem um acircngulo maior que 90 graus ele natildeo seraacute subdividido

Figura 10 [2] -Divisatildeo de noacute de contorno a parte agrave esquerda estaacute fora do modelo a parte agrave direita estaacute dentro do modelo e a faixa intermediaacuteria conteacutem os surfels

4222 Teste Dentro-Fora

O Teste Dentro-Fora faz a classificaccedilatildeo dos surfels de um modelo como

ldquodentrordquo ou ldquoforardquo de outro modelo Portanto aplicaremos este mesmo teste duas

vezes uma para o modelo S1 em relaccedilatildeo ao modelo S2 e outra para S2 em

relaccedilatildeo a S1 Vamos mostrar o teste Dentro-Fora para o caso da classificaccedilatildeo

dos surfels do modelo S1 em relaccedilatildeo a S2

Operaccedilotildees Booleanas com Pontos 37

No item anterior foram criadas duas octrees uma para o modelo S1 e

outra para o modelo S2 Chamemos de A e B as octrees de S1 e S2

respectivamente Para classificar S1 em relaccedilatildeo a S2 inicialmente eacute feita uma

avaliaccedilatildeo da posiccedilatildeo de A em relaccedilatildeo a B A e B podem estar nas seguintes

situaccedilotildees

- A natildeo intersecta B

- A intersecta apenas noacutes ldquoforardquo de B

- A intersecta apenas noacutes ldquodentrordquo de B

- A intersecta noacutes ldquoforardquo e noacutes ldquodentrordquo de B

Para testar estas situaccedilotildees os noacutes satildeo aumentados de rmax o raio do

maior surfel do modelo soacutelido Isto eacute feito para compensar o fato de que o surfel

natildeo eacute apenas um ponto mas sim considerado como um disco

No primeiro e no segundo caso todos os surfels de A satildeo classificados

como ldquoforardquo No terceiro caso todos os surfels de A satildeo classificados como

ldquodentrordquo

No quarto caso temos que percorrer a octree A Comeccedilando pelo noacute raiz

percorre-se os filhos deste noacute Para cada filho os quatro testes acima satildeo feitos

Se o noacute filho encontra-se em um dos trecircs primeiros casos a classificaccedilatildeo eacute dada

como foi citada acima Se um filho estaacute no quarto caso e natildeo eacute um noacute folha

repete-se recursivamente o mesmo procedimento para seus filhos ateacute encontrar-

se um noacute folha Para um noacute que estaacute no quarto caso e eacute folha percorre-se a lista

de surfels que este noacute conteacutem classificando cada um destes surfels Seja sa um

surfel desta lista Para este caso percorre-se a octree B para classificar sa

Primeiramente encontramos o noacute de B que conteacutem sa Se este noacute de B foi

dividido testa-se de acordo com esta divisatildeo do noacute se o surfel sa estaacute na parte

do noacute que estaacute dentro do modelo ele eacute classificado como ldquodentrordquo se sa estaacute na

parte que estaacute fora do modelo ele eacute classificado como ldquoforardquo se sa estaacute na parte

intermediaacuteria ou se o noacute de B natildeo foi subdividido em planos encontra-se sb que

eacute o surfel pertencente a este noacute de B que estaacute mais proacuteximo de sa sa seraacute

entatildeo classificado de acordo com sb Se ( sa - sb )٠ nb gt 0 sa eacute classificado

como ldquoforardquo senatildeo eacute classificado como ldquodentrordquo Se os discos de sb e sa se

intersectam sa eacute marcado como interseccedilatildeo Para encontrar sb o algoritmo

implementa o meacutetodo TINN ndash Triangle Inequality Nearest Neighbour [19]

Operaccedilotildees Booleanas com Pontos 38

4223 Tratamento da interseccedilatildeo

Os surfels de A que intersectam surfels de B satildeo classificados como

ldquointerseccedilatildeordquo Se eles natildeo forem incluiacutedos no modelo resultado o soacutelido resultado

teraacute buracos Se eles forem incluiacutedos sem algum tratamento eles natildeo

representaratildeo adequadamente a regiatildeo Em geral o surfel sa (um surfel

ldquointerseccedilatildeordquo de A) eacute dividido em dois pelo plano que conteacutem o surfel sb (surfel de

B que sa intersecta) uma parte que estaacute fora de B e outra que estaacute dentro de B

Dependendo da operaccedilatildeo que estaacute sendo realizada vamos querer manter uma

destas partes do surfel sa no modelo resultado Seja xa a posiccedilatildeo do surfel sa e o

surfel sa uma circunferecircncia de centro xa e raio ra igual ao raio de alcance de sa

O plano que conteacutem o surfel sb define uma corda desta circunferecircncia como

mostra a Figura 11 O surfel sa seraacute substituiacutedo por um surfel menor que

ultrapassa esta corda de uma distacircncia e definida pelo usuaacuterio Para cobrir

completamente a interseccedilatildeo seratildeo adicionados surfels menores que cruzam a

corda de interseccedilatildeo

Figura 11 -Interseccedilatildeo do surfel s e do plano que passa pelo surfel t o surfel mais proacuteximo a s O surfel s eacute substituiacutedo por trecircs surfels menores

Operaccedilotildees Booleanas com Pontos 39

O tratamento de interseccedilatildeo proposto por Adams e Dutreacute [2] natildeo soacute evita

os buracos mas tambeacutem cria uma forma de renderizaccedilatildeo de arestas vivas A

colocaccedilatildeo de vaacuterios pequenos surfels na regiatildeo da interseccedilatildeo permite esta

correta renderizaccedilatildeo das ldquoarestas vivasrdquo Desta forma o problema das arestas

vivas eacute resolvido na modelagem (Figura 12) A vantagem de se resolver o caso

na modelagem eacute que natildeo eacute necessaacuterio fazer um tratamento especial na

renderizaccedilatildeo para que mostre esta aresta viva Diferente do tratamento feito

em Pauly (seccedilatildeo 431) que resolve esta questatildeo em tempo de renderizaccedilatildeo

Aleacutem disso o tratamento resolve alguns casos onde a Regra 2 poderia falhar

(veja em Validade da Regra 2-seccedilatildeo 44)

Figura 12 [2] -Agrave direita eacute mostrado o resultado do tratamento de interseccedilatildeo para o caso de Arestas Vivas do objeto agrave esquerda

43 Meacutetodo de Pauly

O meacutetodo aplica-se a objetos soacutelidos e natildeo soacutelidos Os modelos podem ser

obtidos a partir de diferentes entradas como nuvem de pontos irregulares ou por

meio de scanners 3D Cria um modelo hiacutebrido destes objetos usa o modelo por

pontos juntamente com a representaccedilatildeo impliacutecita Moving Least Squares - MLS

[18] Realiza operaccedilotildees booleanas com pontos e utiliza adicionalmente MLS

para alguns casos de classificaccedilatildeo de surfels e no tratamento de interseccedilatildeo A

seguir apresentamos as caracteriacutesticas do modelo por pontos deste meacutetodo e o

algoritmo que realiza as operaccedilotildees

Operaccedilotildees Booleanas com Pontos 40

431 Modelo em Pauly

O modelo eacute uma estrutura hiacutebrida de pontos com a representaccedilatildeo impliacutecita

Moving Least Squares - MLS [18] Esta estrutura eacute usada para fazer operaccedilotildees

booleanas e tambeacutem operaccedilotildees de free-form (natildeo abordadas nesta

dissertaccedilatildeo) Para operaccedilotildees booleanas a representaccedilatildeo MLS permite que a

curva de interseccedilatildeo entre os modelos seja reconstruiacuteda e surfels sejam

colocados nesta curva e em alguns casos de classificaccedilatildeo de surfels mostrados

na seccedilatildeo 432 Para este modelo natildeo existem restriccedilotildees quanto agrave forma do

objeto

Os surfels contecircm informaccedilotildees sobre sua posiccedilatildeo e sua normal Aleacutem

disso surfels podem conter informaccedilotildees adicionais como textura cor

propriedades de materiais

A distribuiccedilatildeo dos surfels eacute natildeo-uniforme e a amostragem eacute

aproximadamente adequada (Veja seccedilatildeo 44)

432 Algoritmo de Operaccedilotildees Booleanas

O algoritmo classifica surfels de um modelo como ldquodentrordquo ou ldquoforardquo de

outro modelo Antes de colocarmos como eacute feita esta classificaccedilatildeo devemos

acrescentar que Pauly estende esta classificaccedilatildeo para modelos que natildeo satildeo

soacutelidos Ou seja mesmo um modelo natildeo soacutelido divide o espaccedilo da cena (espaccedilo

em que se encontra o modelo) em dois sub-espaccedilos dentro ou fora do modelo

Pauly faz esta subdivisatildeo da seguinte forma

Como a superfiacutecie que determina o modelo eacute orientada (conteacutem vetores

normais agrave superfiacutecie que apontam para ldquoforardquo do modelo) Pauly considera que

um modelo natildeo soacutelido divide o espaccedilo em dois sub-espaccedilos um ldquoforardquo do

modelo (os vetores normais apontam para este sub-espaccedilo) e um que estaacute

ldquodentrordquo do modelo (os vetores normais apontam para direccedilatildeo oposta a este sub-

espaccedilo) Por exemplo um plano eacute representado como um conjunto de surfels

contidos num determinado espaccedilo geomeacutetrico plano π Cada surfel conteacutem um

vetor normal direcionado Este modelo divide entatildeo o espaccedilo em dois sub-

espaccedilos o sub-espaccedilo que eacute apontado por estes surfels (considerado ldquoforardquo do

modelo) e o sub-espaccedilo que estaacute na direccedilatildeo oposta (considerado ldquodentrordquo do

modelo) Desta forma ele aplica as classificaccedilotildees de ldquodentrordquo e ldquoforardquo de um

modelo tambeacutem a modelos natildeo soacutelidos A partir desta consideraccedilatildeo as

Operaccedilotildees Booleanas com Pontos 41

operaccedilotildees booleanas satildeo realizadas com os modelos natildeo soacutelidos da mesma

forma que com os modelos soacutelidos

Para determinar esta classificaccedilatildeo (dentro ou fora do modelo) Pauly utiliza

a Regra 2 Para pesquisa do surfel mais proacuteximo o meacutetodo usa a estrutura Kd-

tree [16] e tambeacutem o algoritmo ANN [16] No entanto o meacutetodo apresenta uma

restriccedilatildeo da Regra 2 ela soacute deve ser usada para classificaccedilotildees de pontos x se

a distacircncia x-p for maior que o espaccedilamento da amostragem local ηp em p

Este espaccedilamento da amostragem local ηp em p eacute um caacutelculo aproximado da

distacircncia meacutedia entre os surfels vizinhos a p Se x estaacute muito proacuteximo agrave

superfiacutecie a classificaccedilatildeo pode falhar Neste caso ele calcula o ponto exato de

S mais proacuteximo a x usando a projeccedilatildeo MLS (ldquoMoving Least Squaresrdquo)

Por questotildees de melhoria de desempenho utiliza-se o fato de que sendo

Ωp (x) a classificaccedilatildeo do ponto x em relaccedilatildeo agrave amostragem P tem-se que Ωp (x)

= Ωp (xrsquo) para todos os pontos de xrsquo que estatildeo dentro da esfera de centro x e

raio igual a x-p - ηp (onde p eacute o surfel mais proacuteximo e ηp eacute o espaccedilamento

local da amostragem em p acima citado) Ou seja sendo x um ponto qualquer p

o surfel mais proacuteximo a x ηp eacute o espaccedilamento local da amostragem em p se

desenharmos uma esfera com centro x e raio igual a x-p - ηp temos que

todos os pontos xrsquo que estatildeo dentro da esfera teratildeo a mesma classificaccedilatildeo de x

Desta forma o nuacutemero de vezes que a classificaccedilatildeo eacute feita (pesquisando-se o

surfel mais proacuteximo ao ponto e usando a Regra 2) diminui em ateacute 90 Assim

em geral a classificaccedilatildeo de um surfel eacute obtida a partir do seu surfel vizinho

Dados

S1 a superfiacutecie MLS de contorno que define o modelo A

S2 a superfiacutecie MLS de contorno que define o modelo B

P1 o conjunto de surfels que representa a superfiacutecie S1

P2 o conjunto de surfels que representa a superfiacutecie S2

Ωp1 (x) a classificaccedilatildeo do ponto p em relaccedilatildeo a uma amostragem P1

Q1 o subconjunto de P1 que vai compor o resultado

Ωp2 (x) a classificaccedilatildeo do ponto p em relaccedilatildeo a uma amostragem P2

Q2 o subconjunto de P2 que vai compor o resultado

Os conjuntos Q1 e Q2 satildeo obtidos por meio da Tabela 1 mostrada abaixo

Operaccedilotildees Booleanas com Pontos 42

Tabela 1 Classificaccedilatildeo para operaccedilotildees booleanas

Para o tratamento de interseccedilatildeo neste meacutetodo satildeo computados pontos

que caem exatamente na curva de interseccedilatildeo e estes satildeo acrescentados ao

modelo resultado Estes pontos satildeo determinados de forma que a densidade da

amostragem vai crescendo agrave medida que os surfels se aproximam da curva de

interseccedilatildeo e convergem para este ponto de interseccedilatildeo como mostra a Figura

13

(a) (b) (c)

Figura 13 - Os novos surfels satildeo colocados exatamente na curva de interseccedilatildeo

e convergem para o ponto de interseccedilatildeo

A Figura 14 mostra o processo de encontrar os surfels que caem nesta

curva de interseccedilatildeo Inicialmente satildeo encontrados todos os pontos de Q1 e Q2

que estatildeo proacuteximos agrave curva de interseccedilatildeo por meio da funccedilatildeo de distacircncia do

operador de projeccedilatildeo MLS Em seguida procura-se todos os pares mais

proacuteximos (q1 є Q1 q2 є Q2 ) e computa-se o ponto q na curva de interseccedilatildeo da

seguinte forma (veja a Figura 14)Seja r o ponto na linha de interseccedilatildeo dos dois

planos tangentes em q1 e q2 e que estaacute mais proacuteximo a estes dois pontos isto eacute

que minimiza a distacircncia ||r-q1|| + ||r-q2|| r eacute a primeira aproximaccedilatildeo de q e agora

pode ser projetado sobre S1 e S2 para obter dois novos pontos de partida q1rsquo e q2

rsquo

para a iteraccedilatildeo Este procedimento pode ser repetido iterativamente ateacute que os

pontos q1 e q2 convirjam ao ponto q na curva de interseccedilatildeo Normalmente este

processo requer menos de trecircs iteraccedilotildees

Operaccedilotildees Booleanas com Pontos 43

(a) (b)

(c)

Figura 14 (a) Suponhamos a reta que eacute a interseccedilatildeo do plano tangente a S1 em q1 e o

plano tangente a S2 em q2 O ponto r eacute o ponto desta reta que estaacute mais proacuteximo a q1 e

q2 (b) r eacute projetado sobre S1 e S2 obtendo-se q1acute e q2acute dois novos pontos de partida

para nova iteraccedilatildeo (c) A nova iteraccedilatildeo gera r que eacute uma aproximaccedilatildeo melhor de q

Pauly faz o tratamento de arestas vivas em tempo de renderizaccedilatildeo Ele

faz uma alteraccedilatildeo no renderizador Marca os surfels de interseccedilatildeo e ao

renderizaacute-los satildeo cortados para gerar uma aresta viva

44 Validade da Regra 2

Os dois meacutetodos analisados nesta dissertaccedilatildeo utilizam a seguinte regra

para a classificaccedilatildeo de um surfel

Regra 2 dado um volume V determinado por uma superfiacutecie de contorno

S uma amostragem P da superfiacutecie S um ponto x qualquer um ponto p є P que

eacute a amostra mais proacutexima a x um vetor ny normal a S em p e orientado para

fora de S temos que (x ndash p) np gt 0 x notinV

Em [16] eacute colocado que esta regra eacute tirada da seguinte propriedade da

geometria diferencial (aqui chamada Propriedade 1)

Propriedade 1 Dado um volume V determinado por uma superfiacutecie de

contorno S contiacutenua e duplamente diferenciaacutevel um ponto x qualquer um ponto

Operaccedilotildees Booleanas com Pontos 44

y є S que eacute o ponto de S mais proacuteximo a x um vetor ny normal a S em y e

orientado para fora de S temos que (x ndash y) ny gt 0 x notinV

A Figura 15 ilustra esta propriedade

Figura 15 Para verificar se o ponto x estaacute fora de um contorno C encontra-se o ponto y

de C Se o produto interno entre a normal em y e o vetor que liga y a x for maior que

zero entatildeo x estaacute fora de C senatildeo estaacute dentro de C

Pauly assume que tendo uma amostragem P da superfiacutecie S podemos

usar a Propriedade 1 substituindo y por p o surfel mais proacuteximo ao ponto x (x ndash

p) np gt 0 x notinV (Regra 2) Esta amostragem P em seu trabalho eacute

(aproximadamente) uma ldquoamostragem adequadardquo Tambeacutem seu tratamento de

interseccedilatildeo cria uma aproximaccedilatildeo dela (seccedilatildeo 43) Empiricamente a

ldquodiscretizaccedilatildeo da propriedaderdquo eacute vaacutelida a partir desta suposiccedilatildeo Mas isso natildeo foi

demonstrado teoricamente em seu trabalho

Pauly coloca em [16] que natildeo existe ainda uma teoria matemaacutetica rigorosa

de amostragem anaacuteloga a teoria de Fourier para superfiacutecies discretas

A melhor aproximaccedilatildeo teoacuterica para esta aacuterea eacute o uso do Eixo Medial que

foi colocado em [10] Vamos descrever este trabalho brevemente nesta seccedilatildeo

Este trabalho apresenta um algoritmo de reconstruccedilatildeo de superfiacutecie que parte de

uma amostragem adequada (abaixo definida) de pontos e obteacutem uma malha

que eacute topologicamente equivalente agrave superfiacutecie do objeto e agrave medida que a

densidade da amostragem cresce a saiacuteda converge para esta superfiacutecie

Para definir amostragem adequada o trabalho parte do conceito de Eixo

Medial

Operaccedilotildees Booleanas com Pontos 45

ldquoEixo Medialrdquo de uma superfiacutecie 2D posicionada no R3 eacute o conjunto

(fechado) de pontos pi para os quais buscando-se o ponto da superfiacutecie que

estaacute mais proacuteximo a pi mais de um ponto pertencentes a esta superfiacutecie satildeo

encontrados A Figura 16 abaixo ilustra o Eixo Medial em 2D

Figura 16 [10] As curvas de cor mais clara satildeo o Eixo Medial da curva em preto

Em duas dimensotildees os veacutertices de Voronoi de uma amostragem densa

aproximam o ldquoEixo Medialrdquo da amostragem (mas esta propriedade natildeo se

estende a 3D) A Figura 17 mostra o Eixo Medial em 3D

Figura 17 [10] Em 3D geralmente o Eixo Medial eacute uma superfiacutecie 2D (em cor mais

clara) Aqui o quadrado eacute o Eixo Medial da superfiacutecie transparente que o contorna

Podemos definir agora a amostragem adequada da seguinte forma

Supondo uma superfiacutecie suave que quer dizer uma 2-manifold duplamente

diferenciaacutevel posicionada no R3 uma ldquoamostragem adequadardquo desta superfiacutecie eacute

aquela na qual a densidade da amostragem eacute (pelo menos) inversamente

proporcional agrave distacircncia ao ldquoEixo Medialrdquo A Figura 18 mostra uma amostragem

adequada

Operaccedilotildees Booleanas com Pontos 46

Figura 18 [10] A figura mostra o diagrama de Voronoi de uma amostragem de pontos S

Da mesma forma que o a amostragem aproxima a curva os veacutertices de Voronoi

aproximam o Eixo Medial

Na praacutetica na reconstruccedilatildeo da superfiacutecie uma aproximaccedilatildeo deste ldquoEixo

Medialrdquo eacute computada (devido agrave dificuldade de computaacute-lo exatamente e em

alguns casos ateacute impossibilidade)

Melhorias Propostas 47

5 Melhorias Propostas

No capiacutetulo 4 apresentamos dois meacutetodos que realizam operaccedilotildees

booleanas em modelos por pontos o meacutetodo de Adams e Dutreacute [2] e o meacutetodo

de Pauly[3] Para esta dissertaccedilatildeo usamos o meacutetodo de Adams e Dutreacute [2] e

propomos as seguintes melhorias

- Alteramos o momento em que eacute feita a classificaccedilatildeo da octree Fazemos

esta classificaccedilatildeo durante a sua criaccedilatildeo Os noacutes filhos de um noacute pai P qualquer

satildeo classificados logo apoacutes a criaccedilatildeo de todos estes filhos de P

independentemente do restante da octree ter sido criada Isso pode ser feito

porque a octree eacute construiacuteda na ordem raiz-esquerda-direita (preorder

traversal) e portanto apoacutes todos os filhos de um noacute pai serem criados a parte

necessaacuteria da octree para a classificaccedilatildeo destes filhos jaacute estaacute criada

- A classificaccedilatildeo da octree eacute otimizada classificando-se os cantos dos seus

noacutes como dentro ou fora do modelo Na classificaccedilatildeo de um noacute n1 a partir de seu

vizinho n2 se os cantos que satildeo comuns a n1 e n2 tiverem a mesma

classificaccedilatildeo esta seraacute dada ao noacute Assim diminuiacutemos o nuacutemero de pesquisas

pelo surfel mais proacuteximo que eacute a parte criacutetica da classificaccedilatildeo dos noacutes da octree

em termos de tempo de processamento

- Acrescentamos um valor miacutenimo (maior que zero) para o nuacutemero de

surfels contidos em um noacute que eacute uma das condiccedilotildees de parada na criaccedilatildeo da

octree Verificamos que desta forma diminui-se a chance de erro na classificaccedilatildeo

de partes criacuteticas como ldquoarestas vivasrdquo

Uma comparaccedilatildeo entre a nossa implementaccedilatildeo e a de Pauly tambeacutem seraacute

feita no capiacutetulo 6

51 Descriccedilatildeo do algoritmo

O algoritmo implementado para esta dissertaccedilatildeo baseado no meacutetodo de

Adams e Dutreacute [2] pode ser dividido nas seguintes partes Criaccedilatildeo e

classificaccedilatildeo de uma octree para cada modelo Teste DentroFora Criaccedilatildeo do

modelo resultado Natildeo foi implementado tratamento especial algum de

interseccedilatildeo para o nosso plugin As proacuteximas seccedilotildees apresentam estas partes

Melhorias Propostas 48

511 Criaccedilatildeo e classificaccedilatildeo de uma octree para cada modelo

As ideacuteias do algoritmo satildeo aqui ilustradas em 2D mas a extensatildeo delas

para 3D eacute feita facilmente

Para cada modelo a octree eacute criada e classificada da seguinte forma

Figura 19-Quadtree classificada Os noacutes mais escuros estatildeo fora do modelo os mais claros dentro e os em tom intermediaacuterio satildeo noacutes de contorno

Gera-se uma ldquocaixa envolventerdquo do modelo contendo todos os surfels e

cria-se o noacute raiz da octree que corresponde a esta ldquocaixa envolventerdquo Este noacute

raiz eacute subdividido em oito filhos e seus surfels satildeo distribuiacutedos entre eles Ao

inveacutes de testarmos os valores de xy e z para cada surfel a fim de determinar

para qual filho ele iraacute utilizamos listas auxiliares Primeiro os surfels satildeo

subdivididos em dois grupos pelos valores de x e armazenados em uma lista

auxiliar Em seguida cada uma das listas eacute subdividida pelo valor de y e as

quatro listas obtidas seratildeo subdivididas pelo valor de z Ao final teremos 8 listas

de surfels cada uma delas pertencente a um filho

Cada noacute seraacute entatildeo novamente subdividido enquanto contiver um nuacutemero

de surfels gt nmin (valor preacute-definido) ou enquanto a profundidade da aacutervore lt pmax

(valor preacute-definido) Na figura 19 pmax = 3 e nmin = 3

Melhorias Propostas 49

Figura 20-O noacute cheio eacute dividido em trecircs partes agrave esquerda a regiatildeo estaacute dentro do modelo agrave direita estaacute fora e entre as duas linhas que dividem o noacute estaacute a regiatildeo que conteacutem os surfels

Os noacutes cheios recebem um tratamento especial Eles satildeo subdivididos em

trecircs partes da seguinte forma uma que estaacute fora do modelo outra que estaacute

dentro e uma que conteacutem os surfels Esta subdivisatildeo eacute feita por meio da criaccedilatildeo

de dois planos paralelos que dividem o noacute Para determinar estes planos

calcula-se o vetor nm igual agrave meacutedia das normais dos surfels do noacute nm = sum ns

sum ns onde ns eacute a normal de cada surfel do noacute Em seguida encontra-se o

surfel com maior produto interno entre a sua normal e a normal meacutedia

d1=Max(nm ٠ ns) Este surfel juntamente com a normal meacutedia define um dos

planos Encontra-se tambeacutem o surfel com menor produto interno entre a sua

normal e a normal meacutedia d2=Min (nm ٠ ns) Este surfel juntamente com a normal

meacutedia define o outro plano (Figura 20) Se o noacute conteacutem surfels de superfiacutecies de

orientaccedilotildees diferentes ele natildeo seraacute subdividido ou seja os planos coincidiratildeo

com os planos que delimitam o proacuteprio noacute Este teste foi implementado da

seguinte forma escolhe-se um surfel qualquer do noacute Calcula-se o produto

interno entre a normal deste surfel e as outras normais dos outros surfels deste

noacute Se algum produto interno for menor que zero este noacute natildeo seraacute subdividido

Apoacutes a etapa de subdivisatildeo classificam-se os oito cantos deste noacute como

dentro ou fora do modelo por meio da classificaccedilatildeo de um ponto que

descreveremos na sub-seccedilatildeo 5111

Melhorias Propostas 50

a b

c d

Figura 21-O noacute a eacute classificado pelo noacute c o noacute d tambeacutem eacute classificado pelo noacute c a classificaccedilatildeo do noacute a eacute propagada para o noacute b

Jaacute os noacutes vazios da octree seratildeo classificados como ldquodentrordquo ou ldquoforardquo do

modelo da seguinte forma cada noacute folha vazio eacute classificado a partir de um de

seus irmatildeos vizinhos adjacentes Se ele possuir um vizinho adjacente cheio ele

seraacute classificado por este vizinho se natildeo possuir os vizinhos adjacentes seratildeo

classificados primeiro e ele teraacute esta mesma classificaccedilatildeo (Figura 21) Como tem

que existir sempre pelo menos um noacute cheio entre os filhos de um noacute pai entatildeo

sempre esta classificaccedilatildeo poderaacute ser feita Com a classificaccedilatildeo de todos os

filhos tem-se tambeacutem a classificaccedilatildeo dos cantos do noacute pai

Mf03c003fmx a b

Figura 22-Os cantos a e b do noacute cheio possuem a mesma classificaccedilatildeo fora do modelo Esta classificaccedilatildeo foi dada ao noacute vazio adjacente

Melhorias Propostas 51

Para classificar um noacute vazio por meio de um noacute cheio verificam-se os

cantos comuns destes dois noacutes se todos os cantos tiverem a mesma

classificaccedilatildeo esta seraacute dada ao noacute vazio (Figura 22) Se houver classificaccedilotildees

diferentes escolhe-se o surfel do noacute cheio mais proacuteximo ao noacute vazio faz-se o

produto interno entre a normal deste surfel e o vetor que liga o centro do noacute

cheio ao centro do noacute vazio (ou o vetor que liga o surfel ao centro do noacute vazio)

Se o produto interno for maior que zero o noacute eacute classificado como ldquoforardquo senatildeo eacute

classificado como ldquodentrordquo Para encontrar o surfel (pertencente a um noacute cheio)

mais proacuteximo ao noacute vazio existem dois casos

- O noacute cheio eacute folha percorre-se toda a lista de surfels e escolhe o surfel

mais proacuteximo da fronteira entre o noacute cheio e o vazio

- O noacute cheio natildeo eacute um noacute folha percorrem-se os filhos do noacute cheio ou seja

esta pesquisa eacute feita descendo na octree a partir do noacute cheio procurando o

surfel mais proacuteximo agrave fronteira do pai com o noacute vazio a ser classificado

Classificando o centro do noacute vazio todo o noacute deve ter a mesma

classificaccedilatildeo pois este noacute natildeo conteacutem surfels Para encontrar o surfel do noacute

vazio mais proacuteximo da fronteira entre o noacute cheio e o vazio basta testar o valor da

coordenada se a fronteira eacute o lado direito do noacute cheio escolhe-se o surfel com

maior coordenada lsquoxrsquo se eacute o lado esquerdo escolhe-se o surfel com menor lsquoxrsquo

se lado superior surfel com maior lsquoyrsquo etc A seguir apresentamos a classificaccedilatildeo

de um ponto qualquer pertencente a um noacute cheio

Figura 23- Quadtree classificada

Melhorias Propostas 52

5111 Classificaccedilatildeo de um ponto de um noacute cheio

Figura 24 [2] A normal n eacute a normal meacutedia e os surfels s1 e s2 juntamente com a normal

n definem as retas que dividem o noacute O ponto a estaacute fora do modelo e o ponto b estaacute

dentro do modelo

Para um ponto localizado dentro do noacute faz-se o seguinte teste se o noacute foi

dividido testa-se de acordo com a divisatildeo do noacute se o ponto estaacute na parte do noacute

que estaacute dentro do modelo ele eacute classificado como ldquodentrordquo se o ponto estaacute na

parte que estaacute fora do modelo ele eacute classificado como ldquoforardquo (Figura 24) se o

ponto estaacute na parte que conteacutem os surfels encontra-se o surfel s pertencente ao

noacute mais proacuteximo do ponto e o classifica de acordo com s seja ns a normal em s

cs a coordenada de s cp a coordenada do ponto Se (cp - cs )٠ ns gt 0 o ponto

seraacute classificado como ldquoforardquo Senatildeo seraacute classificado como ldquodentrordquo

Se o noacute natildeo foi dividido em planos esta classificaccedilatildeo a partir do surfel

mais proacuteximo seraacute sempre feita

512 Teste DentroFora

Melhorias Propostas 53

Figura 25-Duas circunferecircncias e suas quadtrees correspondentes

O Teste DentroFora classifica os surfels de um modelo como dentro ou

fora de outro modelo ou na sua interseccedilatildeo Este teste foi aqui implementado

exatamente como foi proposto em Adams e Dutreacute [2] exceto que natildeo foi

implementado o meacutetodo TINN - Triangle Inequality Nearest Neighbour [19]

Cada octree eacute percorrida verificando-se se os seus noacutes ou surfels estatildeo dentro

fora ou no contorno do outro modelo (Figura 25) Sejam A e B duas octrees e

queremos classificar a octree A As duas octrees (AB) satildeo percorridas partindo

da raiz

Para cada noacute de A existem quatro casos (Figura 26) Para testar estas

situaccedilotildees os boxes dos noacutes satildeo aumentados de rmax o raio do maior surfel do

modelo Isto eacute feito para compensar o fato de que o surfel natildeo eacute apenas um

ponto mas sim considerado como um disco

Os quatro casos satildeo

Se o noacute de A natildeo intersecta B entatildeo todos os surfels deste noacute satildeo

classificados como fora

Se o noacute de A intersecta apenas noacutes de B que estatildeo fora do modelo

todos os surfels deste noacute satildeo fora

Se o noacute de A intersecta apenas noacutes de B que estatildeo dentro do modelo

todos os surfels deste noacute satildeo dentro

Melhorias Propostas 54

Se o noacute de A intersecta noacutes de B que estatildeo dentro e tambeacutem noacutes de B

que estatildeo fora testa-se se este noacute de A eacute ou natildeo folha Se natildeo for folha

percorre-se os filhos deste noacute de A ateacute encontrar um noacute folha cheio que

intersecta B Para cada surfel sa deste noacute folha de A encontra-se o surfel de B

mais proacuteximo e classifica-se a coordenada de sa da forma apresentada na seccedilatildeo

5111 Seja sb o surfel usado na classificaccedilatildeo de sa Se os discos de sb e sa

se intersectam sa eacute classificado como ldquointerseccedilatildeordquo

(a) (b)

(c) (d)

Figura 26- a modelos natildeo se intersectam b modelo intersecta noacutes fora c modelo intersecta apenas noacutes dentro d modelo intersecta noacutes dentro e noacutes fora

513 Criaccedilatildeo do modelo resultado

Um novo modelo eacute criado com os seguintes surfels (de acordo com a

operaccedilatildeo booleana escolhida pelo usuaacuterio - veja Regra 1 da seccedilatildeo 41)

Uniatildeo - surfels de A que estatildeo fora de B + surfels de B que estatildeo fora de A

Melhorias Propostas 55

Interseccedilatildeo - surfels de A que estatildeo dentro de B + surfels de B que estatildeo

dentro de A

Diferenccedila A-B - surfels de A que estatildeo fora de B + surfels de B que estatildeo

dentro de A (com orientaccedilatildeo invertida)

Como natildeo foi implementado tratamento especial algum de interseccedilatildeo para

o nosso plugin os surfels que se intersectam satildeo mantidos no modelo resultado

final sem modificaccedilotildees

Descrito o algoritmo vejamos a seguir a sua implementaccedilatildeo

52 Implementaccedilatildeo

Este algoritmo foi implementado na forma de um plugin para o software

PointShop 3D [11] Este plugin foi desenvolvido na linguagem C e no sistema

operacional Windows

A escolha deste tipo de implementaccedilatildeo permitiu-nos usar o software

PointShop para os testes do algoritmo Estes testes foram feitos com os modelos

disponibilizados para o PointShop [11] Nesta seccedilatildeo apresentaremos o software

PointShop e as principais estruturas de dados usadas em nosso plugin

O Pointshop eacute um software aberto com seu coacutedigo disponiacutevel e preparado

para trabalhar com plugins Eacute um software de ediccedilatildeo de modelos 3D por pontos

Ele permite aleacutem de visualizar o modelo alterar as suas caracteriacutesticas como

cor brilho e fazer mapeamento de textura iluminaccedilatildeo filtragem (Figura 27)

Melhorias Propostas 56

Figura 27-Software PointShop 3D com dois modelos carregados na sua cena

Aleacutem disso pode-se criar uma cena com vaacuterios modelos e visualizaacute-los de

qualquer ponto de vista Implementa o virtual trackball para rotacionaacute-los e

transladaacute-los Usa uma iluminaccedilatildeo simples direcional A sua arquitetura eacute

extensiacutevel permite que o usuaacuterio adicione seus proacuteprios componentes ao

sistema Possui trecircs tipos de componentes

ldquoToolsrdquo fornece funcionalidades para ediccedilatildeo interativa de superfiacutecie Satildeo

disponibilizados na ldquotoolbarrdquo

Plugins fornece funcionalidades para processar em um soacute passo

modelos ou partes deles selecionadas Satildeo disponibilizados no menu ldquoPluginsrdquo

Renderes fornece funcionalidades de display para os modelos

Para esta dissertaccedilatildeo foi escolhida a construccedilatildeo do componente Plugin

por adequar-se agrave nossa proposta e ser a mais simples de ser construiacuteda O

PointShop [11] jaacute conteacutem uma tool que executa operaccedilotildees booleanas e

deformaccedilatildeo free-form sobre os modelos carregados na cena usando o meacutetodo

de Pauly [3] apresentado no capiacutetulo 4 O nosso plugin Operaccedilotildees Booleanas

implementa o algoritmo descrito na seccedilatildeo anterior baseado na proposta de

Melhorias Propostas 57

Adams e Dutreacute [2] Uma comparaccedilatildeo entre o nosso plugin e a tool de Pauly [3] eacute

feita no capiacutetulo 6

Figura 28-Menu do PointShop com o plugin e as opccedilotildees para operaccedilotildees booleanas

Para se executar o plugin o usuaacuterio precisa carregar dois modelos na

cena do PointShop acionar o plugin informando a operaccedilatildeo que seraacute executada

O plugin executaraacute o algoritmo acima proposto e carregaraacute o resultado na cena

do Pointshop retirando os modelos anteriores

521 Estruturas de Dados

Como vimos o software PointShop [11] trabalha com modelos por pontos

Um modelo deste software descrito na seccedilatildeo 42 conteacutem todas as informaccedilotildees

que o algoritmo proposto em Bart [2] necessita Abaixo relacionamos as

Melhorias Propostas 58

principais estruturas de dados do PointShop usadas no plugin e as principais

estruturas de dados do nosso plugin

As principais classes do PointShop usadas no plugin satildeo

Classe Scene

Classe Objects

Classe SurfelColections

Classe Surfel

Classe StatusBar

Classe Transformer

A hierarquia de dados eacute a seguinte a Scene conteacutem vaacuterios Objects os

quais conteacutem SurfelColections Cada SurfelColections conteacutem Surfels que

suportam uma ou mais propriedades tais como cor difusa cor especular

Classe Scene Classe que representa uma cena que conteacutem modelos

Classe Object Um modelo eacute representado pela classe Object que

conteacutem uma SurfelCollection e as matrizes de transformaccedilatildeo para rotaccedilatildeo

escala e translaccedilatildeo Cada Object eacute identificado pelo seu nome que eacute uacutenico na

Scene O meacutetodo getUniqueName retorna um nome uacutenico Cada Object tem sua

proacutepria matriz de transformaccedilatildeo que pode ser modificada com setRotation

rotate setPosition translate setScale e scale Objects podem ser copiados com

copy Objects consiste em um conjunto de surfels os quais podem ser

recuperados pela getSurfelCollection O Object pode ser ativado com

setActiveObject e recuperado com getActiveObject

Objects podem ser adicionados ou removidos com addObject e

removeObject Os Objects podem ser obtidos pela getFirstObject e

getNextObject

Classe SurfelCollection representa o conjunto de surfels de um modelo

Cada surfelcollection consiste em um conjunto de surfels (SurfelInterface) de

tamanho obtido por getNofSurfels Os surfels podem ser recuperados com

getFirstSurfel getCurrentSurfel e getNextSurfel

A SurfelCollection conteacutem um PropertyDescriptor e uma SurfelList

A SurfelList eacute uma lista duplamente encadeada de surfels Possui os

atributos firstSurfel lastSurfel currentSurfel que satildeo ponteiros para uma

SurfelInterface nSurfels que eacute o nuacutemero de Surfels

A SurfelInterface define a API para os surfels que satildeo os menores

elementos que compotildeem um Object Podem ser considerados como pontos com

uma normal que define a orientaccedilatildeo do ciacuterculo (ou elipse) que seraacute desenhado

Melhorias Propostas 59

tatildeo logo o surfel seja renderizado Tem como atributos dois ponteiros (next e

prev) para SurfelInterface

PropertyDescriptor consiste em ateacute 32 valores descrevendo quais as

propriedades a SurfelInterface suporta

Classe Surfel classe que representa o surfel

Classe StatusBar classe que imprime mensagens na tela Os plugins

podem mandar mensagens para o usuaacuterio pela StatusBar

Mensagens texto podem ser impressas com showMessage O progresso

de uma operaccedilatildeo pode ser indicado com setProgress ou resetProgress

Classe Transformer representa a transformaccedilatildeo entre sistemas de

coordenadas Esta classe fornece meacutetodos para transformar pontos e vetores

entre os diferentes sistemas de coordenadas do Pointshop

A seguir apresentamos as principais estruturas de dados do plugin

Operaccedilotildees Booleanas

As principais estruturas de dados do plugin satildeo boundingbox tree no

lista_surfel surfel

Boundingbox conteacutem dois pontos 3D que definem uma caixa que conteacutem

o modelo um ponto com menores coordenadas xy e z e outro ponto com

maiores xyz

Tree representa a octree do modelo Cada registro conteacutem um ponteiro

para um noacute e oito ponteiros para as 8 octrees filhas

No representa um noacute da octree Conteacutem os seguintes dados

- localizaccedilatildeo do noacute que eacute o canto inferior esquerdo do noacute

- lista_surfel (preenchida apenas para noacutes folha cheios)

- quantidade de surfels do noacute

- classificaccedilatildeo do noacute como dentro fora ou contorno

- classificaccedilatildeo do noacute em relaccedilatildeo a outro modelo

- indica se o noacute eacute folha ou natildeo

- vetor que eacute a meacutedia das normais dos surfels do noacute

- ponto que eacute a meacutedia das localizaccedilotildees dos surfels do noacute

- surfel que tem (entre todos os surfels do noacute) o maior produto interno

entre a sua normal e a normal meacutedia

- surfel que tem (entre todos os surfels do noacute) o menor produto interno

entre a sua normal e a normal meacutedia

- produto interno maacuteximo e miacutenimo entre as normais dos surfels do noacute e a

normal meacutedia deste noacute

Melhorias Propostas 60

- indica se o noacute conteacutem surfels com normais em sentido oposto (produto

interno entre elas eacute menor que zero)

- classificaccedilatildeo dos oito cantos do noacute

lista_surfels lista em que cada registro conteacutem um apontador para um

surfel e um apontador para o proacuteximo registro

surfel representa o surfel da octree Conteacutem a classificaccedilatildeo em relaccedilatildeo a

outro modelo e um ponteiro para o surfel do Poinshop

Resultados 61

6 Resultados

Neste capiacutetulo apresentamos os testes realizados com o plugin para o

PointShop implementado para esta dissertaccedilatildeo a comparaccedilatildeo deste plugin com

o plugin de Pauly [3] e a comparaccedilatildeo entre o meacutetodo de Adams e Dutreacute [2] e o

meacutetodo de Pauly [3]

61 Testes

Os testes foram feitos em um PC x86 Family 6 261600 KB de RAM sem

placa graacutefica sistema operacional Windows 2000 O plugin foi implementado na

linguagem C

Os modelos usados para os testes satildeo modelos disponibilizados no

PointShop [11] Vale lembrar que o meacutetodo implementado em nosso plugin eacute

restrito a modelos soacutelidos e portanto foram usados apenas estes modelos

soacutelidos para os testes

O modelo na Figura 29 que eacute um dos modelos disponibilizados no

PointShop [11] foi usado para mostrar o resultado das operaccedilotildees realizadas

pelo plugin implementado nesta dissertaccedilatildeo O modelo Igea eacute um modelo soacutelido

que conteacutem 134345 surfels

Resultados 62

Figura 29-Modelo do PointShop Igea

Para realizar as operaccedilotildees este modelo foi carregado na cena do

PointShop duas vezes e um deles colorido de vermelho As Figuras 30 31 32

mostram o resultado da operaccedilatildeo de uniatildeo interseccedilatildeo e diferenccedila

respectivamente Os nuacutemeros de surfels dos modelos resultantes satildeo mostrados

na Tabela 2

Resultados 63

Figura 30-Resultado da uniatildeo de duas Igeas

Figura 31-Resultado da interseccedilatildeo de duas Igeas

Resultados 64

Figura 32-Resultado da diferenccedila entre duas Igeas

Tabela 2-Nuacutemero de surfels dos modelos resultantes

Observamos que o nuacutemero de surfels dos modelos resultantes estaacute

coerente com as figuras dos seus modelos

Para avaliar o tempo de processamento das operaccedilotildees foram realizados

vaacuterios testes com o objetivo de obter uma meacutedia dos tempos de realizaccedilatildeo de

cada operaccedilatildeo Tambeacutem foram armazenados os tempos da criaccedilatildeo das duas

octrees e da classificaccedilatildeo de todos os surfels dos dois objetos (como dentro ou

fora do outro modelo) Estes testes foram feitos usando o modelo Igea A meacutedia

dos tempos de processamento foi calculada e os resultados satildeo mostrados na

Tabela 3 Verificamos que o maior tempo gasto eacute para criaccedilatildeo das octrees

Verificamos tambeacutem que este resultado apresentado eacute similar ao resultado

verificado empiricamente com o plugin de Pauly [3] Os tempos gastos para

realizar as operaccedilotildees satildeo similares e o maior tempo gasto no plugin de Pauly

tambeacutem eacute para inicializaccedilatildeo de suas estruturas de dados que incluem a kd-tree

Operaccedilatildeo Nuacutemero de surfels do modelo resultado

Uniatildeo 189715

Interseccedilatildeo 72225

Diferenccedila 134552

Resultados 65

Operaccedilatildeo Criaccedilatildeo das

Octrees (seg)

Classificaccedilatildeo

(seg)

Criaccedilatildeo do

resultado (seg)

Total (seg)

Uniatildeo 39375 1324 18925 7154

Interseccedilatildeo 38585 1585 09547 63982

Diferenccedila 399875 1504 1729 729475

Tabela 3- Meacutedia dos tempos de processamento para as operaccedilotildees com duas Igeas

Com o objetivo de expor melhor os resultados deste trabalho

apresentamos abaixo mais um teste das operaccedilotildees booleanas usando o nosso

plugin Os modelos usados para este segundo teste satildeo o Max Planck e o Male

ambos modelos soacutelidos disponibilizados no PointShop Estes modelos satildeo

mostrados nas figura 33 e 34

O primeiro Max Planck conteacutem 52809 surfels

Figura 33-Modelo do PointShop MaxPlanck

O segundo modelo abaixo Male conteacutem 148138 surfels

Resultados 66

Figura 34-Modelo do PointShop Male

As Figuras 353637 mostram o resultado da operaccedilatildeo de uniatildeo interseccedilatildeo

e diferenccedila respectivamente usando os dois modelos acima Podemos observar

pela figura 35 que o resultado da operaccedilatildeo de diferenccedila neste caso gerou um

modelo resultado com trecircs partes desconexas Os nuacutemeros de surfels de cada

modelo resultado satildeo mostrados na Tabela 5

Figura 35- Resultado da Uniatildeo do modelo Male com MaxPlanck

Resultados 67

Figura 36-Resultado da interseccedilatildeo do modelo Male com o MaxPlanck

Figura 37-Resultado da diferenccedila do modelo Male do modelo MaxPlanck

As meacutedias de tempos de processamento foram calculadas da mesma

forma que o primeiro teste com o modelo Igea acima apresentado Os

resultados satildeo mostrados na Tabela 4 Podemos observar que este teste

Resultados 68

apresenta tempos um pouco menores que o teste com o modelo Igea Isto se

deve ao fato de que o modelo MaxPlanck ser significativamente menor que o

modelo Igea MaxPlanck possui 52809 surfels e Igea conteacutem 134345 surfels

Operaccedilatildeo Criaccedilatildeo das

Octrees (seg)

Classificaccedilatildeo

(seg)

Criaccedilatildeo do

resultado (seg)

Total

(seg)

Uniatildeo 3012 1254 102 5285

Interseccedilatildeo 2985 0901 0861 4747

Diferenccedila 2965 0911 0791 4667

Tabela 4-Tempo de processamento das operaccedilotildees com os modelos MaxPlanck e Male

Operaccedilatildeo Nuacutemero de surfels do resultado

Uniatildeo 126532

Interseccedilatildeo 88414

Diferenccedila 77635

Tabela 5-Nuacutemero de surfels dos modelos resultados das operaccedilotildees com os modelos MaxPlanck e Male

Em seguida apresentaremos uma comparaccedilatildeo entre o nosso plugin e o

plugin de Pauly[3] e tambeacutem uma comparaccedilatildeo entre o meacutetodo de Adams e Dutreacute

[2] e o meacutetodo de Pauly [3]

62 Comparaccedilatildeo entre os dois meacutetodos que realizam operaccedilotildees booleanas

A comparaccedilatildeo entre os meacutetodos de Pauly[3] e de Adams e Dutreacute foi feita

em termos de tempo de processamento e em termos conceituais Em termos de

tempo de processamento comparamos o plugin de Pauly[3] com o nosso plugin

Em termos de tempo de processamento verifica-se empiricamente que os

dois meacutetodos apresentam tempos bastante similares Entretanto o tempo de

processamento do algoritmo aqui implementado ainda pode ser melhorado com

Resultados 69

o uso do meacutetodo TINN [19] que foi proposto em Adams[2] - para otimizar a

pesquisa do surfel mais proacuteximo a um ponto que estaacute localizado na regiatildeo de um

noacute que conteacutem surfels - veja seccedilatildeo 42 O uso deste meacutetodo natildeo foi

implementado para este trabalho e a sua implementaccedilatildeo melhoraria o tempo de

resposta do algoritmo Aleacutem disso o trabalho de Sara F Frisken [12] citado no

capiacutetulo 2 apresenta uma otimizaccedilatildeo no uso de octrees que pode ser

incorporada no algoritmo implementado neste trabalho

Em termos conceituais vamos fazer a comparaccedilatildeo do uso do que

chamamos aqui de Regra 2 do tratamento de interseccedilatildeo e do tratamento de

ldquoarestas vivasrdquo

Como vimos na seccedilatildeo 41 tanto o algoritmo implementado nesta

dissertaccedilatildeo baseado no trabalho de Adams e Dutreacute como o meacutetodo de Pauly

[3] parte do que chamamos aqui de Regra 2 para realizar operaccedilotildees booleanas

com pontos Mas cada um destes meacutetodos daacute um tratamento diferente para o

uso desta regra

O meacutetodo de Pauly usa a Regra 2 para classificaccedilatildeo de cada ponto ou de

cada surfel Para classificar um surfel de B sb como dentro ou fora de A eacute

encontrado o surfel de A sa mais proacuteximo a sb e sb eacute classificado a partir de sa

Para encontrar sa Pauly utiliza uma kd-tree Como esta pesquisa para encontrar

sa eacute cara (mesmo usando uma kd-tree) Pauly utiliza uma esfera que conteacutem

pontos com a mesma classificaccedilatildeo (seccedilatildeo 432) e diminui em 90 este nuacutemero

de pesquisas Pauly utiliza tambeacutem a representaccedilatildeo impliacutecita MLS (Moving Least

Squares) para casos em que a Regra 2 poderia falhar e para tratamento de

interseccedilotildees Entretanto o nuacutemero destes casos em que a Regra 2 poderia falhar

eacute muito pequeno E a representaccedilatildeo MLS natildeo eacute uma estrutura simples de ser

implementada Portanto natildeo encontramos vantagens em usar MLS para estes

casos O meacutetodo de Adams e Dutreacute natildeo trata estes casos e na praacutetica

apresenta resultados bastante satisfatoacuterios como foi mostrado Portanto

consideramos que valeria a pena fazer algum tratamento especial para estes

casos se fosse um procedimento simples Para a execuccedilatildeo do algoritmo de

Pauly o uso de MLS natildeo interfere significativamente porque a construccedilatildeo desta

representaccedilatildeo natildeo eacute feita somente para realizar operaccedilotildees booleanas Os testes

empiacutericos que fizemos com o algoritmo de Pauly natildeo incluem a construccedilatildeo desta

representaccedilatildeo

Aparentemente os dois algoritmos satildeo bastante parecidos um usa octrees

e o outro usa kd-tree As duas estruturas de dados satildeo simples e otimizam a

classificaccedilatildeo dos surfels de um modelo como dentro ou fora do outro modelo

Resultados 70

Mas existe uma diferenccedila conceitual entre dois que merece ser destacada O

algoritmo aqui implementado usa a Regra 2 para classificaccedilatildeo dos noacutes de uma

octree e armazena esta octree classificada (ver capiacutetulo 5) Assim na maioria dos

casos natildeo seraacute necessaacuterio encontrar o surfel mais proacuteximo para classificar um

ponto (ou um surfel) como fora ou dentro de um modelo Caso o ponto esteja em

uma aacuterea da octree classificada ele teraacute a classificaccedilatildeo dada agravequela aacuterea A

pesquisa ao surfel mais proacuteximo seraacute feita apenas nos casos em que o ponto a

ser classificado estaacute localizado entre os planos que subdividem um noacute cheio

O uso desta octree classificada levanta uma questatildeo que natildeo foi citada no

trabalho de Adams e Dutreacute que eacute a proximidade desta estrutura (armazenada)

de octree classificada com uma representaccedilatildeo volumeacutetrica do objeto Sendo

assim esta estrutura pode ser aproveitada para outras funccedilotildees aleacutem da

classificaccedilatildeo dos surfels Por exemplo podemos ter uma aproximaccedilatildeo do

volume de uma cena somando os volumes aproximados dos modelos que a

compotildeem Como o enfoque deste trabalho eacute operaccedilatildeo booleana natildeo vamos nos

aprofundar nesta questatildeo

Outra importante diferenccedila entre os dois trabalhos que jaacute foi explicada na

seccedilatildeo 432 eacute que o meacutetodo de Pauly aplica-se a modelos soacutelidos ou natildeo

soacutelidos enquanto que o meacutetodo de Adams e Dutreacute aplica-se somente a modelos

soacutelidos

Quanto ao tratamento de interseccedilatildeo em termos de visualizaccedilatildeo todos os

dois resolvem bem o problema O tratamento de interseccedilatildeo nos dois trabalhos

tambeacutem resolve o problema da validade da Regra 2 (ver seccedilatildeo 44) Entretanto

o tratamento de Adams e Dutreacute natildeo depende da renderizaccedilatildeo sendo portanto

mais portaacutevel Aleacutem disso uma desvantagem do meacutetodo de Pauly eacute o uso da

representaccedilatildeo impliacutecita MLS (ldquoMoving Least Squaresrdquo) do objeto para obter os

pontos exatamente na curva de interseccedilatildeo Esta representaccedilatildeo torna o

tratamento de interseccedilatildeo mais complexo e a vantagem apresentada natildeo eacute tatildeo

significativa para este tratamento de interseccedilatildeo

Conclusatildeo 71

7 Conclusatildeo

Concluiacutemos entatildeo que as escolhas de Adams e Dutreacute por usar uma

octree classificada e pelo tratamento dado agrave interseccedilatildeo satildeo mais abrangentes

que a escolha de Pauly E consideramos que quanto mais abrangente for uma

escolha conceitual mais resultados poderemos tirar dela No caso de Adams e

Dutreacute eles estendem o problema de classificar um ponto para classificar todo o

modelo Como foi citado ele quase fornece uma representaccedilatildeo volumeacutetrica do

modelo Esta aproximada representaccedilatildeo volumeacutetrica pode nos fornecer outras

informaccedilotildees como por exemplo o volume aproximado do modelo

Aleacutem disso o uso da representaccedilatildeo impliacutecita MLS no meacutetodo de Pauly cria

uma complexidade a mais para o meacutetodo sem apresentar vantagens para a

realizaccedilatildeo de operaccedilotildees booleanas que eacute o nosso enfoque

Logo podemos dizer que o meacutetodo de Adams e Dutreacute apresenta as

seguintes vantagens em relaccedilatildeo ao de Pauly

- a estrutura de octree classificada aleacutem de ser usada para classificaccedilatildeo

fornece informaccedilotildees adicionais como volume aproximado do objeto

- o tempo de processamento no meacutetodo de Adams e Dutreacute tende a ser

melhor que no meacutetodo de Pauly se implementadas as melhorias acima citadas e

se colocaacutessemos em consideraccedilatildeo o uso da representaccedilatildeo impliacutecita MLS

(Moving Least Squares)

- o tratamento de interseccedilatildeo de Adams e Dutreacute apresenta a vantagem da

portabilidade ou seja iraacute funcionar independente do algoritmo de renderizaccedilatildeo

utilizado

E as vantagens do meacutetodo de Pauly em relaccedilatildeo ao de Adams e Dutreacute

- a colocaccedilatildeo de surfels exatamente na curva de interseccedilatildeo

- a possibilidade de trabalhar com modelos soacutelidos ou natildeo soacutelidos

E finalizando concluiacutemos que o estudo relatado nesta dissertaccedilatildeo foi

importante por

- fornecer um breve estudo sobre modelagem por pontos uma nova e

promissora aacuterea dentro da computaccedilatildeo graacutefica

Conclusatildeo 72

- por apresentar uma avaliaccedilatildeo dos dois trabalhos existentes sobre

operaccedilotildees booleanas com pontos encontrando as vantagens de cada um

e levantando questotildees que natildeo tinham sido citadas nos trabalhos originais

- por propor e implementar melhorias ao trabalho de Adams e Dutreacute

71 Trabalhos Futuros

Nossa implementaccedilatildeo pode ser ainda evoluiacuteda com as propostas

apresentadas na seccedilatildeo 62 Como observamos o tempo de processamento do

algoritmo aqui implementado ainda pode ser melhorado com o uso do meacutetodo

TINN [19] - que foi proposto em Adams[2] - para otimizar a pesquisa do surfel

mais proacuteximo a um ponto que estaacute localizado na regiatildeo de um noacute que conteacutem

surfels Aleacutem disso o trabalho Simple and Efficient Trasversal Methods for

Quadtrees and Octrees de Sara F Frisken [12] citado no capiacutetulo 2 apresenta

uma otimizaccedilatildeo no uso de octrees Outra proposta para melhorar o tempo de

processamento do algoritmo aqui implementado eacute usar a forma de trabalhar com

octrees apresentada neste trabalho

O trabalho de Adams e Dutreacute [2] eacute aplicado apenas a objetos soacutelidos O

nosso plugin portanto aplica-se somente a este tipo de objeto Jaacute o trabalho de

Pauly[3] eacute aplicado tambeacutem a modelos natildeo soacutelidos Apresentamos como

proposta a um trabalho futuro a extensatildeo do algoritmo aqui implementado para

modelos natildeo soacutelidos O surfel pode conter uma informaccedilatildeo adicional que indica

se ele estaacute delimitando um volume ou natildeo Assim pode-se ter um modelo com

ldquopartes soacutelidasrdquo e ldquopartes natildeo soacutelidasrdquo Por exemplo a uniatildeo de um plano com

uma esfera poderia resultar numa esfera com ldquoabasrdquo (seriam as partes do plano

que estariam fora da esfera) O modelo resultado teria uma parte correspondente

a um espaccedilo 3D (esfera) e outra parte que seria uma superfiacutecie 2D posicionada

no espaccedilo 3D sem delimitar algum volume (abas)

Muitos trabalhos podem ser desenvolvidos aplicando-se o modelo por

pontos em animaccedilatildeo jogos visualizaccedilatildeo de terrenos criaccedilatildeo de protoacutetipos etc

considerando-se a eficiecircncia e simplicidade do modelo E mais especificamente

as operaccedilotildees booleanas com pontos podem ser aplicadas para criaccedilatildeo de

cenaacuterios testes de colisotildees e nestes casos a representaccedilatildeo usando octrees

pode ser mais explorada considerando-se o seu potencial de representaccedilatildeo

volumeacutetrica de um objeto

Referecircncias Bibliograacuteficas 73

8 Referecircncias Bibliograacuteficas

[1] MAumlNTYLAuml M An Introduction to Solid Modeling Computer Science Press 1988

[2] ADAMS B DUTREacute P Interactive Boolean Operations on Surfel-

Bounded Solids Proceedings of SIGGRAPH 2003 San Diego USA 2003

[3] PAULY M KEISER R KOBBELT L GROSS M Shape Modeling

with Point-Sampled Geometry SIGGRAPH 2003 Computer Graphics

Proceedings Annual Conference Series ACM Press ACM SIGGRAPH 2003

[4] LEVOY M WHITTED T The Use of Points as Display Primitives

Technical Report TR 85-022 The University of North Carolina at Chapel Hill

Department of Computer Science 1985

[5] PFISTER H ZWICKER M VAN BAAR J GROSS M 2000 Surfels

Surface Elements as Rendering Primitives SIGGRAPH 2000 pp 335ndash342 New

Orleans LA July 23-28 2000

[6] ZWICKER M PFISTER H VAN BAAR J GROSS M Surface

Splatting SIGGRAPH 2001

[7] PAULY M KOBBELT L GROSS M Multiresolution Modeling of

Point-Sampled Geometry CS Techinical Report 378 September 16 2002

[8] CURLESS B New Methods for Surface Reconstruction from Range Images PhD thesis Stanford University 1997

[9] RUSINKIEWICZ S Real-time Acquisition and Rendering of Large 3D Models PhD thesis Stanford University 2001

Referecircncias Bibliograacuteficas 74

[10] AMENTA N BERN M KAMVYSSELIS M A new Voronoi-Based

Surface Reconstruction Algorithm SIGGRAPH 98 Conference proceedings pp

415-421 New York 1998

[11] ZWICKER M PAULY M KNOLL O GROSS M Pointshop 3D an

Interactive System for Point-Based Surface Editing Proceedings of SIGGRAPH 2002 San Antonio TX July 2002

[12] FRISKEN S PERRY R Simple and Efficient Traversal Methods for

Quadtrees and Octrees Journal of Graphics Tools Vol 7 Issue 3 May 2003

[13] CORREcircA W T OLIVEIRA M M Silva C T Wang J

Modeling and Rendering of Real Environments

Revista de Informaacutetica Teoacuterica e Aplicada (Brazilian Journal of Theoretic and Applied Computing) 9(2)127-156 2002

[14] DAVIS J MARSCHNER S GARR M LEVOY M Filling Holes in

Complex Surfaces Using Volumetric Diffusion First International Symposium on 3D Data Processing Visualization Transmission June 2002

[15] RAumlSAumlNEN J Surface Splatting Theory Extensions and Implementation Masterrsquos Thesis Dept of Computer Science Helsinki

University of Technology May 28 2002

[16] PAULY M Point Primitives for Interactive Modeling and Processing of 3D Geometry PhD thesis Federal Institute of Technology (ETH)

of Zurich 2003

[17] HOPPE H DEROSE T DUCHAMP T MCDONALD J

STUELZLE W Surface Reconstruction from Unorganized Points Computer Graphics 26(2)71ndash78 July 1992

[18] ALEXA M BEHR J COHEN-OR D FLEISHMAN S LEVIN D

SILVA C T Point Set Surfaces IEEE Visualization 2001 pp 21ndash28 October

2001

Referecircncias Bibliograacuteficas 75

[19] GREENSPAN M GODIN G TALBOT J Acceleration of Binning

Nearest Neighbor Methods Proceedings of Vision Interface 2000 pp 337-

344

[20] MENCL R Reconstruction of Surfaces from Unorganized Three-Dimensional Point Clouds Dissertation Dortmund Univ 2001

[21] KRIVANEK J Representing and Rendering Surfaces With Points

httpciteseernjneccomkrivanek03representinghtml Acesso em 30 jul

2003

[22] KRISTJANSSON ET AL Approximate Boolean Operations on Free-

form Solids Proceedings of SIGGRAPH 01 2001

Operaccedilotildees Booleanas com Pontos 33

Figura 8 [2] -Interseccedilatildeo de duas esferas agrave esquerda sem nenhum tratamento de interseccedilatildeo agrave direita apoacutes o tratamento de interseccedilatildeo

Aleacutem disso nem sempre esta interseccedilatildeo forma uma superfiacutecie suave

Esta interseccedilatildeo pode formar uma aresta viva (seccedilatildeo 4223) gerando

problemas tambeacutem para o uso da Regra 2 que eacute vaacutelida apenas para superfiacutecies

suaves Eacute necessaacuterio entatildeo fazer um tratamento desta superfiacutecie de interseccedilatildeo

(formada por surfels originados de diferentes modelos) O tratamento de cada

um dos meacutetodos para este caso seraacute tambeacutem abaixo apresentado

42 Meacutetodo de Adams e Dutreacute

O meacutetodo aplica-se somente a modelos soacutelidos Para determinaccedilatildeo dos

elementos da aqui chamada Regra 1 (seccedilatildeo 41) este meacutetodo utiliza uma octree

[1] que subdivide o espaccedilo do modelo em trecircs fora dentro ou no contorno do

modelo Estes espaccedilos satildeo determinados pela classificaccedilatildeo dos noacutes da octree a

partir da Regra 2 Tambeacutem eacute usado o meacutetodo TINN - Triangle Inequality Nearest

Neighbour [19] - para otimizar a pesquisa dentro do noacute A seguir descrevemos o

modelo usado neste meacutetodo apresentando os dados associados aos pontos o

tipo de distribuiccedilatildeo e o algoritmo que realiza as operaccedilotildees

421 Modelo por Pontos em Adams e Dutreacute

Os surfels neste meacutetodo contecircm as seguintes informaccedilotildees posiccedilatildeo do

surfel xs orientaccedilatildeo do surfel ns e raio de alcance do surfel rs O surfel pode ser

pensado como um disco ortogonal a ns com centro xs e raio rs O raio eacute

escolhido de tal forma que a projeccedilatildeo dos discos no plano da imagem se

sobreponham

Operaccedilotildees Booleanas com Pontos 34

Os objetos representados satildeo soacutelidos A distribuiccedilatildeo dos surfels eacute

uniforme embora o algoritmo natildeo exija esta condiccedilatildeo Para cada soacutelido eacute

definido um rmax = Max rs o raio de alcance do maior surfel pertencente agrave

superfiacutecie do soacutelido Como o raio eacute escolhido de tal forma que a projeccedilatildeo dos

discos no plano da imagem se sobreponham o controle da amostragem eacute

entatildeo ligado agrave renderizaccedilatildeo

422 Algoritmo de Operaccedilotildees Booleanas

Utilizando objetos modelados da forma descrita acima o meacutetodo realiza

operaccedilotildees de uniatildeo interseccedilatildeo e diferenccedila com modelos soacutelidos Supondo dois

modelos soacutelidos S1 e S2 O algoritmo pode ser dividido nas seguintes etapas

Criaccedilatildeo de uma octree para cada modelo Teste Dentro-Fora Tratamento da

interseccedilatildeo Estas etapas satildeo apresentadas nas proacuteximas seccedilotildees

4221 Criaccedilatildeo de uma octree para cada modelo

Eacute criada uma octree [1] para cada modelo A criaccedilatildeo de uma octree eacute feita

da seguinte forma

Gera-se a ldquoCaixa envolventerdquo caixa alinhada com os eixos que conteacutem

todo o modelo A ldquoCaixa envolventerdquo corresponde ao noacute raiz da octree Este noacute

conteacutem inicialmente todos os surfels do modelo Em seguida o noacute raiz eacute

dividido em oito noacutes filhos Os surfels satildeo distribuiacutedos entre estes oito noacutes Cada

um deles caso contenha surfels eacute dividido novamente em 8 filhos e seus surfels

satildeo redistribuiacutedos entre eles Este processo eacute repetido recursivamente enquanto

o nuacutemero de surfels do noacute for maior que zero ou ateacute uma profundidade maacutexima

preacute-definida da octree ser alcanccedilada

Cada noacute da octree deve ser classificado O objetivo desta classificaccedilatildeo eacute

determinar que parte da octree estaacute dentro do modelo e que parte estaacute fora Os

noacutes da octree satildeo entatildeo classificados como ldquodentrordquo ldquoforardquo e ldquocontornordquo

Podemos ilustrar esta classificaccedilatildeo em 2D a Figura 9 mostra uma quadtree

classificada

Operaccedilotildees Booleanas com Pontos 35

Figura 9-Um objeto representado por pontos com suas normais e sua quadtree correspondente classificada os noacutes cinza claro estatildeo dentro do modelo noacutes cinza mais escuro estatildeo fora do modelo e noacutes com cinza intermediaacuterio satildeo noacutes cheios noacutes que conteacutem pontos

O noacutes que conteacutem surfels satildeo classificados como ldquocontornordquo Para

classificar um noacute vazio existem trecircs casos

o noacute vazio tem apenas um vizinho-irmatildeo natildeo vazio

o noacute vazio tem mais de um vizinho-irmatildeo natildeo vazio

o noacute vazio natildeo tem vizinhos-irmatildeos natildeo vazios

No primeiro caso o noacute vazio eacute classificado pelo seu vizinho natildeo vazio No

segundo caso considera-se qualquer um dos vizinhos natildeo vazios No terceiro

caso classifica-se primeiro os noacutes vizinhos e eacute dada a mesma classificaccedilatildeo para

o noacute vazio Como cada noacute natildeo folha de uma octree tem pelo menos um noacute filho

natildeo vazio sempre pode ser feita a classificaccedilatildeo dos noacutes vazios A classificaccedilatildeo

eacute feita da seguinte forma dentre os surfels do vizinho-irmatildeo escolhido encontra-

se o surfel mais proacuteximo ao noacute a ser classificado Se a normal deste surfel

aponta para o noacute vazio a ser classificado entatildeo ele eacute classificado como ldquoforardquo

Se a normal aponta no sentido contraacuterio entatildeo ele eacute classificado como ldquodentrordquo

De maneira mais formal sejam cv e cc coordenadas dos centros do noacute vazio e

do noacute contorno respectivamente Seja s o surfel mais proacuteximo ao noacute vazio e ns

a normal em s Se ( cv - cc )٠ ns gt 0 ( produto interno entre a normal em s e o

vetor cv - cc for maior que zero ) o noacute vazio seraacute classificado como ldquoforardquo

Senatildeo seraacute classificado como ldquodentrordquo

Em geral os noacutes ldquocontornordquo satildeo subdivididos em trecircs partes uma que estaacute

fora do modelo uma que estaacute dentro do modelo e uma terceira que conteacutem os

surfels Esta subdivisatildeo eacute feita por meio da criaccedilatildeo de dois planos paralelos que

Operaccedilotildees Booleanas com Pontos 36

dividem o noacute Para determinar estes planos calcula-se o vetor nm igual agrave

meacutedia das normais dos surfels do noacute nm = sum ns sum ns onde ns eacute a normal de

cada surfel do noacute

Em seguida encontra-se o surfel com maior produto interno entre a sua

normal e a normal meacutedia d1=Max(nm ٠ ns) Este surfel juntamente com a normal

meacutedia define um dos planos Encontra-se tambeacutem o surfel com menor produto

interno entre a sua normal e a normal meacutedia d2=Min(nm ٠ ns) Este surfel

juntamente com a normal meacutedia define o outro plano A Figura 10 mostra a

divisatildeo de um noacute de uma quadtree nas trecircs partes dentro do modelo fora do

modelo e no ldquocontornordquo

Esta subdivisatildeo aplica-se apenas a noacutes que conteacutem surfels cujas direccedilotildees

natildeo variem em mais de 90 graus Caso isso ocorra ele natildeo seraacute subdividido Ou

seja se um noacute possuir dois vetores normais (de dois surfels diferentes) que

formem um acircngulo maior que 90 graus ele natildeo seraacute subdividido

Figura 10 [2] -Divisatildeo de noacute de contorno a parte agrave esquerda estaacute fora do modelo a parte agrave direita estaacute dentro do modelo e a faixa intermediaacuteria conteacutem os surfels

4222 Teste Dentro-Fora

O Teste Dentro-Fora faz a classificaccedilatildeo dos surfels de um modelo como

ldquodentrordquo ou ldquoforardquo de outro modelo Portanto aplicaremos este mesmo teste duas

vezes uma para o modelo S1 em relaccedilatildeo ao modelo S2 e outra para S2 em

relaccedilatildeo a S1 Vamos mostrar o teste Dentro-Fora para o caso da classificaccedilatildeo

dos surfels do modelo S1 em relaccedilatildeo a S2

Operaccedilotildees Booleanas com Pontos 37

No item anterior foram criadas duas octrees uma para o modelo S1 e

outra para o modelo S2 Chamemos de A e B as octrees de S1 e S2

respectivamente Para classificar S1 em relaccedilatildeo a S2 inicialmente eacute feita uma

avaliaccedilatildeo da posiccedilatildeo de A em relaccedilatildeo a B A e B podem estar nas seguintes

situaccedilotildees

- A natildeo intersecta B

- A intersecta apenas noacutes ldquoforardquo de B

- A intersecta apenas noacutes ldquodentrordquo de B

- A intersecta noacutes ldquoforardquo e noacutes ldquodentrordquo de B

Para testar estas situaccedilotildees os noacutes satildeo aumentados de rmax o raio do

maior surfel do modelo soacutelido Isto eacute feito para compensar o fato de que o surfel

natildeo eacute apenas um ponto mas sim considerado como um disco

No primeiro e no segundo caso todos os surfels de A satildeo classificados

como ldquoforardquo No terceiro caso todos os surfels de A satildeo classificados como

ldquodentrordquo

No quarto caso temos que percorrer a octree A Comeccedilando pelo noacute raiz

percorre-se os filhos deste noacute Para cada filho os quatro testes acima satildeo feitos

Se o noacute filho encontra-se em um dos trecircs primeiros casos a classificaccedilatildeo eacute dada

como foi citada acima Se um filho estaacute no quarto caso e natildeo eacute um noacute folha

repete-se recursivamente o mesmo procedimento para seus filhos ateacute encontrar-

se um noacute folha Para um noacute que estaacute no quarto caso e eacute folha percorre-se a lista

de surfels que este noacute conteacutem classificando cada um destes surfels Seja sa um

surfel desta lista Para este caso percorre-se a octree B para classificar sa

Primeiramente encontramos o noacute de B que conteacutem sa Se este noacute de B foi

dividido testa-se de acordo com esta divisatildeo do noacute se o surfel sa estaacute na parte

do noacute que estaacute dentro do modelo ele eacute classificado como ldquodentrordquo se sa estaacute na

parte que estaacute fora do modelo ele eacute classificado como ldquoforardquo se sa estaacute na parte

intermediaacuteria ou se o noacute de B natildeo foi subdividido em planos encontra-se sb que

eacute o surfel pertencente a este noacute de B que estaacute mais proacuteximo de sa sa seraacute

entatildeo classificado de acordo com sb Se ( sa - sb )٠ nb gt 0 sa eacute classificado

como ldquoforardquo senatildeo eacute classificado como ldquodentrordquo Se os discos de sb e sa se

intersectam sa eacute marcado como interseccedilatildeo Para encontrar sb o algoritmo

implementa o meacutetodo TINN ndash Triangle Inequality Nearest Neighbour [19]

Operaccedilotildees Booleanas com Pontos 38

4223 Tratamento da interseccedilatildeo

Os surfels de A que intersectam surfels de B satildeo classificados como

ldquointerseccedilatildeordquo Se eles natildeo forem incluiacutedos no modelo resultado o soacutelido resultado

teraacute buracos Se eles forem incluiacutedos sem algum tratamento eles natildeo

representaratildeo adequadamente a regiatildeo Em geral o surfel sa (um surfel

ldquointerseccedilatildeordquo de A) eacute dividido em dois pelo plano que conteacutem o surfel sb (surfel de

B que sa intersecta) uma parte que estaacute fora de B e outra que estaacute dentro de B

Dependendo da operaccedilatildeo que estaacute sendo realizada vamos querer manter uma

destas partes do surfel sa no modelo resultado Seja xa a posiccedilatildeo do surfel sa e o

surfel sa uma circunferecircncia de centro xa e raio ra igual ao raio de alcance de sa

O plano que conteacutem o surfel sb define uma corda desta circunferecircncia como

mostra a Figura 11 O surfel sa seraacute substituiacutedo por um surfel menor que

ultrapassa esta corda de uma distacircncia e definida pelo usuaacuterio Para cobrir

completamente a interseccedilatildeo seratildeo adicionados surfels menores que cruzam a

corda de interseccedilatildeo

Figura 11 -Interseccedilatildeo do surfel s e do plano que passa pelo surfel t o surfel mais proacuteximo a s O surfel s eacute substituiacutedo por trecircs surfels menores

Operaccedilotildees Booleanas com Pontos 39

O tratamento de interseccedilatildeo proposto por Adams e Dutreacute [2] natildeo soacute evita

os buracos mas tambeacutem cria uma forma de renderizaccedilatildeo de arestas vivas A

colocaccedilatildeo de vaacuterios pequenos surfels na regiatildeo da interseccedilatildeo permite esta

correta renderizaccedilatildeo das ldquoarestas vivasrdquo Desta forma o problema das arestas

vivas eacute resolvido na modelagem (Figura 12) A vantagem de se resolver o caso

na modelagem eacute que natildeo eacute necessaacuterio fazer um tratamento especial na

renderizaccedilatildeo para que mostre esta aresta viva Diferente do tratamento feito

em Pauly (seccedilatildeo 431) que resolve esta questatildeo em tempo de renderizaccedilatildeo

Aleacutem disso o tratamento resolve alguns casos onde a Regra 2 poderia falhar

(veja em Validade da Regra 2-seccedilatildeo 44)

Figura 12 [2] -Agrave direita eacute mostrado o resultado do tratamento de interseccedilatildeo para o caso de Arestas Vivas do objeto agrave esquerda

43 Meacutetodo de Pauly

O meacutetodo aplica-se a objetos soacutelidos e natildeo soacutelidos Os modelos podem ser

obtidos a partir de diferentes entradas como nuvem de pontos irregulares ou por

meio de scanners 3D Cria um modelo hiacutebrido destes objetos usa o modelo por

pontos juntamente com a representaccedilatildeo impliacutecita Moving Least Squares - MLS

[18] Realiza operaccedilotildees booleanas com pontos e utiliza adicionalmente MLS

para alguns casos de classificaccedilatildeo de surfels e no tratamento de interseccedilatildeo A

seguir apresentamos as caracteriacutesticas do modelo por pontos deste meacutetodo e o

algoritmo que realiza as operaccedilotildees

Operaccedilotildees Booleanas com Pontos 40

431 Modelo em Pauly

O modelo eacute uma estrutura hiacutebrida de pontos com a representaccedilatildeo impliacutecita

Moving Least Squares - MLS [18] Esta estrutura eacute usada para fazer operaccedilotildees

booleanas e tambeacutem operaccedilotildees de free-form (natildeo abordadas nesta

dissertaccedilatildeo) Para operaccedilotildees booleanas a representaccedilatildeo MLS permite que a

curva de interseccedilatildeo entre os modelos seja reconstruiacuteda e surfels sejam

colocados nesta curva e em alguns casos de classificaccedilatildeo de surfels mostrados

na seccedilatildeo 432 Para este modelo natildeo existem restriccedilotildees quanto agrave forma do

objeto

Os surfels contecircm informaccedilotildees sobre sua posiccedilatildeo e sua normal Aleacutem

disso surfels podem conter informaccedilotildees adicionais como textura cor

propriedades de materiais

A distribuiccedilatildeo dos surfels eacute natildeo-uniforme e a amostragem eacute

aproximadamente adequada (Veja seccedilatildeo 44)

432 Algoritmo de Operaccedilotildees Booleanas

O algoritmo classifica surfels de um modelo como ldquodentrordquo ou ldquoforardquo de

outro modelo Antes de colocarmos como eacute feita esta classificaccedilatildeo devemos

acrescentar que Pauly estende esta classificaccedilatildeo para modelos que natildeo satildeo

soacutelidos Ou seja mesmo um modelo natildeo soacutelido divide o espaccedilo da cena (espaccedilo

em que se encontra o modelo) em dois sub-espaccedilos dentro ou fora do modelo

Pauly faz esta subdivisatildeo da seguinte forma

Como a superfiacutecie que determina o modelo eacute orientada (conteacutem vetores

normais agrave superfiacutecie que apontam para ldquoforardquo do modelo) Pauly considera que

um modelo natildeo soacutelido divide o espaccedilo em dois sub-espaccedilos um ldquoforardquo do

modelo (os vetores normais apontam para este sub-espaccedilo) e um que estaacute

ldquodentrordquo do modelo (os vetores normais apontam para direccedilatildeo oposta a este sub-

espaccedilo) Por exemplo um plano eacute representado como um conjunto de surfels

contidos num determinado espaccedilo geomeacutetrico plano π Cada surfel conteacutem um

vetor normal direcionado Este modelo divide entatildeo o espaccedilo em dois sub-

espaccedilos o sub-espaccedilo que eacute apontado por estes surfels (considerado ldquoforardquo do

modelo) e o sub-espaccedilo que estaacute na direccedilatildeo oposta (considerado ldquodentrordquo do

modelo) Desta forma ele aplica as classificaccedilotildees de ldquodentrordquo e ldquoforardquo de um

modelo tambeacutem a modelos natildeo soacutelidos A partir desta consideraccedilatildeo as

Operaccedilotildees Booleanas com Pontos 41

operaccedilotildees booleanas satildeo realizadas com os modelos natildeo soacutelidos da mesma

forma que com os modelos soacutelidos

Para determinar esta classificaccedilatildeo (dentro ou fora do modelo) Pauly utiliza

a Regra 2 Para pesquisa do surfel mais proacuteximo o meacutetodo usa a estrutura Kd-

tree [16] e tambeacutem o algoritmo ANN [16] No entanto o meacutetodo apresenta uma

restriccedilatildeo da Regra 2 ela soacute deve ser usada para classificaccedilotildees de pontos x se

a distacircncia x-p for maior que o espaccedilamento da amostragem local ηp em p

Este espaccedilamento da amostragem local ηp em p eacute um caacutelculo aproximado da

distacircncia meacutedia entre os surfels vizinhos a p Se x estaacute muito proacuteximo agrave

superfiacutecie a classificaccedilatildeo pode falhar Neste caso ele calcula o ponto exato de

S mais proacuteximo a x usando a projeccedilatildeo MLS (ldquoMoving Least Squaresrdquo)

Por questotildees de melhoria de desempenho utiliza-se o fato de que sendo

Ωp (x) a classificaccedilatildeo do ponto x em relaccedilatildeo agrave amostragem P tem-se que Ωp (x)

= Ωp (xrsquo) para todos os pontos de xrsquo que estatildeo dentro da esfera de centro x e

raio igual a x-p - ηp (onde p eacute o surfel mais proacuteximo e ηp eacute o espaccedilamento

local da amostragem em p acima citado) Ou seja sendo x um ponto qualquer p

o surfel mais proacuteximo a x ηp eacute o espaccedilamento local da amostragem em p se

desenharmos uma esfera com centro x e raio igual a x-p - ηp temos que

todos os pontos xrsquo que estatildeo dentro da esfera teratildeo a mesma classificaccedilatildeo de x

Desta forma o nuacutemero de vezes que a classificaccedilatildeo eacute feita (pesquisando-se o

surfel mais proacuteximo ao ponto e usando a Regra 2) diminui em ateacute 90 Assim

em geral a classificaccedilatildeo de um surfel eacute obtida a partir do seu surfel vizinho

Dados

S1 a superfiacutecie MLS de contorno que define o modelo A

S2 a superfiacutecie MLS de contorno que define o modelo B

P1 o conjunto de surfels que representa a superfiacutecie S1

P2 o conjunto de surfels que representa a superfiacutecie S2

Ωp1 (x) a classificaccedilatildeo do ponto p em relaccedilatildeo a uma amostragem P1

Q1 o subconjunto de P1 que vai compor o resultado

Ωp2 (x) a classificaccedilatildeo do ponto p em relaccedilatildeo a uma amostragem P2

Q2 o subconjunto de P2 que vai compor o resultado

Os conjuntos Q1 e Q2 satildeo obtidos por meio da Tabela 1 mostrada abaixo

Operaccedilotildees Booleanas com Pontos 42

Tabela 1 Classificaccedilatildeo para operaccedilotildees booleanas

Para o tratamento de interseccedilatildeo neste meacutetodo satildeo computados pontos

que caem exatamente na curva de interseccedilatildeo e estes satildeo acrescentados ao

modelo resultado Estes pontos satildeo determinados de forma que a densidade da

amostragem vai crescendo agrave medida que os surfels se aproximam da curva de

interseccedilatildeo e convergem para este ponto de interseccedilatildeo como mostra a Figura

13

(a) (b) (c)

Figura 13 - Os novos surfels satildeo colocados exatamente na curva de interseccedilatildeo

e convergem para o ponto de interseccedilatildeo

A Figura 14 mostra o processo de encontrar os surfels que caem nesta

curva de interseccedilatildeo Inicialmente satildeo encontrados todos os pontos de Q1 e Q2

que estatildeo proacuteximos agrave curva de interseccedilatildeo por meio da funccedilatildeo de distacircncia do

operador de projeccedilatildeo MLS Em seguida procura-se todos os pares mais

proacuteximos (q1 є Q1 q2 є Q2 ) e computa-se o ponto q na curva de interseccedilatildeo da

seguinte forma (veja a Figura 14)Seja r o ponto na linha de interseccedilatildeo dos dois

planos tangentes em q1 e q2 e que estaacute mais proacuteximo a estes dois pontos isto eacute

que minimiza a distacircncia ||r-q1|| + ||r-q2|| r eacute a primeira aproximaccedilatildeo de q e agora

pode ser projetado sobre S1 e S2 para obter dois novos pontos de partida q1rsquo e q2

rsquo

para a iteraccedilatildeo Este procedimento pode ser repetido iterativamente ateacute que os

pontos q1 e q2 convirjam ao ponto q na curva de interseccedilatildeo Normalmente este

processo requer menos de trecircs iteraccedilotildees

Operaccedilotildees Booleanas com Pontos 43

(a) (b)

(c)

Figura 14 (a) Suponhamos a reta que eacute a interseccedilatildeo do plano tangente a S1 em q1 e o

plano tangente a S2 em q2 O ponto r eacute o ponto desta reta que estaacute mais proacuteximo a q1 e

q2 (b) r eacute projetado sobre S1 e S2 obtendo-se q1acute e q2acute dois novos pontos de partida

para nova iteraccedilatildeo (c) A nova iteraccedilatildeo gera r que eacute uma aproximaccedilatildeo melhor de q

Pauly faz o tratamento de arestas vivas em tempo de renderizaccedilatildeo Ele

faz uma alteraccedilatildeo no renderizador Marca os surfels de interseccedilatildeo e ao

renderizaacute-los satildeo cortados para gerar uma aresta viva

44 Validade da Regra 2

Os dois meacutetodos analisados nesta dissertaccedilatildeo utilizam a seguinte regra

para a classificaccedilatildeo de um surfel

Regra 2 dado um volume V determinado por uma superfiacutecie de contorno

S uma amostragem P da superfiacutecie S um ponto x qualquer um ponto p є P que

eacute a amostra mais proacutexima a x um vetor ny normal a S em p e orientado para

fora de S temos que (x ndash p) np gt 0 x notinV

Em [16] eacute colocado que esta regra eacute tirada da seguinte propriedade da

geometria diferencial (aqui chamada Propriedade 1)

Propriedade 1 Dado um volume V determinado por uma superfiacutecie de

contorno S contiacutenua e duplamente diferenciaacutevel um ponto x qualquer um ponto

Operaccedilotildees Booleanas com Pontos 44

y є S que eacute o ponto de S mais proacuteximo a x um vetor ny normal a S em y e

orientado para fora de S temos que (x ndash y) ny gt 0 x notinV

A Figura 15 ilustra esta propriedade

Figura 15 Para verificar se o ponto x estaacute fora de um contorno C encontra-se o ponto y

de C Se o produto interno entre a normal em y e o vetor que liga y a x for maior que

zero entatildeo x estaacute fora de C senatildeo estaacute dentro de C

Pauly assume que tendo uma amostragem P da superfiacutecie S podemos

usar a Propriedade 1 substituindo y por p o surfel mais proacuteximo ao ponto x (x ndash

p) np gt 0 x notinV (Regra 2) Esta amostragem P em seu trabalho eacute

(aproximadamente) uma ldquoamostragem adequadardquo Tambeacutem seu tratamento de

interseccedilatildeo cria uma aproximaccedilatildeo dela (seccedilatildeo 43) Empiricamente a

ldquodiscretizaccedilatildeo da propriedaderdquo eacute vaacutelida a partir desta suposiccedilatildeo Mas isso natildeo foi

demonstrado teoricamente em seu trabalho

Pauly coloca em [16] que natildeo existe ainda uma teoria matemaacutetica rigorosa

de amostragem anaacuteloga a teoria de Fourier para superfiacutecies discretas

A melhor aproximaccedilatildeo teoacuterica para esta aacuterea eacute o uso do Eixo Medial que

foi colocado em [10] Vamos descrever este trabalho brevemente nesta seccedilatildeo

Este trabalho apresenta um algoritmo de reconstruccedilatildeo de superfiacutecie que parte de

uma amostragem adequada (abaixo definida) de pontos e obteacutem uma malha

que eacute topologicamente equivalente agrave superfiacutecie do objeto e agrave medida que a

densidade da amostragem cresce a saiacuteda converge para esta superfiacutecie

Para definir amostragem adequada o trabalho parte do conceito de Eixo

Medial

Operaccedilotildees Booleanas com Pontos 45

ldquoEixo Medialrdquo de uma superfiacutecie 2D posicionada no R3 eacute o conjunto

(fechado) de pontos pi para os quais buscando-se o ponto da superfiacutecie que

estaacute mais proacuteximo a pi mais de um ponto pertencentes a esta superfiacutecie satildeo

encontrados A Figura 16 abaixo ilustra o Eixo Medial em 2D

Figura 16 [10] As curvas de cor mais clara satildeo o Eixo Medial da curva em preto

Em duas dimensotildees os veacutertices de Voronoi de uma amostragem densa

aproximam o ldquoEixo Medialrdquo da amostragem (mas esta propriedade natildeo se

estende a 3D) A Figura 17 mostra o Eixo Medial em 3D

Figura 17 [10] Em 3D geralmente o Eixo Medial eacute uma superfiacutecie 2D (em cor mais

clara) Aqui o quadrado eacute o Eixo Medial da superfiacutecie transparente que o contorna

Podemos definir agora a amostragem adequada da seguinte forma

Supondo uma superfiacutecie suave que quer dizer uma 2-manifold duplamente

diferenciaacutevel posicionada no R3 uma ldquoamostragem adequadardquo desta superfiacutecie eacute

aquela na qual a densidade da amostragem eacute (pelo menos) inversamente

proporcional agrave distacircncia ao ldquoEixo Medialrdquo A Figura 18 mostra uma amostragem

adequada

Operaccedilotildees Booleanas com Pontos 46

Figura 18 [10] A figura mostra o diagrama de Voronoi de uma amostragem de pontos S

Da mesma forma que o a amostragem aproxima a curva os veacutertices de Voronoi

aproximam o Eixo Medial

Na praacutetica na reconstruccedilatildeo da superfiacutecie uma aproximaccedilatildeo deste ldquoEixo

Medialrdquo eacute computada (devido agrave dificuldade de computaacute-lo exatamente e em

alguns casos ateacute impossibilidade)

Melhorias Propostas 47

5 Melhorias Propostas

No capiacutetulo 4 apresentamos dois meacutetodos que realizam operaccedilotildees

booleanas em modelos por pontos o meacutetodo de Adams e Dutreacute [2] e o meacutetodo

de Pauly[3] Para esta dissertaccedilatildeo usamos o meacutetodo de Adams e Dutreacute [2] e

propomos as seguintes melhorias

- Alteramos o momento em que eacute feita a classificaccedilatildeo da octree Fazemos

esta classificaccedilatildeo durante a sua criaccedilatildeo Os noacutes filhos de um noacute pai P qualquer

satildeo classificados logo apoacutes a criaccedilatildeo de todos estes filhos de P

independentemente do restante da octree ter sido criada Isso pode ser feito

porque a octree eacute construiacuteda na ordem raiz-esquerda-direita (preorder

traversal) e portanto apoacutes todos os filhos de um noacute pai serem criados a parte

necessaacuteria da octree para a classificaccedilatildeo destes filhos jaacute estaacute criada

- A classificaccedilatildeo da octree eacute otimizada classificando-se os cantos dos seus

noacutes como dentro ou fora do modelo Na classificaccedilatildeo de um noacute n1 a partir de seu

vizinho n2 se os cantos que satildeo comuns a n1 e n2 tiverem a mesma

classificaccedilatildeo esta seraacute dada ao noacute Assim diminuiacutemos o nuacutemero de pesquisas

pelo surfel mais proacuteximo que eacute a parte criacutetica da classificaccedilatildeo dos noacutes da octree

em termos de tempo de processamento

- Acrescentamos um valor miacutenimo (maior que zero) para o nuacutemero de

surfels contidos em um noacute que eacute uma das condiccedilotildees de parada na criaccedilatildeo da

octree Verificamos que desta forma diminui-se a chance de erro na classificaccedilatildeo

de partes criacuteticas como ldquoarestas vivasrdquo

Uma comparaccedilatildeo entre a nossa implementaccedilatildeo e a de Pauly tambeacutem seraacute

feita no capiacutetulo 6

51 Descriccedilatildeo do algoritmo

O algoritmo implementado para esta dissertaccedilatildeo baseado no meacutetodo de

Adams e Dutreacute [2] pode ser dividido nas seguintes partes Criaccedilatildeo e

classificaccedilatildeo de uma octree para cada modelo Teste DentroFora Criaccedilatildeo do

modelo resultado Natildeo foi implementado tratamento especial algum de

interseccedilatildeo para o nosso plugin As proacuteximas seccedilotildees apresentam estas partes

Melhorias Propostas 48

511 Criaccedilatildeo e classificaccedilatildeo de uma octree para cada modelo

As ideacuteias do algoritmo satildeo aqui ilustradas em 2D mas a extensatildeo delas

para 3D eacute feita facilmente

Para cada modelo a octree eacute criada e classificada da seguinte forma

Figura 19-Quadtree classificada Os noacutes mais escuros estatildeo fora do modelo os mais claros dentro e os em tom intermediaacuterio satildeo noacutes de contorno

Gera-se uma ldquocaixa envolventerdquo do modelo contendo todos os surfels e

cria-se o noacute raiz da octree que corresponde a esta ldquocaixa envolventerdquo Este noacute

raiz eacute subdividido em oito filhos e seus surfels satildeo distribuiacutedos entre eles Ao

inveacutes de testarmos os valores de xy e z para cada surfel a fim de determinar

para qual filho ele iraacute utilizamos listas auxiliares Primeiro os surfels satildeo

subdivididos em dois grupos pelos valores de x e armazenados em uma lista

auxiliar Em seguida cada uma das listas eacute subdividida pelo valor de y e as

quatro listas obtidas seratildeo subdivididas pelo valor de z Ao final teremos 8 listas

de surfels cada uma delas pertencente a um filho

Cada noacute seraacute entatildeo novamente subdividido enquanto contiver um nuacutemero

de surfels gt nmin (valor preacute-definido) ou enquanto a profundidade da aacutervore lt pmax

(valor preacute-definido) Na figura 19 pmax = 3 e nmin = 3

Melhorias Propostas 49

Figura 20-O noacute cheio eacute dividido em trecircs partes agrave esquerda a regiatildeo estaacute dentro do modelo agrave direita estaacute fora e entre as duas linhas que dividem o noacute estaacute a regiatildeo que conteacutem os surfels

Os noacutes cheios recebem um tratamento especial Eles satildeo subdivididos em

trecircs partes da seguinte forma uma que estaacute fora do modelo outra que estaacute

dentro e uma que conteacutem os surfels Esta subdivisatildeo eacute feita por meio da criaccedilatildeo

de dois planos paralelos que dividem o noacute Para determinar estes planos

calcula-se o vetor nm igual agrave meacutedia das normais dos surfels do noacute nm = sum ns

sum ns onde ns eacute a normal de cada surfel do noacute Em seguida encontra-se o

surfel com maior produto interno entre a sua normal e a normal meacutedia

d1=Max(nm ٠ ns) Este surfel juntamente com a normal meacutedia define um dos

planos Encontra-se tambeacutem o surfel com menor produto interno entre a sua

normal e a normal meacutedia d2=Min (nm ٠ ns) Este surfel juntamente com a normal

meacutedia define o outro plano (Figura 20) Se o noacute conteacutem surfels de superfiacutecies de

orientaccedilotildees diferentes ele natildeo seraacute subdividido ou seja os planos coincidiratildeo

com os planos que delimitam o proacuteprio noacute Este teste foi implementado da

seguinte forma escolhe-se um surfel qualquer do noacute Calcula-se o produto

interno entre a normal deste surfel e as outras normais dos outros surfels deste

noacute Se algum produto interno for menor que zero este noacute natildeo seraacute subdividido

Apoacutes a etapa de subdivisatildeo classificam-se os oito cantos deste noacute como

dentro ou fora do modelo por meio da classificaccedilatildeo de um ponto que

descreveremos na sub-seccedilatildeo 5111

Melhorias Propostas 50

a b

c d

Figura 21-O noacute a eacute classificado pelo noacute c o noacute d tambeacutem eacute classificado pelo noacute c a classificaccedilatildeo do noacute a eacute propagada para o noacute b

Jaacute os noacutes vazios da octree seratildeo classificados como ldquodentrordquo ou ldquoforardquo do

modelo da seguinte forma cada noacute folha vazio eacute classificado a partir de um de

seus irmatildeos vizinhos adjacentes Se ele possuir um vizinho adjacente cheio ele

seraacute classificado por este vizinho se natildeo possuir os vizinhos adjacentes seratildeo

classificados primeiro e ele teraacute esta mesma classificaccedilatildeo (Figura 21) Como tem

que existir sempre pelo menos um noacute cheio entre os filhos de um noacute pai entatildeo

sempre esta classificaccedilatildeo poderaacute ser feita Com a classificaccedilatildeo de todos os

filhos tem-se tambeacutem a classificaccedilatildeo dos cantos do noacute pai

Mf03c003fmx a b

Figura 22-Os cantos a e b do noacute cheio possuem a mesma classificaccedilatildeo fora do modelo Esta classificaccedilatildeo foi dada ao noacute vazio adjacente

Melhorias Propostas 51

Para classificar um noacute vazio por meio de um noacute cheio verificam-se os

cantos comuns destes dois noacutes se todos os cantos tiverem a mesma

classificaccedilatildeo esta seraacute dada ao noacute vazio (Figura 22) Se houver classificaccedilotildees

diferentes escolhe-se o surfel do noacute cheio mais proacuteximo ao noacute vazio faz-se o

produto interno entre a normal deste surfel e o vetor que liga o centro do noacute

cheio ao centro do noacute vazio (ou o vetor que liga o surfel ao centro do noacute vazio)

Se o produto interno for maior que zero o noacute eacute classificado como ldquoforardquo senatildeo eacute

classificado como ldquodentrordquo Para encontrar o surfel (pertencente a um noacute cheio)

mais proacuteximo ao noacute vazio existem dois casos

- O noacute cheio eacute folha percorre-se toda a lista de surfels e escolhe o surfel

mais proacuteximo da fronteira entre o noacute cheio e o vazio

- O noacute cheio natildeo eacute um noacute folha percorrem-se os filhos do noacute cheio ou seja

esta pesquisa eacute feita descendo na octree a partir do noacute cheio procurando o

surfel mais proacuteximo agrave fronteira do pai com o noacute vazio a ser classificado

Classificando o centro do noacute vazio todo o noacute deve ter a mesma

classificaccedilatildeo pois este noacute natildeo conteacutem surfels Para encontrar o surfel do noacute

vazio mais proacuteximo da fronteira entre o noacute cheio e o vazio basta testar o valor da

coordenada se a fronteira eacute o lado direito do noacute cheio escolhe-se o surfel com

maior coordenada lsquoxrsquo se eacute o lado esquerdo escolhe-se o surfel com menor lsquoxrsquo

se lado superior surfel com maior lsquoyrsquo etc A seguir apresentamos a classificaccedilatildeo

de um ponto qualquer pertencente a um noacute cheio

Figura 23- Quadtree classificada

Melhorias Propostas 52

5111 Classificaccedilatildeo de um ponto de um noacute cheio

Figura 24 [2] A normal n eacute a normal meacutedia e os surfels s1 e s2 juntamente com a normal

n definem as retas que dividem o noacute O ponto a estaacute fora do modelo e o ponto b estaacute

dentro do modelo

Para um ponto localizado dentro do noacute faz-se o seguinte teste se o noacute foi

dividido testa-se de acordo com a divisatildeo do noacute se o ponto estaacute na parte do noacute

que estaacute dentro do modelo ele eacute classificado como ldquodentrordquo se o ponto estaacute na

parte que estaacute fora do modelo ele eacute classificado como ldquoforardquo (Figura 24) se o

ponto estaacute na parte que conteacutem os surfels encontra-se o surfel s pertencente ao

noacute mais proacuteximo do ponto e o classifica de acordo com s seja ns a normal em s

cs a coordenada de s cp a coordenada do ponto Se (cp - cs )٠ ns gt 0 o ponto

seraacute classificado como ldquoforardquo Senatildeo seraacute classificado como ldquodentrordquo

Se o noacute natildeo foi dividido em planos esta classificaccedilatildeo a partir do surfel

mais proacuteximo seraacute sempre feita

512 Teste DentroFora

Melhorias Propostas 53

Figura 25-Duas circunferecircncias e suas quadtrees correspondentes

O Teste DentroFora classifica os surfels de um modelo como dentro ou

fora de outro modelo ou na sua interseccedilatildeo Este teste foi aqui implementado

exatamente como foi proposto em Adams e Dutreacute [2] exceto que natildeo foi

implementado o meacutetodo TINN - Triangle Inequality Nearest Neighbour [19]

Cada octree eacute percorrida verificando-se se os seus noacutes ou surfels estatildeo dentro

fora ou no contorno do outro modelo (Figura 25) Sejam A e B duas octrees e

queremos classificar a octree A As duas octrees (AB) satildeo percorridas partindo

da raiz

Para cada noacute de A existem quatro casos (Figura 26) Para testar estas

situaccedilotildees os boxes dos noacutes satildeo aumentados de rmax o raio do maior surfel do

modelo Isto eacute feito para compensar o fato de que o surfel natildeo eacute apenas um

ponto mas sim considerado como um disco

Os quatro casos satildeo

Se o noacute de A natildeo intersecta B entatildeo todos os surfels deste noacute satildeo

classificados como fora

Se o noacute de A intersecta apenas noacutes de B que estatildeo fora do modelo

todos os surfels deste noacute satildeo fora

Se o noacute de A intersecta apenas noacutes de B que estatildeo dentro do modelo

todos os surfels deste noacute satildeo dentro

Melhorias Propostas 54

Se o noacute de A intersecta noacutes de B que estatildeo dentro e tambeacutem noacutes de B

que estatildeo fora testa-se se este noacute de A eacute ou natildeo folha Se natildeo for folha

percorre-se os filhos deste noacute de A ateacute encontrar um noacute folha cheio que

intersecta B Para cada surfel sa deste noacute folha de A encontra-se o surfel de B

mais proacuteximo e classifica-se a coordenada de sa da forma apresentada na seccedilatildeo

5111 Seja sb o surfel usado na classificaccedilatildeo de sa Se os discos de sb e sa

se intersectam sa eacute classificado como ldquointerseccedilatildeordquo

(a) (b)

(c) (d)

Figura 26- a modelos natildeo se intersectam b modelo intersecta noacutes fora c modelo intersecta apenas noacutes dentro d modelo intersecta noacutes dentro e noacutes fora

513 Criaccedilatildeo do modelo resultado

Um novo modelo eacute criado com os seguintes surfels (de acordo com a

operaccedilatildeo booleana escolhida pelo usuaacuterio - veja Regra 1 da seccedilatildeo 41)

Uniatildeo - surfels de A que estatildeo fora de B + surfels de B que estatildeo fora de A

Melhorias Propostas 55

Interseccedilatildeo - surfels de A que estatildeo dentro de B + surfels de B que estatildeo

dentro de A

Diferenccedila A-B - surfels de A que estatildeo fora de B + surfels de B que estatildeo

dentro de A (com orientaccedilatildeo invertida)

Como natildeo foi implementado tratamento especial algum de interseccedilatildeo para

o nosso plugin os surfels que se intersectam satildeo mantidos no modelo resultado

final sem modificaccedilotildees

Descrito o algoritmo vejamos a seguir a sua implementaccedilatildeo

52 Implementaccedilatildeo

Este algoritmo foi implementado na forma de um plugin para o software

PointShop 3D [11] Este plugin foi desenvolvido na linguagem C e no sistema

operacional Windows

A escolha deste tipo de implementaccedilatildeo permitiu-nos usar o software

PointShop para os testes do algoritmo Estes testes foram feitos com os modelos

disponibilizados para o PointShop [11] Nesta seccedilatildeo apresentaremos o software

PointShop e as principais estruturas de dados usadas em nosso plugin

O Pointshop eacute um software aberto com seu coacutedigo disponiacutevel e preparado

para trabalhar com plugins Eacute um software de ediccedilatildeo de modelos 3D por pontos

Ele permite aleacutem de visualizar o modelo alterar as suas caracteriacutesticas como

cor brilho e fazer mapeamento de textura iluminaccedilatildeo filtragem (Figura 27)

Melhorias Propostas 56

Figura 27-Software PointShop 3D com dois modelos carregados na sua cena

Aleacutem disso pode-se criar uma cena com vaacuterios modelos e visualizaacute-los de

qualquer ponto de vista Implementa o virtual trackball para rotacionaacute-los e

transladaacute-los Usa uma iluminaccedilatildeo simples direcional A sua arquitetura eacute

extensiacutevel permite que o usuaacuterio adicione seus proacuteprios componentes ao

sistema Possui trecircs tipos de componentes

ldquoToolsrdquo fornece funcionalidades para ediccedilatildeo interativa de superfiacutecie Satildeo

disponibilizados na ldquotoolbarrdquo

Plugins fornece funcionalidades para processar em um soacute passo

modelos ou partes deles selecionadas Satildeo disponibilizados no menu ldquoPluginsrdquo

Renderes fornece funcionalidades de display para os modelos

Para esta dissertaccedilatildeo foi escolhida a construccedilatildeo do componente Plugin

por adequar-se agrave nossa proposta e ser a mais simples de ser construiacuteda O

PointShop [11] jaacute conteacutem uma tool que executa operaccedilotildees booleanas e

deformaccedilatildeo free-form sobre os modelos carregados na cena usando o meacutetodo

de Pauly [3] apresentado no capiacutetulo 4 O nosso plugin Operaccedilotildees Booleanas

implementa o algoritmo descrito na seccedilatildeo anterior baseado na proposta de

Melhorias Propostas 57

Adams e Dutreacute [2] Uma comparaccedilatildeo entre o nosso plugin e a tool de Pauly [3] eacute

feita no capiacutetulo 6

Figura 28-Menu do PointShop com o plugin e as opccedilotildees para operaccedilotildees booleanas

Para se executar o plugin o usuaacuterio precisa carregar dois modelos na

cena do PointShop acionar o plugin informando a operaccedilatildeo que seraacute executada

O plugin executaraacute o algoritmo acima proposto e carregaraacute o resultado na cena

do Pointshop retirando os modelos anteriores

521 Estruturas de Dados

Como vimos o software PointShop [11] trabalha com modelos por pontos

Um modelo deste software descrito na seccedilatildeo 42 conteacutem todas as informaccedilotildees

que o algoritmo proposto em Bart [2] necessita Abaixo relacionamos as

Melhorias Propostas 58

principais estruturas de dados do PointShop usadas no plugin e as principais

estruturas de dados do nosso plugin

As principais classes do PointShop usadas no plugin satildeo

Classe Scene

Classe Objects

Classe SurfelColections

Classe Surfel

Classe StatusBar

Classe Transformer

A hierarquia de dados eacute a seguinte a Scene conteacutem vaacuterios Objects os

quais conteacutem SurfelColections Cada SurfelColections conteacutem Surfels que

suportam uma ou mais propriedades tais como cor difusa cor especular

Classe Scene Classe que representa uma cena que conteacutem modelos

Classe Object Um modelo eacute representado pela classe Object que

conteacutem uma SurfelCollection e as matrizes de transformaccedilatildeo para rotaccedilatildeo

escala e translaccedilatildeo Cada Object eacute identificado pelo seu nome que eacute uacutenico na

Scene O meacutetodo getUniqueName retorna um nome uacutenico Cada Object tem sua

proacutepria matriz de transformaccedilatildeo que pode ser modificada com setRotation

rotate setPosition translate setScale e scale Objects podem ser copiados com

copy Objects consiste em um conjunto de surfels os quais podem ser

recuperados pela getSurfelCollection O Object pode ser ativado com

setActiveObject e recuperado com getActiveObject

Objects podem ser adicionados ou removidos com addObject e

removeObject Os Objects podem ser obtidos pela getFirstObject e

getNextObject

Classe SurfelCollection representa o conjunto de surfels de um modelo

Cada surfelcollection consiste em um conjunto de surfels (SurfelInterface) de

tamanho obtido por getNofSurfels Os surfels podem ser recuperados com

getFirstSurfel getCurrentSurfel e getNextSurfel

A SurfelCollection conteacutem um PropertyDescriptor e uma SurfelList

A SurfelList eacute uma lista duplamente encadeada de surfels Possui os

atributos firstSurfel lastSurfel currentSurfel que satildeo ponteiros para uma

SurfelInterface nSurfels que eacute o nuacutemero de Surfels

A SurfelInterface define a API para os surfels que satildeo os menores

elementos que compotildeem um Object Podem ser considerados como pontos com

uma normal que define a orientaccedilatildeo do ciacuterculo (ou elipse) que seraacute desenhado

Melhorias Propostas 59

tatildeo logo o surfel seja renderizado Tem como atributos dois ponteiros (next e

prev) para SurfelInterface

PropertyDescriptor consiste em ateacute 32 valores descrevendo quais as

propriedades a SurfelInterface suporta

Classe Surfel classe que representa o surfel

Classe StatusBar classe que imprime mensagens na tela Os plugins

podem mandar mensagens para o usuaacuterio pela StatusBar

Mensagens texto podem ser impressas com showMessage O progresso

de uma operaccedilatildeo pode ser indicado com setProgress ou resetProgress

Classe Transformer representa a transformaccedilatildeo entre sistemas de

coordenadas Esta classe fornece meacutetodos para transformar pontos e vetores

entre os diferentes sistemas de coordenadas do Pointshop

A seguir apresentamos as principais estruturas de dados do plugin

Operaccedilotildees Booleanas

As principais estruturas de dados do plugin satildeo boundingbox tree no

lista_surfel surfel

Boundingbox conteacutem dois pontos 3D que definem uma caixa que conteacutem

o modelo um ponto com menores coordenadas xy e z e outro ponto com

maiores xyz

Tree representa a octree do modelo Cada registro conteacutem um ponteiro

para um noacute e oito ponteiros para as 8 octrees filhas

No representa um noacute da octree Conteacutem os seguintes dados

- localizaccedilatildeo do noacute que eacute o canto inferior esquerdo do noacute

- lista_surfel (preenchida apenas para noacutes folha cheios)

- quantidade de surfels do noacute

- classificaccedilatildeo do noacute como dentro fora ou contorno

- classificaccedilatildeo do noacute em relaccedilatildeo a outro modelo

- indica se o noacute eacute folha ou natildeo

- vetor que eacute a meacutedia das normais dos surfels do noacute

- ponto que eacute a meacutedia das localizaccedilotildees dos surfels do noacute

- surfel que tem (entre todos os surfels do noacute) o maior produto interno

entre a sua normal e a normal meacutedia

- surfel que tem (entre todos os surfels do noacute) o menor produto interno

entre a sua normal e a normal meacutedia

- produto interno maacuteximo e miacutenimo entre as normais dos surfels do noacute e a

normal meacutedia deste noacute

Melhorias Propostas 60

- indica se o noacute conteacutem surfels com normais em sentido oposto (produto

interno entre elas eacute menor que zero)

- classificaccedilatildeo dos oito cantos do noacute

lista_surfels lista em que cada registro conteacutem um apontador para um

surfel e um apontador para o proacuteximo registro

surfel representa o surfel da octree Conteacutem a classificaccedilatildeo em relaccedilatildeo a

outro modelo e um ponteiro para o surfel do Poinshop

Resultados 61

6 Resultados

Neste capiacutetulo apresentamos os testes realizados com o plugin para o

PointShop implementado para esta dissertaccedilatildeo a comparaccedilatildeo deste plugin com

o plugin de Pauly [3] e a comparaccedilatildeo entre o meacutetodo de Adams e Dutreacute [2] e o

meacutetodo de Pauly [3]

61 Testes

Os testes foram feitos em um PC x86 Family 6 261600 KB de RAM sem

placa graacutefica sistema operacional Windows 2000 O plugin foi implementado na

linguagem C

Os modelos usados para os testes satildeo modelos disponibilizados no

PointShop [11] Vale lembrar que o meacutetodo implementado em nosso plugin eacute

restrito a modelos soacutelidos e portanto foram usados apenas estes modelos

soacutelidos para os testes

O modelo na Figura 29 que eacute um dos modelos disponibilizados no

PointShop [11] foi usado para mostrar o resultado das operaccedilotildees realizadas

pelo plugin implementado nesta dissertaccedilatildeo O modelo Igea eacute um modelo soacutelido

que conteacutem 134345 surfels

Resultados 62

Figura 29-Modelo do PointShop Igea

Para realizar as operaccedilotildees este modelo foi carregado na cena do

PointShop duas vezes e um deles colorido de vermelho As Figuras 30 31 32

mostram o resultado da operaccedilatildeo de uniatildeo interseccedilatildeo e diferenccedila

respectivamente Os nuacutemeros de surfels dos modelos resultantes satildeo mostrados

na Tabela 2

Resultados 63

Figura 30-Resultado da uniatildeo de duas Igeas

Figura 31-Resultado da interseccedilatildeo de duas Igeas

Resultados 64

Figura 32-Resultado da diferenccedila entre duas Igeas

Tabela 2-Nuacutemero de surfels dos modelos resultantes

Observamos que o nuacutemero de surfels dos modelos resultantes estaacute

coerente com as figuras dos seus modelos

Para avaliar o tempo de processamento das operaccedilotildees foram realizados

vaacuterios testes com o objetivo de obter uma meacutedia dos tempos de realizaccedilatildeo de

cada operaccedilatildeo Tambeacutem foram armazenados os tempos da criaccedilatildeo das duas

octrees e da classificaccedilatildeo de todos os surfels dos dois objetos (como dentro ou

fora do outro modelo) Estes testes foram feitos usando o modelo Igea A meacutedia

dos tempos de processamento foi calculada e os resultados satildeo mostrados na

Tabela 3 Verificamos que o maior tempo gasto eacute para criaccedilatildeo das octrees

Verificamos tambeacutem que este resultado apresentado eacute similar ao resultado

verificado empiricamente com o plugin de Pauly [3] Os tempos gastos para

realizar as operaccedilotildees satildeo similares e o maior tempo gasto no plugin de Pauly

tambeacutem eacute para inicializaccedilatildeo de suas estruturas de dados que incluem a kd-tree

Operaccedilatildeo Nuacutemero de surfels do modelo resultado

Uniatildeo 189715

Interseccedilatildeo 72225

Diferenccedila 134552

Resultados 65

Operaccedilatildeo Criaccedilatildeo das

Octrees (seg)

Classificaccedilatildeo

(seg)

Criaccedilatildeo do

resultado (seg)

Total (seg)

Uniatildeo 39375 1324 18925 7154

Interseccedilatildeo 38585 1585 09547 63982

Diferenccedila 399875 1504 1729 729475

Tabela 3- Meacutedia dos tempos de processamento para as operaccedilotildees com duas Igeas

Com o objetivo de expor melhor os resultados deste trabalho

apresentamos abaixo mais um teste das operaccedilotildees booleanas usando o nosso

plugin Os modelos usados para este segundo teste satildeo o Max Planck e o Male

ambos modelos soacutelidos disponibilizados no PointShop Estes modelos satildeo

mostrados nas figura 33 e 34

O primeiro Max Planck conteacutem 52809 surfels

Figura 33-Modelo do PointShop MaxPlanck

O segundo modelo abaixo Male conteacutem 148138 surfels

Resultados 66

Figura 34-Modelo do PointShop Male

As Figuras 353637 mostram o resultado da operaccedilatildeo de uniatildeo interseccedilatildeo

e diferenccedila respectivamente usando os dois modelos acima Podemos observar

pela figura 35 que o resultado da operaccedilatildeo de diferenccedila neste caso gerou um

modelo resultado com trecircs partes desconexas Os nuacutemeros de surfels de cada

modelo resultado satildeo mostrados na Tabela 5

Figura 35- Resultado da Uniatildeo do modelo Male com MaxPlanck

Resultados 67

Figura 36-Resultado da interseccedilatildeo do modelo Male com o MaxPlanck

Figura 37-Resultado da diferenccedila do modelo Male do modelo MaxPlanck

As meacutedias de tempos de processamento foram calculadas da mesma

forma que o primeiro teste com o modelo Igea acima apresentado Os

resultados satildeo mostrados na Tabela 4 Podemos observar que este teste

Resultados 68

apresenta tempos um pouco menores que o teste com o modelo Igea Isto se

deve ao fato de que o modelo MaxPlanck ser significativamente menor que o

modelo Igea MaxPlanck possui 52809 surfels e Igea conteacutem 134345 surfels

Operaccedilatildeo Criaccedilatildeo das

Octrees (seg)

Classificaccedilatildeo

(seg)

Criaccedilatildeo do

resultado (seg)

Total

(seg)

Uniatildeo 3012 1254 102 5285

Interseccedilatildeo 2985 0901 0861 4747

Diferenccedila 2965 0911 0791 4667

Tabela 4-Tempo de processamento das operaccedilotildees com os modelos MaxPlanck e Male

Operaccedilatildeo Nuacutemero de surfels do resultado

Uniatildeo 126532

Interseccedilatildeo 88414

Diferenccedila 77635

Tabela 5-Nuacutemero de surfels dos modelos resultados das operaccedilotildees com os modelos MaxPlanck e Male

Em seguida apresentaremos uma comparaccedilatildeo entre o nosso plugin e o

plugin de Pauly[3] e tambeacutem uma comparaccedilatildeo entre o meacutetodo de Adams e Dutreacute

[2] e o meacutetodo de Pauly [3]

62 Comparaccedilatildeo entre os dois meacutetodos que realizam operaccedilotildees booleanas

A comparaccedilatildeo entre os meacutetodos de Pauly[3] e de Adams e Dutreacute foi feita

em termos de tempo de processamento e em termos conceituais Em termos de

tempo de processamento comparamos o plugin de Pauly[3] com o nosso plugin

Em termos de tempo de processamento verifica-se empiricamente que os

dois meacutetodos apresentam tempos bastante similares Entretanto o tempo de

processamento do algoritmo aqui implementado ainda pode ser melhorado com

Resultados 69

o uso do meacutetodo TINN [19] que foi proposto em Adams[2] - para otimizar a

pesquisa do surfel mais proacuteximo a um ponto que estaacute localizado na regiatildeo de um

noacute que conteacutem surfels - veja seccedilatildeo 42 O uso deste meacutetodo natildeo foi

implementado para este trabalho e a sua implementaccedilatildeo melhoraria o tempo de

resposta do algoritmo Aleacutem disso o trabalho de Sara F Frisken [12] citado no

capiacutetulo 2 apresenta uma otimizaccedilatildeo no uso de octrees que pode ser

incorporada no algoritmo implementado neste trabalho

Em termos conceituais vamos fazer a comparaccedilatildeo do uso do que

chamamos aqui de Regra 2 do tratamento de interseccedilatildeo e do tratamento de

ldquoarestas vivasrdquo

Como vimos na seccedilatildeo 41 tanto o algoritmo implementado nesta

dissertaccedilatildeo baseado no trabalho de Adams e Dutreacute como o meacutetodo de Pauly

[3] parte do que chamamos aqui de Regra 2 para realizar operaccedilotildees booleanas

com pontos Mas cada um destes meacutetodos daacute um tratamento diferente para o

uso desta regra

O meacutetodo de Pauly usa a Regra 2 para classificaccedilatildeo de cada ponto ou de

cada surfel Para classificar um surfel de B sb como dentro ou fora de A eacute

encontrado o surfel de A sa mais proacuteximo a sb e sb eacute classificado a partir de sa

Para encontrar sa Pauly utiliza uma kd-tree Como esta pesquisa para encontrar

sa eacute cara (mesmo usando uma kd-tree) Pauly utiliza uma esfera que conteacutem

pontos com a mesma classificaccedilatildeo (seccedilatildeo 432) e diminui em 90 este nuacutemero

de pesquisas Pauly utiliza tambeacutem a representaccedilatildeo impliacutecita MLS (Moving Least

Squares) para casos em que a Regra 2 poderia falhar e para tratamento de

interseccedilotildees Entretanto o nuacutemero destes casos em que a Regra 2 poderia falhar

eacute muito pequeno E a representaccedilatildeo MLS natildeo eacute uma estrutura simples de ser

implementada Portanto natildeo encontramos vantagens em usar MLS para estes

casos O meacutetodo de Adams e Dutreacute natildeo trata estes casos e na praacutetica

apresenta resultados bastante satisfatoacuterios como foi mostrado Portanto

consideramos que valeria a pena fazer algum tratamento especial para estes

casos se fosse um procedimento simples Para a execuccedilatildeo do algoritmo de

Pauly o uso de MLS natildeo interfere significativamente porque a construccedilatildeo desta

representaccedilatildeo natildeo eacute feita somente para realizar operaccedilotildees booleanas Os testes

empiacutericos que fizemos com o algoritmo de Pauly natildeo incluem a construccedilatildeo desta

representaccedilatildeo

Aparentemente os dois algoritmos satildeo bastante parecidos um usa octrees

e o outro usa kd-tree As duas estruturas de dados satildeo simples e otimizam a

classificaccedilatildeo dos surfels de um modelo como dentro ou fora do outro modelo

Resultados 70

Mas existe uma diferenccedila conceitual entre dois que merece ser destacada O

algoritmo aqui implementado usa a Regra 2 para classificaccedilatildeo dos noacutes de uma

octree e armazena esta octree classificada (ver capiacutetulo 5) Assim na maioria dos

casos natildeo seraacute necessaacuterio encontrar o surfel mais proacuteximo para classificar um

ponto (ou um surfel) como fora ou dentro de um modelo Caso o ponto esteja em

uma aacuterea da octree classificada ele teraacute a classificaccedilatildeo dada agravequela aacuterea A

pesquisa ao surfel mais proacuteximo seraacute feita apenas nos casos em que o ponto a

ser classificado estaacute localizado entre os planos que subdividem um noacute cheio

O uso desta octree classificada levanta uma questatildeo que natildeo foi citada no

trabalho de Adams e Dutreacute que eacute a proximidade desta estrutura (armazenada)

de octree classificada com uma representaccedilatildeo volumeacutetrica do objeto Sendo

assim esta estrutura pode ser aproveitada para outras funccedilotildees aleacutem da

classificaccedilatildeo dos surfels Por exemplo podemos ter uma aproximaccedilatildeo do

volume de uma cena somando os volumes aproximados dos modelos que a

compotildeem Como o enfoque deste trabalho eacute operaccedilatildeo booleana natildeo vamos nos

aprofundar nesta questatildeo

Outra importante diferenccedila entre os dois trabalhos que jaacute foi explicada na

seccedilatildeo 432 eacute que o meacutetodo de Pauly aplica-se a modelos soacutelidos ou natildeo

soacutelidos enquanto que o meacutetodo de Adams e Dutreacute aplica-se somente a modelos

soacutelidos

Quanto ao tratamento de interseccedilatildeo em termos de visualizaccedilatildeo todos os

dois resolvem bem o problema O tratamento de interseccedilatildeo nos dois trabalhos

tambeacutem resolve o problema da validade da Regra 2 (ver seccedilatildeo 44) Entretanto

o tratamento de Adams e Dutreacute natildeo depende da renderizaccedilatildeo sendo portanto

mais portaacutevel Aleacutem disso uma desvantagem do meacutetodo de Pauly eacute o uso da

representaccedilatildeo impliacutecita MLS (ldquoMoving Least Squaresrdquo) do objeto para obter os

pontos exatamente na curva de interseccedilatildeo Esta representaccedilatildeo torna o

tratamento de interseccedilatildeo mais complexo e a vantagem apresentada natildeo eacute tatildeo

significativa para este tratamento de interseccedilatildeo

Conclusatildeo 71

7 Conclusatildeo

Concluiacutemos entatildeo que as escolhas de Adams e Dutreacute por usar uma

octree classificada e pelo tratamento dado agrave interseccedilatildeo satildeo mais abrangentes

que a escolha de Pauly E consideramos que quanto mais abrangente for uma

escolha conceitual mais resultados poderemos tirar dela No caso de Adams e

Dutreacute eles estendem o problema de classificar um ponto para classificar todo o

modelo Como foi citado ele quase fornece uma representaccedilatildeo volumeacutetrica do

modelo Esta aproximada representaccedilatildeo volumeacutetrica pode nos fornecer outras

informaccedilotildees como por exemplo o volume aproximado do modelo

Aleacutem disso o uso da representaccedilatildeo impliacutecita MLS no meacutetodo de Pauly cria

uma complexidade a mais para o meacutetodo sem apresentar vantagens para a

realizaccedilatildeo de operaccedilotildees booleanas que eacute o nosso enfoque

Logo podemos dizer que o meacutetodo de Adams e Dutreacute apresenta as

seguintes vantagens em relaccedilatildeo ao de Pauly

- a estrutura de octree classificada aleacutem de ser usada para classificaccedilatildeo

fornece informaccedilotildees adicionais como volume aproximado do objeto

- o tempo de processamento no meacutetodo de Adams e Dutreacute tende a ser

melhor que no meacutetodo de Pauly se implementadas as melhorias acima citadas e

se colocaacutessemos em consideraccedilatildeo o uso da representaccedilatildeo impliacutecita MLS

(Moving Least Squares)

- o tratamento de interseccedilatildeo de Adams e Dutreacute apresenta a vantagem da

portabilidade ou seja iraacute funcionar independente do algoritmo de renderizaccedilatildeo

utilizado

E as vantagens do meacutetodo de Pauly em relaccedilatildeo ao de Adams e Dutreacute

- a colocaccedilatildeo de surfels exatamente na curva de interseccedilatildeo

- a possibilidade de trabalhar com modelos soacutelidos ou natildeo soacutelidos

E finalizando concluiacutemos que o estudo relatado nesta dissertaccedilatildeo foi

importante por

- fornecer um breve estudo sobre modelagem por pontos uma nova e

promissora aacuterea dentro da computaccedilatildeo graacutefica

Conclusatildeo 72

- por apresentar uma avaliaccedilatildeo dos dois trabalhos existentes sobre

operaccedilotildees booleanas com pontos encontrando as vantagens de cada um

e levantando questotildees que natildeo tinham sido citadas nos trabalhos originais

- por propor e implementar melhorias ao trabalho de Adams e Dutreacute

71 Trabalhos Futuros

Nossa implementaccedilatildeo pode ser ainda evoluiacuteda com as propostas

apresentadas na seccedilatildeo 62 Como observamos o tempo de processamento do

algoritmo aqui implementado ainda pode ser melhorado com o uso do meacutetodo

TINN [19] - que foi proposto em Adams[2] - para otimizar a pesquisa do surfel

mais proacuteximo a um ponto que estaacute localizado na regiatildeo de um noacute que conteacutem

surfels Aleacutem disso o trabalho Simple and Efficient Trasversal Methods for

Quadtrees and Octrees de Sara F Frisken [12] citado no capiacutetulo 2 apresenta

uma otimizaccedilatildeo no uso de octrees Outra proposta para melhorar o tempo de

processamento do algoritmo aqui implementado eacute usar a forma de trabalhar com

octrees apresentada neste trabalho

O trabalho de Adams e Dutreacute [2] eacute aplicado apenas a objetos soacutelidos O

nosso plugin portanto aplica-se somente a este tipo de objeto Jaacute o trabalho de

Pauly[3] eacute aplicado tambeacutem a modelos natildeo soacutelidos Apresentamos como

proposta a um trabalho futuro a extensatildeo do algoritmo aqui implementado para

modelos natildeo soacutelidos O surfel pode conter uma informaccedilatildeo adicional que indica

se ele estaacute delimitando um volume ou natildeo Assim pode-se ter um modelo com

ldquopartes soacutelidasrdquo e ldquopartes natildeo soacutelidasrdquo Por exemplo a uniatildeo de um plano com

uma esfera poderia resultar numa esfera com ldquoabasrdquo (seriam as partes do plano

que estariam fora da esfera) O modelo resultado teria uma parte correspondente

a um espaccedilo 3D (esfera) e outra parte que seria uma superfiacutecie 2D posicionada

no espaccedilo 3D sem delimitar algum volume (abas)

Muitos trabalhos podem ser desenvolvidos aplicando-se o modelo por

pontos em animaccedilatildeo jogos visualizaccedilatildeo de terrenos criaccedilatildeo de protoacutetipos etc

considerando-se a eficiecircncia e simplicidade do modelo E mais especificamente

as operaccedilotildees booleanas com pontos podem ser aplicadas para criaccedilatildeo de

cenaacuterios testes de colisotildees e nestes casos a representaccedilatildeo usando octrees

pode ser mais explorada considerando-se o seu potencial de representaccedilatildeo

volumeacutetrica de um objeto

Referecircncias Bibliograacuteficas 73

8 Referecircncias Bibliograacuteficas

[1] MAumlNTYLAuml M An Introduction to Solid Modeling Computer Science Press 1988

[2] ADAMS B DUTREacute P Interactive Boolean Operations on Surfel-

Bounded Solids Proceedings of SIGGRAPH 2003 San Diego USA 2003

[3] PAULY M KEISER R KOBBELT L GROSS M Shape Modeling

with Point-Sampled Geometry SIGGRAPH 2003 Computer Graphics

Proceedings Annual Conference Series ACM Press ACM SIGGRAPH 2003

[4] LEVOY M WHITTED T The Use of Points as Display Primitives

Technical Report TR 85-022 The University of North Carolina at Chapel Hill

Department of Computer Science 1985

[5] PFISTER H ZWICKER M VAN BAAR J GROSS M 2000 Surfels

Surface Elements as Rendering Primitives SIGGRAPH 2000 pp 335ndash342 New

Orleans LA July 23-28 2000

[6] ZWICKER M PFISTER H VAN BAAR J GROSS M Surface

Splatting SIGGRAPH 2001

[7] PAULY M KOBBELT L GROSS M Multiresolution Modeling of

Point-Sampled Geometry CS Techinical Report 378 September 16 2002

[8] CURLESS B New Methods for Surface Reconstruction from Range Images PhD thesis Stanford University 1997

[9] RUSINKIEWICZ S Real-time Acquisition and Rendering of Large 3D Models PhD thesis Stanford University 2001

Referecircncias Bibliograacuteficas 74

[10] AMENTA N BERN M KAMVYSSELIS M A new Voronoi-Based

Surface Reconstruction Algorithm SIGGRAPH 98 Conference proceedings pp

415-421 New York 1998

[11] ZWICKER M PAULY M KNOLL O GROSS M Pointshop 3D an

Interactive System for Point-Based Surface Editing Proceedings of SIGGRAPH 2002 San Antonio TX July 2002

[12] FRISKEN S PERRY R Simple and Efficient Traversal Methods for

Quadtrees and Octrees Journal of Graphics Tools Vol 7 Issue 3 May 2003

[13] CORREcircA W T OLIVEIRA M M Silva C T Wang J

Modeling and Rendering of Real Environments

Revista de Informaacutetica Teoacuterica e Aplicada (Brazilian Journal of Theoretic and Applied Computing) 9(2)127-156 2002

[14] DAVIS J MARSCHNER S GARR M LEVOY M Filling Holes in

Complex Surfaces Using Volumetric Diffusion First International Symposium on 3D Data Processing Visualization Transmission June 2002

[15] RAumlSAumlNEN J Surface Splatting Theory Extensions and Implementation Masterrsquos Thesis Dept of Computer Science Helsinki

University of Technology May 28 2002

[16] PAULY M Point Primitives for Interactive Modeling and Processing of 3D Geometry PhD thesis Federal Institute of Technology (ETH)

of Zurich 2003

[17] HOPPE H DEROSE T DUCHAMP T MCDONALD J

STUELZLE W Surface Reconstruction from Unorganized Points Computer Graphics 26(2)71ndash78 July 1992

[18] ALEXA M BEHR J COHEN-OR D FLEISHMAN S LEVIN D

SILVA C T Point Set Surfaces IEEE Visualization 2001 pp 21ndash28 October

2001

Referecircncias Bibliograacuteficas 75

[19] GREENSPAN M GODIN G TALBOT J Acceleration of Binning

Nearest Neighbor Methods Proceedings of Vision Interface 2000 pp 337-

344

[20] MENCL R Reconstruction of Surfaces from Unorganized Three-Dimensional Point Clouds Dissertation Dortmund Univ 2001

[21] KRIVANEK J Representing and Rendering Surfaces With Points

httpciteseernjneccomkrivanek03representinghtml Acesso em 30 jul

2003

[22] KRISTJANSSON ET AL Approximate Boolean Operations on Free-

form Solids Proceedings of SIGGRAPH 01 2001

Operaccedilotildees Booleanas com Pontos 34

Os objetos representados satildeo soacutelidos A distribuiccedilatildeo dos surfels eacute

uniforme embora o algoritmo natildeo exija esta condiccedilatildeo Para cada soacutelido eacute

definido um rmax = Max rs o raio de alcance do maior surfel pertencente agrave

superfiacutecie do soacutelido Como o raio eacute escolhido de tal forma que a projeccedilatildeo dos

discos no plano da imagem se sobreponham o controle da amostragem eacute

entatildeo ligado agrave renderizaccedilatildeo

422 Algoritmo de Operaccedilotildees Booleanas

Utilizando objetos modelados da forma descrita acima o meacutetodo realiza

operaccedilotildees de uniatildeo interseccedilatildeo e diferenccedila com modelos soacutelidos Supondo dois

modelos soacutelidos S1 e S2 O algoritmo pode ser dividido nas seguintes etapas

Criaccedilatildeo de uma octree para cada modelo Teste Dentro-Fora Tratamento da

interseccedilatildeo Estas etapas satildeo apresentadas nas proacuteximas seccedilotildees

4221 Criaccedilatildeo de uma octree para cada modelo

Eacute criada uma octree [1] para cada modelo A criaccedilatildeo de uma octree eacute feita

da seguinte forma

Gera-se a ldquoCaixa envolventerdquo caixa alinhada com os eixos que conteacutem

todo o modelo A ldquoCaixa envolventerdquo corresponde ao noacute raiz da octree Este noacute

conteacutem inicialmente todos os surfels do modelo Em seguida o noacute raiz eacute

dividido em oito noacutes filhos Os surfels satildeo distribuiacutedos entre estes oito noacutes Cada

um deles caso contenha surfels eacute dividido novamente em 8 filhos e seus surfels

satildeo redistribuiacutedos entre eles Este processo eacute repetido recursivamente enquanto

o nuacutemero de surfels do noacute for maior que zero ou ateacute uma profundidade maacutexima

preacute-definida da octree ser alcanccedilada

Cada noacute da octree deve ser classificado O objetivo desta classificaccedilatildeo eacute

determinar que parte da octree estaacute dentro do modelo e que parte estaacute fora Os

noacutes da octree satildeo entatildeo classificados como ldquodentrordquo ldquoforardquo e ldquocontornordquo

Podemos ilustrar esta classificaccedilatildeo em 2D a Figura 9 mostra uma quadtree

classificada

Operaccedilotildees Booleanas com Pontos 35

Figura 9-Um objeto representado por pontos com suas normais e sua quadtree correspondente classificada os noacutes cinza claro estatildeo dentro do modelo noacutes cinza mais escuro estatildeo fora do modelo e noacutes com cinza intermediaacuterio satildeo noacutes cheios noacutes que conteacutem pontos

O noacutes que conteacutem surfels satildeo classificados como ldquocontornordquo Para

classificar um noacute vazio existem trecircs casos

o noacute vazio tem apenas um vizinho-irmatildeo natildeo vazio

o noacute vazio tem mais de um vizinho-irmatildeo natildeo vazio

o noacute vazio natildeo tem vizinhos-irmatildeos natildeo vazios

No primeiro caso o noacute vazio eacute classificado pelo seu vizinho natildeo vazio No

segundo caso considera-se qualquer um dos vizinhos natildeo vazios No terceiro

caso classifica-se primeiro os noacutes vizinhos e eacute dada a mesma classificaccedilatildeo para

o noacute vazio Como cada noacute natildeo folha de uma octree tem pelo menos um noacute filho

natildeo vazio sempre pode ser feita a classificaccedilatildeo dos noacutes vazios A classificaccedilatildeo

eacute feita da seguinte forma dentre os surfels do vizinho-irmatildeo escolhido encontra-

se o surfel mais proacuteximo ao noacute a ser classificado Se a normal deste surfel

aponta para o noacute vazio a ser classificado entatildeo ele eacute classificado como ldquoforardquo

Se a normal aponta no sentido contraacuterio entatildeo ele eacute classificado como ldquodentrordquo

De maneira mais formal sejam cv e cc coordenadas dos centros do noacute vazio e

do noacute contorno respectivamente Seja s o surfel mais proacuteximo ao noacute vazio e ns

a normal em s Se ( cv - cc )٠ ns gt 0 ( produto interno entre a normal em s e o

vetor cv - cc for maior que zero ) o noacute vazio seraacute classificado como ldquoforardquo

Senatildeo seraacute classificado como ldquodentrordquo

Em geral os noacutes ldquocontornordquo satildeo subdivididos em trecircs partes uma que estaacute

fora do modelo uma que estaacute dentro do modelo e uma terceira que conteacutem os

surfels Esta subdivisatildeo eacute feita por meio da criaccedilatildeo de dois planos paralelos que

Operaccedilotildees Booleanas com Pontos 36

dividem o noacute Para determinar estes planos calcula-se o vetor nm igual agrave

meacutedia das normais dos surfels do noacute nm = sum ns sum ns onde ns eacute a normal de

cada surfel do noacute

Em seguida encontra-se o surfel com maior produto interno entre a sua

normal e a normal meacutedia d1=Max(nm ٠ ns) Este surfel juntamente com a normal

meacutedia define um dos planos Encontra-se tambeacutem o surfel com menor produto

interno entre a sua normal e a normal meacutedia d2=Min(nm ٠ ns) Este surfel

juntamente com a normal meacutedia define o outro plano A Figura 10 mostra a

divisatildeo de um noacute de uma quadtree nas trecircs partes dentro do modelo fora do

modelo e no ldquocontornordquo

Esta subdivisatildeo aplica-se apenas a noacutes que conteacutem surfels cujas direccedilotildees

natildeo variem em mais de 90 graus Caso isso ocorra ele natildeo seraacute subdividido Ou

seja se um noacute possuir dois vetores normais (de dois surfels diferentes) que

formem um acircngulo maior que 90 graus ele natildeo seraacute subdividido

Figura 10 [2] -Divisatildeo de noacute de contorno a parte agrave esquerda estaacute fora do modelo a parte agrave direita estaacute dentro do modelo e a faixa intermediaacuteria conteacutem os surfels

4222 Teste Dentro-Fora

O Teste Dentro-Fora faz a classificaccedilatildeo dos surfels de um modelo como

ldquodentrordquo ou ldquoforardquo de outro modelo Portanto aplicaremos este mesmo teste duas

vezes uma para o modelo S1 em relaccedilatildeo ao modelo S2 e outra para S2 em

relaccedilatildeo a S1 Vamos mostrar o teste Dentro-Fora para o caso da classificaccedilatildeo

dos surfels do modelo S1 em relaccedilatildeo a S2

Operaccedilotildees Booleanas com Pontos 37

No item anterior foram criadas duas octrees uma para o modelo S1 e

outra para o modelo S2 Chamemos de A e B as octrees de S1 e S2

respectivamente Para classificar S1 em relaccedilatildeo a S2 inicialmente eacute feita uma

avaliaccedilatildeo da posiccedilatildeo de A em relaccedilatildeo a B A e B podem estar nas seguintes

situaccedilotildees

- A natildeo intersecta B

- A intersecta apenas noacutes ldquoforardquo de B

- A intersecta apenas noacutes ldquodentrordquo de B

- A intersecta noacutes ldquoforardquo e noacutes ldquodentrordquo de B

Para testar estas situaccedilotildees os noacutes satildeo aumentados de rmax o raio do

maior surfel do modelo soacutelido Isto eacute feito para compensar o fato de que o surfel

natildeo eacute apenas um ponto mas sim considerado como um disco

No primeiro e no segundo caso todos os surfels de A satildeo classificados

como ldquoforardquo No terceiro caso todos os surfels de A satildeo classificados como

ldquodentrordquo

No quarto caso temos que percorrer a octree A Comeccedilando pelo noacute raiz

percorre-se os filhos deste noacute Para cada filho os quatro testes acima satildeo feitos

Se o noacute filho encontra-se em um dos trecircs primeiros casos a classificaccedilatildeo eacute dada

como foi citada acima Se um filho estaacute no quarto caso e natildeo eacute um noacute folha

repete-se recursivamente o mesmo procedimento para seus filhos ateacute encontrar-

se um noacute folha Para um noacute que estaacute no quarto caso e eacute folha percorre-se a lista

de surfels que este noacute conteacutem classificando cada um destes surfels Seja sa um

surfel desta lista Para este caso percorre-se a octree B para classificar sa

Primeiramente encontramos o noacute de B que conteacutem sa Se este noacute de B foi

dividido testa-se de acordo com esta divisatildeo do noacute se o surfel sa estaacute na parte

do noacute que estaacute dentro do modelo ele eacute classificado como ldquodentrordquo se sa estaacute na

parte que estaacute fora do modelo ele eacute classificado como ldquoforardquo se sa estaacute na parte

intermediaacuteria ou se o noacute de B natildeo foi subdividido em planos encontra-se sb que

eacute o surfel pertencente a este noacute de B que estaacute mais proacuteximo de sa sa seraacute

entatildeo classificado de acordo com sb Se ( sa - sb )٠ nb gt 0 sa eacute classificado

como ldquoforardquo senatildeo eacute classificado como ldquodentrordquo Se os discos de sb e sa se

intersectam sa eacute marcado como interseccedilatildeo Para encontrar sb o algoritmo

implementa o meacutetodo TINN ndash Triangle Inequality Nearest Neighbour [19]

Operaccedilotildees Booleanas com Pontos 38

4223 Tratamento da interseccedilatildeo

Os surfels de A que intersectam surfels de B satildeo classificados como

ldquointerseccedilatildeordquo Se eles natildeo forem incluiacutedos no modelo resultado o soacutelido resultado

teraacute buracos Se eles forem incluiacutedos sem algum tratamento eles natildeo

representaratildeo adequadamente a regiatildeo Em geral o surfel sa (um surfel

ldquointerseccedilatildeordquo de A) eacute dividido em dois pelo plano que conteacutem o surfel sb (surfel de

B que sa intersecta) uma parte que estaacute fora de B e outra que estaacute dentro de B

Dependendo da operaccedilatildeo que estaacute sendo realizada vamos querer manter uma

destas partes do surfel sa no modelo resultado Seja xa a posiccedilatildeo do surfel sa e o

surfel sa uma circunferecircncia de centro xa e raio ra igual ao raio de alcance de sa

O plano que conteacutem o surfel sb define uma corda desta circunferecircncia como

mostra a Figura 11 O surfel sa seraacute substituiacutedo por um surfel menor que

ultrapassa esta corda de uma distacircncia e definida pelo usuaacuterio Para cobrir

completamente a interseccedilatildeo seratildeo adicionados surfels menores que cruzam a

corda de interseccedilatildeo

Figura 11 -Interseccedilatildeo do surfel s e do plano que passa pelo surfel t o surfel mais proacuteximo a s O surfel s eacute substituiacutedo por trecircs surfels menores

Operaccedilotildees Booleanas com Pontos 39

O tratamento de interseccedilatildeo proposto por Adams e Dutreacute [2] natildeo soacute evita

os buracos mas tambeacutem cria uma forma de renderizaccedilatildeo de arestas vivas A

colocaccedilatildeo de vaacuterios pequenos surfels na regiatildeo da interseccedilatildeo permite esta

correta renderizaccedilatildeo das ldquoarestas vivasrdquo Desta forma o problema das arestas

vivas eacute resolvido na modelagem (Figura 12) A vantagem de se resolver o caso

na modelagem eacute que natildeo eacute necessaacuterio fazer um tratamento especial na

renderizaccedilatildeo para que mostre esta aresta viva Diferente do tratamento feito

em Pauly (seccedilatildeo 431) que resolve esta questatildeo em tempo de renderizaccedilatildeo

Aleacutem disso o tratamento resolve alguns casos onde a Regra 2 poderia falhar

(veja em Validade da Regra 2-seccedilatildeo 44)

Figura 12 [2] -Agrave direita eacute mostrado o resultado do tratamento de interseccedilatildeo para o caso de Arestas Vivas do objeto agrave esquerda

43 Meacutetodo de Pauly

O meacutetodo aplica-se a objetos soacutelidos e natildeo soacutelidos Os modelos podem ser

obtidos a partir de diferentes entradas como nuvem de pontos irregulares ou por

meio de scanners 3D Cria um modelo hiacutebrido destes objetos usa o modelo por

pontos juntamente com a representaccedilatildeo impliacutecita Moving Least Squares - MLS

[18] Realiza operaccedilotildees booleanas com pontos e utiliza adicionalmente MLS

para alguns casos de classificaccedilatildeo de surfels e no tratamento de interseccedilatildeo A

seguir apresentamos as caracteriacutesticas do modelo por pontos deste meacutetodo e o

algoritmo que realiza as operaccedilotildees

Operaccedilotildees Booleanas com Pontos 40

431 Modelo em Pauly

O modelo eacute uma estrutura hiacutebrida de pontos com a representaccedilatildeo impliacutecita

Moving Least Squares - MLS [18] Esta estrutura eacute usada para fazer operaccedilotildees

booleanas e tambeacutem operaccedilotildees de free-form (natildeo abordadas nesta

dissertaccedilatildeo) Para operaccedilotildees booleanas a representaccedilatildeo MLS permite que a

curva de interseccedilatildeo entre os modelos seja reconstruiacuteda e surfels sejam

colocados nesta curva e em alguns casos de classificaccedilatildeo de surfels mostrados

na seccedilatildeo 432 Para este modelo natildeo existem restriccedilotildees quanto agrave forma do

objeto

Os surfels contecircm informaccedilotildees sobre sua posiccedilatildeo e sua normal Aleacutem

disso surfels podem conter informaccedilotildees adicionais como textura cor

propriedades de materiais

A distribuiccedilatildeo dos surfels eacute natildeo-uniforme e a amostragem eacute

aproximadamente adequada (Veja seccedilatildeo 44)

432 Algoritmo de Operaccedilotildees Booleanas

O algoritmo classifica surfels de um modelo como ldquodentrordquo ou ldquoforardquo de

outro modelo Antes de colocarmos como eacute feita esta classificaccedilatildeo devemos

acrescentar que Pauly estende esta classificaccedilatildeo para modelos que natildeo satildeo

soacutelidos Ou seja mesmo um modelo natildeo soacutelido divide o espaccedilo da cena (espaccedilo

em que se encontra o modelo) em dois sub-espaccedilos dentro ou fora do modelo

Pauly faz esta subdivisatildeo da seguinte forma

Como a superfiacutecie que determina o modelo eacute orientada (conteacutem vetores

normais agrave superfiacutecie que apontam para ldquoforardquo do modelo) Pauly considera que

um modelo natildeo soacutelido divide o espaccedilo em dois sub-espaccedilos um ldquoforardquo do

modelo (os vetores normais apontam para este sub-espaccedilo) e um que estaacute

ldquodentrordquo do modelo (os vetores normais apontam para direccedilatildeo oposta a este sub-

espaccedilo) Por exemplo um plano eacute representado como um conjunto de surfels

contidos num determinado espaccedilo geomeacutetrico plano π Cada surfel conteacutem um

vetor normal direcionado Este modelo divide entatildeo o espaccedilo em dois sub-

espaccedilos o sub-espaccedilo que eacute apontado por estes surfels (considerado ldquoforardquo do

modelo) e o sub-espaccedilo que estaacute na direccedilatildeo oposta (considerado ldquodentrordquo do

modelo) Desta forma ele aplica as classificaccedilotildees de ldquodentrordquo e ldquoforardquo de um

modelo tambeacutem a modelos natildeo soacutelidos A partir desta consideraccedilatildeo as

Operaccedilotildees Booleanas com Pontos 41

operaccedilotildees booleanas satildeo realizadas com os modelos natildeo soacutelidos da mesma

forma que com os modelos soacutelidos

Para determinar esta classificaccedilatildeo (dentro ou fora do modelo) Pauly utiliza

a Regra 2 Para pesquisa do surfel mais proacuteximo o meacutetodo usa a estrutura Kd-

tree [16] e tambeacutem o algoritmo ANN [16] No entanto o meacutetodo apresenta uma

restriccedilatildeo da Regra 2 ela soacute deve ser usada para classificaccedilotildees de pontos x se

a distacircncia x-p for maior que o espaccedilamento da amostragem local ηp em p

Este espaccedilamento da amostragem local ηp em p eacute um caacutelculo aproximado da

distacircncia meacutedia entre os surfels vizinhos a p Se x estaacute muito proacuteximo agrave

superfiacutecie a classificaccedilatildeo pode falhar Neste caso ele calcula o ponto exato de

S mais proacuteximo a x usando a projeccedilatildeo MLS (ldquoMoving Least Squaresrdquo)

Por questotildees de melhoria de desempenho utiliza-se o fato de que sendo

Ωp (x) a classificaccedilatildeo do ponto x em relaccedilatildeo agrave amostragem P tem-se que Ωp (x)

= Ωp (xrsquo) para todos os pontos de xrsquo que estatildeo dentro da esfera de centro x e

raio igual a x-p - ηp (onde p eacute o surfel mais proacuteximo e ηp eacute o espaccedilamento

local da amostragem em p acima citado) Ou seja sendo x um ponto qualquer p

o surfel mais proacuteximo a x ηp eacute o espaccedilamento local da amostragem em p se

desenharmos uma esfera com centro x e raio igual a x-p - ηp temos que

todos os pontos xrsquo que estatildeo dentro da esfera teratildeo a mesma classificaccedilatildeo de x

Desta forma o nuacutemero de vezes que a classificaccedilatildeo eacute feita (pesquisando-se o

surfel mais proacuteximo ao ponto e usando a Regra 2) diminui em ateacute 90 Assim

em geral a classificaccedilatildeo de um surfel eacute obtida a partir do seu surfel vizinho

Dados

S1 a superfiacutecie MLS de contorno que define o modelo A

S2 a superfiacutecie MLS de contorno que define o modelo B

P1 o conjunto de surfels que representa a superfiacutecie S1

P2 o conjunto de surfels que representa a superfiacutecie S2

Ωp1 (x) a classificaccedilatildeo do ponto p em relaccedilatildeo a uma amostragem P1

Q1 o subconjunto de P1 que vai compor o resultado

Ωp2 (x) a classificaccedilatildeo do ponto p em relaccedilatildeo a uma amostragem P2

Q2 o subconjunto de P2 que vai compor o resultado

Os conjuntos Q1 e Q2 satildeo obtidos por meio da Tabela 1 mostrada abaixo

Operaccedilotildees Booleanas com Pontos 42

Tabela 1 Classificaccedilatildeo para operaccedilotildees booleanas

Para o tratamento de interseccedilatildeo neste meacutetodo satildeo computados pontos

que caem exatamente na curva de interseccedilatildeo e estes satildeo acrescentados ao

modelo resultado Estes pontos satildeo determinados de forma que a densidade da

amostragem vai crescendo agrave medida que os surfels se aproximam da curva de

interseccedilatildeo e convergem para este ponto de interseccedilatildeo como mostra a Figura

13

(a) (b) (c)

Figura 13 - Os novos surfels satildeo colocados exatamente na curva de interseccedilatildeo

e convergem para o ponto de interseccedilatildeo

A Figura 14 mostra o processo de encontrar os surfels que caem nesta

curva de interseccedilatildeo Inicialmente satildeo encontrados todos os pontos de Q1 e Q2

que estatildeo proacuteximos agrave curva de interseccedilatildeo por meio da funccedilatildeo de distacircncia do

operador de projeccedilatildeo MLS Em seguida procura-se todos os pares mais

proacuteximos (q1 є Q1 q2 є Q2 ) e computa-se o ponto q na curva de interseccedilatildeo da

seguinte forma (veja a Figura 14)Seja r o ponto na linha de interseccedilatildeo dos dois

planos tangentes em q1 e q2 e que estaacute mais proacuteximo a estes dois pontos isto eacute

que minimiza a distacircncia ||r-q1|| + ||r-q2|| r eacute a primeira aproximaccedilatildeo de q e agora

pode ser projetado sobre S1 e S2 para obter dois novos pontos de partida q1rsquo e q2

rsquo

para a iteraccedilatildeo Este procedimento pode ser repetido iterativamente ateacute que os

pontos q1 e q2 convirjam ao ponto q na curva de interseccedilatildeo Normalmente este

processo requer menos de trecircs iteraccedilotildees

Operaccedilotildees Booleanas com Pontos 43

(a) (b)

(c)

Figura 14 (a) Suponhamos a reta que eacute a interseccedilatildeo do plano tangente a S1 em q1 e o

plano tangente a S2 em q2 O ponto r eacute o ponto desta reta que estaacute mais proacuteximo a q1 e

q2 (b) r eacute projetado sobre S1 e S2 obtendo-se q1acute e q2acute dois novos pontos de partida

para nova iteraccedilatildeo (c) A nova iteraccedilatildeo gera r que eacute uma aproximaccedilatildeo melhor de q

Pauly faz o tratamento de arestas vivas em tempo de renderizaccedilatildeo Ele

faz uma alteraccedilatildeo no renderizador Marca os surfels de interseccedilatildeo e ao

renderizaacute-los satildeo cortados para gerar uma aresta viva

44 Validade da Regra 2

Os dois meacutetodos analisados nesta dissertaccedilatildeo utilizam a seguinte regra

para a classificaccedilatildeo de um surfel

Regra 2 dado um volume V determinado por uma superfiacutecie de contorno

S uma amostragem P da superfiacutecie S um ponto x qualquer um ponto p є P que

eacute a amostra mais proacutexima a x um vetor ny normal a S em p e orientado para

fora de S temos que (x ndash p) np gt 0 x notinV

Em [16] eacute colocado que esta regra eacute tirada da seguinte propriedade da

geometria diferencial (aqui chamada Propriedade 1)

Propriedade 1 Dado um volume V determinado por uma superfiacutecie de

contorno S contiacutenua e duplamente diferenciaacutevel um ponto x qualquer um ponto

Operaccedilotildees Booleanas com Pontos 44

y є S que eacute o ponto de S mais proacuteximo a x um vetor ny normal a S em y e

orientado para fora de S temos que (x ndash y) ny gt 0 x notinV

A Figura 15 ilustra esta propriedade

Figura 15 Para verificar se o ponto x estaacute fora de um contorno C encontra-se o ponto y

de C Se o produto interno entre a normal em y e o vetor que liga y a x for maior que

zero entatildeo x estaacute fora de C senatildeo estaacute dentro de C

Pauly assume que tendo uma amostragem P da superfiacutecie S podemos

usar a Propriedade 1 substituindo y por p o surfel mais proacuteximo ao ponto x (x ndash

p) np gt 0 x notinV (Regra 2) Esta amostragem P em seu trabalho eacute

(aproximadamente) uma ldquoamostragem adequadardquo Tambeacutem seu tratamento de

interseccedilatildeo cria uma aproximaccedilatildeo dela (seccedilatildeo 43) Empiricamente a

ldquodiscretizaccedilatildeo da propriedaderdquo eacute vaacutelida a partir desta suposiccedilatildeo Mas isso natildeo foi

demonstrado teoricamente em seu trabalho

Pauly coloca em [16] que natildeo existe ainda uma teoria matemaacutetica rigorosa

de amostragem anaacuteloga a teoria de Fourier para superfiacutecies discretas

A melhor aproximaccedilatildeo teoacuterica para esta aacuterea eacute o uso do Eixo Medial que

foi colocado em [10] Vamos descrever este trabalho brevemente nesta seccedilatildeo

Este trabalho apresenta um algoritmo de reconstruccedilatildeo de superfiacutecie que parte de

uma amostragem adequada (abaixo definida) de pontos e obteacutem uma malha

que eacute topologicamente equivalente agrave superfiacutecie do objeto e agrave medida que a

densidade da amostragem cresce a saiacuteda converge para esta superfiacutecie

Para definir amostragem adequada o trabalho parte do conceito de Eixo

Medial

Operaccedilotildees Booleanas com Pontos 45

ldquoEixo Medialrdquo de uma superfiacutecie 2D posicionada no R3 eacute o conjunto

(fechado) de pontos pi para os quais buscando-se o ponto da superfiacutecie que

estaacute mais proacuteximo a pi mais de um ponto pertencentes a esta superfiacutecie satildeo

encontrados A Figura 16 abaixo ilustra o Eixo Medial em 2D

Figura 16 [10] As curvas de cor mais clara satildeo o Eixo Medial da curva em preto

Em duas dimensotildees os veacutertices de Voronoi de uma amostragem densa

aproximam o ldquoEixo Medialrdquo da amostragem (mas esta propriedade natildeo se

estende a 3D) A Figura 17 mostra o Eixo Medial em 3D

Figura 17 [10] Em 3D geralmente o Eixo Medial eacute uma superfiacutecie 2D (em cor mais

clara) Aqui o quadrado eacute o Eixo Medial da superfiacutecie transparente que o contorna

Podemos definir agora a amostragem adequada da seguinte forma

Supondo uma superfiacutecie suave que quer dizer uma 2-manifold duplamente

diferenciaacutevel posicionada no R3 uma ldquoamostragem adequadardquo desta superfiacutecie eacute

aquela na qual a densidade da amostragem eacute (pelo menos) inversamente

proporcional agrave distacircncia ao ldquoEixo Medialrdquo A Figura 18 mostra uma amostragem

adequada

Operaccedilotildees Booleanas com Pontos 46

Figura 18 [10] A figura mostra o diagrama de Voronoi de uma amostragem de pontos S

Da mesma forma que o a amostragem aproxima a curva os veacutertices de Voronoi

aproximam o Eixo Medial

Na praacutetica na reconstruccedilatildeo da superfiacutecie uma aproximaccedilatildeo deste ldquoEixo

Medialrdquo eacute computada (devido agrave dificuldade de computaacute-lo exatamente e em

alguns casos ateacute impossibilidade)

Melhorias Propostas 47

5 Melhorias Propostas

No capiacutetulo 4 apresentamos dois meacutetodos que realizam operaccedilotildees

booleanas em modelos por pontos o meacutetodo de Adams e Dutreacute [2] e o meacutetodo

de Pauly[3] Para esta dissertaccedilatildeo usamos o meacutetodo de Adams e Dutreacute [2] e

propomos as seguintes melhorias

- Alteramos o momento em que eacute feita a classificaccedilatildeo da octree Fazemos

esta classificaccedilatildeo durante a sua criaccedilatildeo Os noacutes filhos de um noacute pai P qualquer

satildeo classificados logo apoacutes a criaccedilatildeo de todos estes filhos de P

independentemente do restante da octree ter sido criada Isso pode ser feito

porque a octree eacute construiacuteda na ordem raiz-esquerda-direita (preorder

traversal) e portanto apoacutes todos os filhos de um noacute pai serem criados a parte

necessaacuteria da octree para a classificaccedilatildeo destes filhos jaacute estaacute criada

- A classificaccedilatildeo da octree eacute otimizada classificando-se os cantos dos seus

noacutes como dentro ou fora do modelo Na classificaccedilatildeo de um noacute n1 a partir de seu

vizinho n2 se os cantos que satildeo comuns a n1 e n2 tiverem a mesma

classificaccedilatildeo esta seraacute dada ao noacute Assim diminuiacutemos o nuacutemero de pesquisas

pelo surfel mais proacuteximo que eacute a parte criacutetica da classificaccedilatildeo dos noacutes da octree

em termos de tempo de processamento

- Acrescentamos um valor miacutenimo (maior que zero) para o nuacutemero de

surfels contidos em um noacute que eacute uma das condiccedilotildees de parada na criaccedilatildeo da

octree Verificamos que desta forma diminui-se a chance de erro na classificaccedilatildeo

de partes criacuteticas como ldquoarestas vivasrdquo

Uma comparaccedilatildeo entre a nossa implementaccedilatildeo e a de Pauly tambeacutem seraacute

feita no capiacutetulo 6

51 Descriccedilatildeo do algoritmo

O algoritmo implementado para esta dissertaccedilatildeo baseado no meacutetodo de

Adams e Dutreacute [2] pode ser dividido nas seguintes partes Criaccedilatildeo e

classificaccedilatildeo de uma octree para cada modelo Teste DentroFora Criaccedilatildeo do

modelo resultado Natildeo foi implementado tratamento especial algum de

interseccedilatildeo para o nosso plugin As proacuteximas seccedilotildees apresentam estas partes

Melhorias Propostas 48

511 Criaccedilatildeo e classificaccedilatildeo de uma octree para cada modelo

As ideacuteias do algoritmo satildeo aqui ilustradas em 2D mas a extensatildeo delas

para 3D eacute feita facilmente

Para cada modelo a octree eacute criada e classificada da seguinte forma

Figura 19-Quadtree classificada Os noacutes mais escuros estatildeo fora do modelo os mais claros dentro e os em tom intermediaacuterio satildeo noacutes de contorno

Gera-se uma ldquocaixa envolventerdquo do modelo contendo todos os surfels e

cria-se o noacute raiz da octree que corresponde a esta ldquocaixa envolventerdquo Este noacute

raiz eacute subdividido em oito filhos e seus surfels satildeo distribuiacutedos entre eles Ao

inveacutes de testarmos os valores de xy e z para cada surfel a fim de determinar

para qual filho ele iraacute utilizamos listas auxiliares Primeiro os surfels satildeo

subdivididos em dois grupos pelos valores de x e armazenados em uma lista

auxiliar Em seguida cada uma das listas eacute subdividida pelo valor de y e as

quatro listas obtidas seratildeo subdivididas pelo valor de z Ao final teremos 8 listas

de surfels cada uma delas pertencente a um filho

Cada noacute seraacute entatildeo novamente subdividido enquanto contiver um nuacutemero

de surfels gt nmin (valor preacute-definido) ou enquanto a profundidade da aacutervore lt pmax

(valor preacute-definido) Na figura 19 pmax = 3 e nmin = 3

Melhorias Propostas 49

Figura 20-O noacute cheio eacute dividido em trecircs partes agrave esquerda a regiatildeo estaacute dentro do modelo agrave direita estaacute fora e entre as duas linhas que dividem o noacute estaacute a regiatildeo que conteacutem os surfels

Os noacutes cheios recebem um tratamento especial Eles satildeo subdivididos em

trecircs partes da seguinte forma uma que estaacute fora do modelo outra que estaacute

dentro e uma que conteacutem os surfels Esta subdivisatildeo eacute feita por meio da criaccedilatildeo

de dois planos paralelos que dividem o noacute Para determinar estes planos

calcula-se o vetor nm igual agrave meacutedia das normais dos surfels do noacute nm = sum ns

sum ns onde ns eacute a normal de cada surfel do noacute Em seguida encontra-se o

surfel com maior produto interno entre a sua normal e a normal meacutedia

d1=Max(nm ٠ ns) Este surfel juntamente com a normal meacutedia define um dos

planos Encontra-se tambeacutem o surfel com menor produto interno entre a sua

normal e a normal meacutedia d2=Min (nm ٠ ns) Este surfel juntamente com a normal

meacutedia define o outro plano (Figura 20) Se o noacute conteacutem surfels de superfiacutecies de

orientaccedilotildees diferentes ele natildeo seraacute subdividido ou seja os planos coincidiratildeo

com os planos que delimitam o proacuteprio noacute Este teste foi implementado da

seguinte forma escolhe-se um surfel qualquer do noacute Calcula-se o produto

interno entre a normal deste surfel e as outras normais dos outros surfels deste

noacute Se algum produto interno for menor que zero este noacute natildeo seraacute subdividido

Apoacutes a etapa de subdivisatildeo classificam-se os oito cantos deste noacute como

dentro ou fora do modelo por meio da classificaccedilatildeo de um ponto que

descreveremos na sub-seccedilatildeo 5111

Melhorias Propostas 50

a b

c d

Figura 21-O noacute a eacute classificado pelo noacute c o noacute d tambeacutem eacute classificado pelo noacute c a classificaccedilatildeo do noacute a eacute propagada para o noacute b

Jaacute os noacutes vazios da octree seratildeo classificados como ldquodentrordquo ou ldquoforardquo do

modelo da seguinte forma cada noacute folha vazio eacute classificado a partir de um de

seus irmatildeos vizinhos adjacentes Se ele possuir um vizinho adjacente cheio ele

seraacute classificado por este vizinho se natildeo possuir os vizinhos adjacentes seratildeo

classificados primeiro e ele teraacute esta mesma classificaccedilatildeo (Figura 21) Como tem

que existir sempre pelo menos um noacute cheio entre os filhos de um noacute pai entatildeo

sempre esta classificaccedilatildeo poderaacute ser feita Com a classificaccedilatildeo de todos os

filhos tem-se tambeacutem a classificaccedilatildeo dos cantos do noacute pai

Mf03c003fmx a b

Figura 22-Os cantos a e b do noacute cheio possuem a mesma classificaccedilatildeo fora do modelo Esta classificaccedilatildeo foi dada ao noacute vazio adjacente

Melhorias Propostas 51

Para classificar um noacute vazio por meio de um noacute cheio verificam-se os

cantos comuns destes dois noacutes se todos os cantos tiverem a mesma

classificaccedilatildeo esta seraacute dada ao noacute vazio (Figura 22) Se houver classificaccedilotildees

diferentes escolhe-se o surfel do noacute cheio mais proacuteximo ao noacute vazio faz-se o

produto interno entre a normal deste surfel e o vetor que liga o centro do noacute

cheio ao centro do noacute vazio (ou o vetor que liga o surfel ao centro do noacute vazio)

Se o produto interno for maior que zero o noacute eacute classificado como ldquoforardquo senatildeo eacute

classificado como ldquodentrordquo Para encontrar o surfel (pertencente a um noacute cheio)

mais proacuteximo ao noacute vazio existem dois casos

- O noacute cheio eacute folha percorre-se toda a lista de surfels e escolhe o surfel

mais proacuteximo da fronteira entre o noacute cheio e o vazio

- O noacute cheio natildeo eacute um noacute folha percorrem-se os filhos do noacute cheio ou seja

esta pesquisa eacute feita descendo na octree a partir do noacute cheio procurando o

surfel mais proacuteximo agrave fronteira do pai com o noacute vazio a ser classificado

Classificando o centro do noacute vazio todo o noacute deve ter a mesma

classificaccedilatildeo pois este noacute natildeo conteacutem surfels Para encontrar o surfel do noacute

vazio mais proacuteximo da fronteira entre o noacute cheio e o vazio basta testar o valor da

coordenada se a fronteira eacute o lado direito do noacute cheio escolhe-se o surfel com

maior coordenada lsquoxrsquo se eacute o lado esquerdo escolhe-se o surfel com menor lsquoxrsquo

se lado superior surfel com maior lsquoyrsquo etc A seguir apresentamos a classificaccedilatildeo

de um ponto qualquer pertencente a um noacute cheio

Figura 23- Quadtree classificada

Melhorias Propostas 52

5111 Classificaccedilatildeo de um ponto de um noacute cheio

Figura 24 [2] A normal n eacute a normal meacutedia e os surfels s1 e s2 juntamente com a normal

n definem as retas que dividem o noacute O ponto a estaacute fora do modelo e o ponto b estaacute

dentro do modelo

Para um ponto localizado dentro do noacute faz-se o seguinte teste se o noacute foi

dividido testa-se de acordo com a divisatildeo do noacute se o ponto estaacute na parte do noacute

que estaacute dentro do modelo ele eacute classificado como ldquodentrordquo se o ponto estaacute na

parte que estaacute fora do modelo ele eacute classificado como ldquoforardquo (Figura 24) se o

ponto estaacute na parte que conteacutem os surfels encontra-se o surfel s pertencente ao

noacute mais proacuteximo do ponto e o classifica de acordo com s seja ns a normal em s

cs a coordenada de s cp a coordenada do ponto Se (cp - cs )٠ ns gt 0 o ponto

seraacute classificado como ldquoforardquo Senatildeo seraacute classificado como ldquodentrordquo

Se o noacute natildeo foi dividido em planos esta classificaccedilatildeo a partir do surfel

mais proacuteximo seraacute sempre feita

512 Teste DentroFora

Melhorias Propostas 53

Figura 25-Duas circunferecircncias e suas quadtrees correspondentes

O Teste DentroFora classifica os surfels de um modelo como dentro ou

fora de outro modelo ou na sua interseccedilatildeo Este teste foi aqui implementado

exatamente como foi proposto em Adams e Dutreacute [2] exceto que natildeo foi

implementado o meacutetodo TINN - Triangle Inequality Nearest Neighbour [19]

Cada octree eacute percorrida verificando-se se os seus noacutes ou surfels estatildeo dentro

fora ou no contorno do outro modelo (Figura 25) Sejam A e B duas octrees e

queremos classificar a octree A As duas octrees (AB) satildeo percorridas partindo

da raiz

Para cada noacute de A existem quatro casos (Figura 26) Para testar estas

situaccedilotildees os boxes dos noacutes satildeo aumentados de rmax o raio do maior surfel do

modelo Isto eacute feito para compensar o fato de que o surfel natildeo eacute apenas um

ponto mas sim considerado como um disco

Os quatro casos satildeo

Se o noacute de A natildeo intersecta B entatildeo todos os surfels deste noacute satildeo

classificados como fora

Se o noacute de A intersecta apenas noacutes de B que estatildeo fora do modelo

todos os surfels deste noacute satildeo fora

Se o noacute de A intersecta apenas noacutes de B que estatildeo dentro do modelo

todos os surfels deste noacute satildeo dentro

Melhorias Propostas 54

Se o noacute de A intersecta noacutes de B que estatildeo dentro e tambeacutem noacutes de B

que estatildeo fora testa-se se este noacute de A eacute ou natildeo folha Se natildeo for folha

percorre-se os filhos deste noacute de A ateacute encontrar um noacute folha cheio que

intersecta B Para cada surfel sa deste noacute folha de A encontra-se o surfel de B

mais proacuteximo e classifica-se a coordenada de sa da forma apresentada na seccedilatildeo

5111 Seja sb o surfel usado na classificaccedilatildeo de sa Se os discos de sb e sa

se intersectam sa eacute classificado como ldquointerseccedilatildeordquo

(a) (b)

(c) (d)

Figura 26- a modelos natildeo se intersectam b modelo intersecta noacutes fora c modelo intersecta apenas noacutes dentro d modelo intersecta noacutes dentro e noacutes fora

513 Criaccedilatildeo do modelo resultado

Um novo modelo eacute criado com os seguintes surfels (de acordo com a

operaccedilatildeo booleana escolhida pelo usuaacuterio - veja Regra 1 da seccedilatildeo 41)

Uniatildeo - surfels de A que estatildeo fora de B + surfels de B que estatildeo fora de A

Melhorias Propostas 55

Interseccedilatildeo - surfels de A que estatildeo dentro de B + surfels de B que estatildeo

dentro de A

Diferenccedila A-B - surfels de A que estatildeo fora de B + surfels de B que estatildeo

dentro de A (com orientaccedilatildeo invertida)

Como natildeo foi implementado tratamento especial algum de interseccedilatildeo para

o nosso plugin os surfels que se intersectam satildeo mantidos no modelo resultado

final sem modificaccedilotildees

Descrito o algoritmo vejamos a seguir a sua implementaccedilatildeo

52 Implementaccedilatildeo

Este algoritmo foi implementado na forma de um plugin para o software

PointShop 3D [11] Este plugin foi desenvolvido na linguagem C e no sistema

operacional Windows

A escolha deste tipo de implementaccedilatildeo permitiu-nos usar o software

PointShop para os testes do algoritmo Estes testes foram feitos com os modelos

disponibilizados para o PointShop [11] Nesta seccedilatildeo apresentaremos o software

PointShop e as principais estruturas de dados usadas em nosso plugin

O Pointshop eacute um software aberto com seu coacutedigo disponiacutevel e preparado

para trabalhar com plugins Eacute um software de ediccedilatildeo de modelos 3D por pontos

Ele permite aleacutem de visualizar o modelo alterar as suas caracteriacutesticas como

cor brilho e fazer mapeamento de textura iluminaccedilatildeo filtragem (Figura 27)

Melhorias Propostas 56

Figura 27-Software PointShop 3D com dois modelos carregados na sua cena

Aleacutem disso pode-se criar uma cena com vaacuterios modelos e visualizaacute-los de

qualquer ponto de vista Implementa o virtual trackball para rotacionaacute-los e

transladaacute-los Usa uma iluminaccedilatildeo simples direcional A sua arquitetura eacute

extensiacutevel permite que o usuaacuterio adicione seus proacuteprios componentes ao

sistema Possui trecircs tipos de componentes

ldquoToolsrdquo fornece funcionalidades para ediccedilatildeo interativa de superfiacutecie Satildeo

disponibilizados na ldquotoolbarrdquo

Plugins fornece funcionalidades para processar em um soacute passo

modelos ou partes deles selecionadas Satildeo disponibilizados no menu ldquoPluginsrdquo

Renderes fornece funcionalidades de display para os modelos

Para esta dissertaccedilatildeo foi escolhida a construccedilatildeo do componente Plugin

por adequar-se agrave nossa proposta e ser a mais simples de ser construiacuteda O

PointShop [11] jaacute conteacutem uma tool que executa operaccedilotildees booleanas e

deformaccedilatildeo free-form sobre os modelos carregados na cena usando o meacutetodo

de Pauly [3] apresentado no capiacutetulo 4 O nosso plugin Operaccedilotildees Booleanas

implementa o algoritmo descrito na seccedilatildeo anterior baseado na proposta de

Melhorias Propostas 57

Adams e Dutreacute [2] Uma comparaccedilatildeo entre o nosso plugin e a tool de Pauly [3] eacute

feita no capiacutetulo 6

Figura 28-Menu do PointShop com o plugin e as opccedilotildees para operaccedilotildees booleanas

Para se executar o plugin o usuaacuterio precisa carregar dois modelos na

cena do PointShop acionar o plugin informando a operaccedilatildeo que seraacute executada

O plugin executaraacute o algoritmo acima proposto e carregaraacute o resultado na cena

do Pointshop retirando os modelos anteriores

521 Estruturas de Dados

Como vimos o software PointShop [11] trabalha com modelos por pontos

Um modelo deste software descrito na seccedilatildeo 42 conteacutem todas as informaccedilotildees

que o algoritmo proposto em Bart [2] necessita Abaixo relacionamos as

Melhorias Propostas 58

principais estruturas de dados do PointShop usadas no plugin e as principais

estruturas de dados do nosso plugin

As principais classes do PointShop usadas no plugin satildeo

Classe Scene

Classe Objects

Classe SurfelColections

Classe Surfel

Classe StatusBar

Classe Transformer

A hierarquia de dados eacute a seguinte a Scene conteacutem vaacuterios Objects os

quais conteacutem SurfelColections Cada SurfelColections conteacutem Surfels que

suportam uma ou mais propriedades tais como cor difusa cor especular

Classe Scene Classe que representa uma cena que conteacutem modelos

Classe Object Um modelo eacute representado pela classe Object que

conteacutem uma SurfelCollection e as matrizes de transformaccedilatildeo para rotaccedilatildeo

escala e translaccedilatildeo Cada Object eacute identificado pelo seu nome que eacute uacutenico na

Scene O meacutetodo getUniqueName retorna um nome uacutenico Cada Object tem sua

proacutepria matriz de transformaccedilatildeo que pode ser modificada com setRotation

rotate setPosition translate setScale e scale Objects podem ser copiados com

copy Objects consiste em um conjunto de surfels os quais podem ser

recuperados pela getSurfelCollection O Object pode ser ativado com

setActiveObject e recuperado com getActiveObject

Objects podem ser adicionados ou removidos com addObject e

removeObject Os Objects podem ser obtidos pela getFirstObject e

getNextObject

Classe SurfelCollection representa o conjunto de surfels de um modelo

Cada surfelcollection consiste em um conjunto de surfels (SurfelInterface) de

tamanho obtido por getNofSurfels Os surfels podem ser recuperados com

getFirstSurfel getCurrentSurfel e getNextSurfel

A SurfelCollection conteacutem um PropertyDescriptor e uma SurfelList

A SurfelList eacute uma lista duplamente encadeada de surfels Possui os

atributos firstSurfel lastSurfel currentSurfel que satildeo ponteiros para uma

SurfelInterface nSurfels que eacute o nuacutemero de Surfels

A SurfelInterface define a API para os surfels que satildeo os menores

elementos que compotildeem um Object Podem ser considerados como pontos com

uma normal que define a orientaccedilatildeo do ciacuterculo (ou elipse) que seraacute desenhado

Melhorias Propostas 59

tatildeo logo o surfel seja renderizado Tem como atributos dois ponteiros (next e

prev) para SurfelInterface

PropertyDescriptor consiste em ateacute 32 valores descrevendo quais as

propriedades a SurfelInterface suporta

Classe Surfel classe que representa o surfel

Classe StatusBar classe que imprime mensagens na tela Os plugins

podem mandar mensagens para o usuaacuterio pela StatusBar

Mensagens texto podem ser impressas com showMessage O progresso

de uma operaccedilatildeo pode ser indicado com setProgress ou resetProgress

Classe Transformer representa a transformaccedilatildeo entre sistemas de

coordenadas Esta classe fornece meacutetodos para transformar pontos e vetores

entre os diferentes sistemas de coordenadas do Pointshop

A seguir apresentamos as principais estruturas de dados do plugin

Operaccedilotildees Booleanas

As principais estruturas de dados do plugin satildeo boundingbox tree no

lista_surfel surfel

Boundingbox conteacutem dois pontos 3D que definem uma caixa que conteacutem

o modelo um ponto com menores coordenadas xy e z e outro ponto com

maiores xyz

Tree representa a octree do modelo Cada registro conteacutem um ponteiro

para um noacute e oito ponteiros para as 8 octrees filhas

No representa um noacute da octree Conteacutem os seguintes dados

- localizaccedilatildeo do noacute que eacute o canto inferior esquerdo do noacute

- lista_surfel (preenchida apenas para noacutes folha cheios)

- quantidade de surfels do noacute

- classificaccedilatildeo do noacute como dentro fora ou contorno

- classificaccedilatildeo do noacute em relaccedilatildeo a outro modelo

- indica se o noacute eacute folha ou natildeo

- vetor que eacute a meacutedia das normais dos surfels do noacute

- ponto que eacute a meacutedia das localizaccedilotildees dos surfels do noacute

- surfel que tem (entre todos os surfels do noacute) o maior produto interno

entre a sua normal e a normal meacutedia

- surfel que tem (entre todos os surfels do noacute) o menor produto interno

entre a sua normal e a normal meacutedia

- produto interno maacuteximo e miacutenimo entre as normais dos surfels do noacute e a

normal meacutedia deste noacute

Melhorias Propostas 60

- indica se o noacute conteacutem surfels com normais em sentido oposto (produto

interno entre elas eacute menor que zero)

- classificaccedilatildeo dos oito cantos do noacute

lista_surfels lista em que cada registro conteacutem um apontador para um

surfel e um apontador para o proacuteximo registro

surfel representa o surfel da octree Conteacutem a classificaccedilatildeo em relaccedilatildeo a

outro modelo e um ponteiro para o surfel do Poinshop

Resultados 61

6 Resultados

Neste capiacutetulo apresentamos os testes realizados com o plugin para o

PointShop implementado para esta dissertaccedilatildeo a comparaccedilatildeo deste plugin com

o plugin de Pauly [3] e a comparaccedilatildeo entre o meacutetodo de Adams e Dutreacute [2] e o

meacutetodo de Pauly [3]

61 Testes

Os testes foram feitos em um PC x86 Family 6 261600 KB de RAM sem

placa graacutefica sistema operacional Windows 2000 O plugin foi implementado na

linguagem C

Os modelos usados para os testes satildeo modelos disponibilizados no

PointShop [11] Vale lembrar que o meacutetodo implementado em nosso plugin eacute

restrito a modelos soacutelidos e portanto foram usados apenas estes modelos

soacutelidos para os testes

O modelo na Figura 29 que eacute um dos modelos disponibilizados no

PointShop [11] foi usado para mostrar o resultado das operaccedilotildees realizadas

pelo plugin implementado nesta dissertaccedilatildeo O modelo Igea eacute um modelo soacutelido

que conteacutem 134345 surfels

Resultados 62

Figura 29-Modelo do PointShop Igea

Para realizar as operaccedilotildees este modelo foi carregado na cena do

PointShop duas vezes e um deles colorido de vermelho As Figuras 30 31 32

mostram o resultado da operaccedilatildeo de uniatildeo interseccedilatildeo e diferenccedila

respectivamente Os nuacutemeros de surfels dos modelos resultantes satildeo mostrados

na Tabela 2

Resultados 63

Figura 30-Resultado da uniatildeo de duas Igeas

Figura 31-Resultado da interseccedilatildeo de duas Igeas

Resultados 64

Figura 32-Resultado da diferenccedila entre duas Igeas

Tabela 2-Nuacutemero de surfels dos modelos resultantes

Observamos que o nuacutemero de surfels dos modelos resultantes estaacute

coerente com as figuras dos seus modelos

Para avaliar o tempo de processamento das operaccedilotildees foram realizados

vaacuterios testes com o objetivo de obter uma meacutedia dos tempos de realizaccedilatildeo de

cada operaccedilatildeo Tambeacutem foram armazenados os tempos da criaccedilatildeo das duas

octrees e da classificaccedilatildeo de todos os surfels dos dois objetos (como dentro ou

fora do outro modelo) Estes testes foram feitos usando o modelo Igea A meacutedia

dos tempos de processamento foi calculada e os resultados satildeo mostrados na

Tabela 3 Verificamos que o maior tempo gasto eacute para criaccedilatildeo das octrees

Verificamos tambeacutem que este resultado apresentado eacute similar ao resultado

verificado empiricamente com o plugin de Pauly [3] Os tempos gastos para

realizar as operaccedilotildees satildeo similares e o maior tempo gasto no plugin de Pauly

tambeacutem eacute para inicializaccedilatildeo de suas estruturas de dados que incluem a kd-tree

Operaccedilatildeo Nuacutemero de surfels do modelo resultado

Uniatildeo 189715

Interseccedilatildeo 72225

Diferenccedila 134552

Resultados 65

Operaccedilatildeo Criaccedilatildeo das

Octrees (seg)

Classificaccedilatildeo

(seg)

Criaccedilatildeo do

resultado (seg)

Total (seg)

Uniatildeo 39375 1324 18925 7154

Interseccedilatildeo 38585 1585 09547 63982

Diferenccedila 399875 1504 1729 729475

Tabela 3- Meacutedia dos tempos de processamento para as operaccedilotildees com duas Igeas

Com o objetivo de expor melhor os resultados deste trabalho

apresentamos abaixo mais um teste das operaccedilotildees booleanas usando o nosso

plugin Os modelos usados para este segundo teste satildeo o Max Planck e o Male

ambos modelos soacutelidos disponibilizados no PointShop Estes modelos satildeo

mostrados nas figura 33 e 34

O primeiro Max Planck conteacutem 52809 surfels

Figura 33-Modelo do PointShop MaxPlanck

O segundo modelo abaixo Male conteacutem 148138 surfels

Resultados 66

Figura 34-Modelo do PointShop Male

As Figuras 353637 mostram o resultado da operaccedilatildeo de uniatildeo interseccedilatildeo

e diferenccedila respectivamente usando os dois modelos acima Podemos observar

pela figura 35 que o resultado da operaccedilatildeo de diferenccedila neste caso gerou um

modelo resultado com trecircs partes desconexas Os nuacutemeros de surfels de cada

modelo resultado satildeo mostrados na Tabela 5

Figura 35- Resultado da Uniatildeo do modelo Male com MaxPlanck

Resultados 67

Figura 36-Resultado da interseccedilatildeo do modelo Male com o MaxPlanck

Figura 37-Resultado da diferenccedila do modelo Male do modelo MaxPlanck

As meacutedias de tempos de processamento foram calculadas da mesma

forma que o primeiro teste com o modelo Igea acima apresentado Os

resultados satildeo mostrados na Tabela 4 Podemos observar que este teste

Resultados 68

apresenta tempos um pouco menores que o teste com o modelo Igea Isto se

deve ao fato de que o modelo MaxPlanck ser significativamente menor que o

modelo Igea MaxPlanck possui 52809 surfels e Igea conteacutem 134345 surfels

Operaccedilatildeo Criaccedilatildeo das

Octrees (seg)

Classificaccedilatildeo

(seg)

Criaccedilatildeo do

resultado (seg)

Total

(seg)

Uniatildeo 3012 1254 102 5285

Interseccedilatildeo 2985 0901 0861 4747

Diferenccedila 2965 0911 0791 4667

Tabela 4-Tempo de processamento das operaccedilotildees com os modelos MaxPlanck e Male

Operaccedilatildeo Nuacutemero de surfels do resultado

Uniatildeo 126532

Interseccedilatildeo 88414

Diferenccedila 77635

Tabela 5-Nuacutemero de surfels dos modelos resultados das operaccedilotildees com os modelos MaxPlanck e Male

Em seguida apresentaremos uma comparaccedilatildeo entre o nosso plugin e o

plugin de Pauly[3] e tambeacutem uma comparaccedilatildeo entre o meacutetodo de Adams e Dutreacute

[2] e o meacutetodo de Pauly [3]

62 Comparaccedilatildeo entre os dois meacutetodos que realizam operaccedilotildees booleanas

A comparaccedilatildeo entre os meacutetodos de Pauly[3] e de Adams e Dutreacute foi feita

em termos de tempo de processamento e em termos conceituais Em termos de

tempo de processamento comparamos o plugin de Pauly[3] com o nosso plugin

Em termos de tempo de processamento verifica-se empiricamente que os

dois meacutetodos apresentam tempos bastante similares Entretanto o tempo de

processamento do algoritmo aqui implementado ainda pode ser melhorado com

Resultados 69

o uso do meacutetodo TINN [19] que foi proposto em Adams[2] - para otimizar a

pesquisa do surfel mais proacuteximo a um ponto que estaacute localizado na regiatildeo de um

noacute que conteacutem surfels - veja seccedilatildeo 42 O uso deste meacutetodo natildeo foi

implementado para este trabalho e a sua implementaccedilatildeo melhoraria o tempo de

resposta do algoritmo Aleacutem disso o trabalho de Sara F Frisken [12] citado no

capiacutetulo 2 apresenta uma otimizaccedilatildeo no uso de octrees que pode ser

incorporada no algoritmo implementado neste trabalho

Em termos conceituais vamos fazer a comparaccedilatildeo do uso do que

chamamos aqui de Regra 2 do tratamento de interseccedilatildeo e do tratamento de

ldquoarestas vivasrdquo

Como vimos na seccedilatildeo 41 tanto o algoritmo implementado nesta

dissertaccedilatildeo baseado no trabalho de Adams e Dutreacute como o meacutetodo de Pauly

[3] parte do que chamamos aqui de Regra 2 para realizar operaccedilotildees booleanas

com pontos Mas cada um destes meacutetodos daacute um tratamento diferente para o

uso desta regra

O meacutetodo de Pauly usa a Regra 2 para classificaccedilatildeo de cada ponto ou de

cada surfel Para classificar um surfel de B sb como dentro ou fora de A eacute

encontrado o surfel de A sa mais proacuteximo a sb e sb eacute classificado a partir de sa

Para encontrar sa Pauly utiliza uma kd-tree Como esta pesquisa para encontrar

sa eacute cara (mesmo usando uma kd-tree) Pauly utiliza uma esfera que conteacutem

pontos com a mesma classificaccedilatildeo (seccedilatildeo 432) e diminui em 90 este nuacutemero

de pesquisas Pauly utiliza tambeacutem a representaccedilatildeo impliacutecita MLS (Moving Least

Squares) para casos em que a Regra 2 poderia falhar e para tratamento de

interseccedilotildees Entretanto o nuacutemero destes casos em que a Regra 2 poderia falhar

eacute muito pequeno E a representaccedilatildeo MLS natildeo eacute uma estrutura simples de ser

implementada Portanto natildeo encontramos vantagens em usar MLS para estes

casos O meacutetodo de Adams e Dutreacute natildeo trata estes casos e na praacutetica

apresenta resultados bastante satisfatoacuterios como foi mostrado Portanto

consideramos que valeria a pena fazer algum tratamento especial para estes

casos se fosse um procedimento simples Para a execuccedilatildeo do algoritmo de

Pauly o uso de MLS natildeo interfere significativamente porque a construccedilatildeo desta

representaccedilatildeo natildeo eacute feita somente para realizar operaccedilotildees booleanas Os testes

empiacutericos que fizemos com o algoritmo de Pauly natildeo incluem a construccedilatildeo desta

representaccedilatildeo

Aparentemente os dois algoritmos satildeo bastante parecidos um usa octrees

e o outro usa kd-tree As duas estruturas de dados satildeo simples e otimizam a

classificaccedilatildeo dos surfels de um modelo como dentro ou fora do outro modelo

Resultados 70

Mas existe uma diferenccedila conceitual entre dois que merece ser destacada O

algoritmo aqui implementado usa a Regra 2 para classificaccedilatildeo dos noacutes de uma

octree e armazena esta octree classificada (ver capiacutetulo 5) Assim na maioria dos

casos natildeo seraacute necessaacuterio encontrar o surfel mais proacuteximo para classificar um

ponto (ou um surfel) como fora ou dentro de um modelo Caso o ponto esteja em

uma aacuterea da octree classificada ele teraacute a classificaccedilatildeo dada agravequela aacuterea A

pesquisa ao surfel mais proacuteximo seraacute feita apenas nos casos em que o ponto a

ser classificado estaacute localizado entre os planos que subdividem um noacute cheio

O uso desta octree classificada levanta uma questatildeo que natildeo foi citada no

trabalho de Adams e Dutreacute que eacute a proximidade desta estrutura (armazenada)

de octree classificada com uma representaccedilatildeo volumeacutetrica do objeto Sendo

assim esta estrutura pode ser aproveitada para outras funccedilotildees aleacutem da

classificaccedilatildeo dos surfels Por exemplo podemos ter uma aproximaccedilatildeo do

volume de uma cena somando os volumes aproximados dos modelos que a

compotildeem Como o enfoque deste trabalho eacute operaccedilatildeo booleana natildeo vamos nos

aprofundar nesta questatildeo

Outra importante diferenccedila entre os dois trabalhos que jaacute foi explicada na

seccedilatildeo 432 eacute que o meacutetodo de Pauly aplica-se a modelos soacutelidos ou natildeo

soacutelidos enquanto que o meacutetodo de Adams e Dutreacute aplica-se somente a modelos

soacutelidos

Quanto ao tratamento de interseccedilatildeo em termos de visualizaccedilatildeo todos os

dois resolvem bem o problema O tratamento de interseccedilatildeo nos dois trabalhos

tambeacutem resolve o problema da validade da Regra 2 (ver seccedilatildeo 44) Entretanto

o tratamento de Adams e Dutreacute natildeo depende da renderizaccedilatildeo sendo portanto

mais portaacutevel Aleacutem disso uma desvantagem do meacutetodo de Pauly eacute o uso da

representaccedilatildeo impliacutecita MLS (ldquoMoving Least Squaresrdquo) do objeto para obter os

pontos exatamente na curva de interseccedilatildeo Esta representaccedilatildeo torna o

tratamento de interseccedilatildeo mais complexo e a vantagem apresentada natildeo eacute tatildeo

significativa para este tratamento de interseccedilatildeo

Conclusatildeo 71

7 Conclusatildeo

Concluiacutemos entatildeo que as escolhas de Adams e Dutreacute por usar uma

octree classificada e pelo tratamento dado agrave interseccedilatildeo satildeo mais abrangentes

que a escolha de Pauly E consideramos que quanto mais abrangente for uma

escolha conceitual mais resultados poderemos tirar dela No caso de Adams e

Dutreacute eles estendem o problema de classificar um ponto para classificar todo o

modelo Como foi citado ele quase fornece uma representaccedilatildeo volumeacutetrica do

modelo Esta aproximada representaccedilatildeo volumeacutetrica pode nos fornecer outras

informaccedilotildees como por exemplo o volume aproximado do modelo

Aleacutem disso o uso da representaccedilatildeo impliacutecita MLS no meacutetodo de Pauly cria

uma complexidade a mais para o meacutetodo sem apresentar vantagens para a

realizaccedilatildeo de operaccedilotildees booleanas que eacute o nosso enfoque

Logo podemos dizer que o meacutetodo de Adams e Dutreacute apresenta as

seguintes vantagens em relaccedilatildeo ao de Pauly

- a estrutura de octree classificada aleacutem de ser usada para classificaccedilatildeo

fornece informaccedilotildees adicionais como volume aproximado do objeto

- o tempo de processamento no meacutetodo de Adams e Dutreacute tende a ser

melhor que no meacutetodo de Pauly se implementadas as melhorias acima citadas e

se colocaacutessemos em consideraccedilatildeo o uso da representaccedilatildeo impliacutecita MLS

(Moving Least Squares)

- o tratamento de interseccedilatildeo de Adams e Dutreacute apresenta a vantagem da

portabilidade ou seja iraacute funcionar independente do algoritmo de renderizaccedilatildeo

utilizado

E as vantagens do meacutetodo de Pauly em relaccedilatildeo ao de Adams e Dutreacute

- a colocaccedilatildeo de surfels exatamente na curva de interseccedilatildeo

- a possibilidade de trabalhar com modelos soacutelidos ou natildeo soacutelidos

E finalizando concluiacutemos que o estudo relatado nesta dissertaccedilatildeo foi

importante por

- fornecer um breve estudo sobre modelagem por pontos uma nova e

promissora aacuterea dentro da computaccedilatildeo graacutefica

Conclusatildeo 72

- por apresentar uma avaliaccedilatildeo dos dois trabalhos existentes sobre

operaccedilotildees booleanas com pontos encontrando as vantagens de cada um

e levantando questotildees que natildeo tinham sido citadas nos trabalhos originais

- por propor e implementar melhorias ao trabalho de Adams e Dutreacute

71 Trabalhos Futuros

Nossa implementaccedilatildeo pode ser ainda evoluiacuteda com as propostas

apresentadas na seccedilatildeo 62 Como observamos o tempo de processamento do

algoritmo aqui implementado ainda pode ser melhorado com o uso do meacutetodo

TINN [19] - que foi proposto em Adams[2] - para otimizar a pesquisa do surfel

mais proacuteximo a um ponto que estaacute localizado na regiatildeo de um noacute que conteacutem

surfels Aleacutem disso o trabalho Simple and Efficient Trasversal Methods for

Quadtrees and Octrees de Sara F Frisken [12] citado no capiacutetulo 2 apresenta

uma otimizaccedilatildeo no uso de octrees Outra proposta para melhorar o tempo de

processamento do algoritmo aqui implementado eacute usar a forma de trabalhar com

octrees apresentada neste trabalho

O trabalho de Adams e Dutreacute [2] eacute aplicado apenas a objetos soacutelidos O

nosso plugin portanto aplica-se somente a este tipo de objeto Jaacute o trabalho de

Pauly[3] eacute aplicado tambeacutem a modelos natildeo soacutelidos Apresentamos como

proposta a um trabalho futuro a extensatildeo do algoritmo aqui implementado para

modelos natildeo soacutelidos O surfel pode conter uma informaccedilatildeo adicional que indica

se ele estaacute delimitando um volume ou natildeo Assim pode-se ter um modelo com

ldquopartes soacutelidasrdquo e ldquopartes natildeo soacutelidasrdquo Por exemplo a uniatildeo de um plano com

uma esfera poderia resultar numa esfera com ldquoabasrdquo (seriam as partes do plano

que estariam fora da esfera) O modelo resultado teria uma parte correspondente

a um espaccedilo 3D (esfera) e outra parte que seria uma superfiacutecie 2D posicionada

no espaccedilo 3D sem delimitar algum volume (abas)

Muitos trabalhos podem ser desenvolvidos aplicando-se o modelo por

pontos em animaccedilatildeo jogos visualizaccedilatildeo de terrenos criaccedilatildeo de protoacutetipos etc

considerando-se a eficiecircncia e simplicidade do modelo E mais especificamente

as operaccedilotildees booleanas com pontos podem ser aplicadas para criaccedilatildeo de

cenaacuterios testes de colisotildees e nestes casos a representaccedilatildeo usando octrees

pode ser mais explorada considerando-se o seu potencial de representaccedilatildeo

volumeacutetrica de um objeto

Referecircncias Bibliograacuteficas 73

8 Referecircncias Bibliograacuteficas

[1] MAumlNTYLAuml M An Introduction to Solid Modeling Computer Science Press 1988

[2] ADAMS B DUTREacute P Interactive Boolean Operations on Surfel-

Bounded Solids Proceedings of SIGGRAPH 2003 San Diego USA 2003

[3] PAULY M KEISER R KOBBELT L GROSS M Shape Modeling

with Point-Sampled Geometry SIGGRAPH 2003 Computer Graphics

Proceedings Annual Conference Series ACM Press ACM SIGGRAPH 2003

[4] LEVOY M WHITTED T The Use of Points as Display Primitives

Technical Report TR 85-022 The University of North Carolina at Chapel Hill

Department of Computer Science 1985

[5] PFISTER H ZWICKER M VAN BAAR J GROSS M 2000 Surfels

Surface Elements as Rendering Primitives SIGGRAPH 2000 pp 335ndash342 New

Orleans LA July 23-28 2000

[6] ZWICKER M PFISTER H VAN BAAR J GROSS M Surface

Splatting SIGGRAPH 2001

[7] PAULY M KOBBELT L GROSS M Multiresolution Modeling of

Point-Sampled Geometry CS Techinical Report 378 September 16 2002

[8] CURLESS B New Methods for Surface Reconstruction from Range Images PhD thesis Stanford University 1997

[9] RUSINKIEWICZ S Real-time Acquisition and Rendering of Large 3D Models PhD thesis Stanford University 2001

Referecircncias Bibliograacuteficas 74

[10] AMENTA N BERN M KAMVYSSELIS M A new Voronoi-Based

Surface Reconstruction Algorithm SIGGRAPH 98 Conference proceedings pp

415-421 New York 1998

[11] ZWICKER M PAULY M KNOLL O GROSS M Pointshop 3D an

Interactive System for Point-Based Surface Editing Proceedings of SIGGRAPH 2002 San Antonio TX July 2002

[12] FRISKEN S PERRY R Simple and Efficient Traversal Methods for

Quadtrees and Octrees Journal of Graphics Tools Vol 7 Issue 3 May 2003

[13] CORREcircA W T OLIVEIRA M M Silva C T Wang J

Modeling and Rendering of Real Environments

Revista de Informaacutetica Teoacuterica e Aplicada (Brazilian Journal of Theoretic and Applied Computing) 9(2)127-156 2002

[14] DAVIS J MARSCHNER S GARR M LEVOY M Filling Holes in

Complex Surfaces Using Volumetric Diffusion First International Symposium on 3D Data Processing Visualization Transmission June 2002

[15] RAumlSAumlNEN J Surface Splatting Theory Extensions and Implementation Masterrsquos Thesis Dept of Computer Science Helsinki

University of Technology May 28 2002

[16] PAULY M Point Primitives for Interactive Modeling and Processing of 3D Geometry PhD thesis Federal Institute of Technology (ETH)

of Zurich 2003

[17] HOPPE H DEROSE T DUCHAMP T MCDONALD J

STUELZLE W Surface Reconstruction from Unorganized Points Computer Graphics 26(2)71ndash78 July 1992

[18] ALEXA M BEHR J COHEN-OR D FLEISHMAN S LEVIN D

SILVA C T Point Set Surfaces IEEE Visualization 2001 pp 21ndash28 October

2001

Referecircncias Bibliograacuteficas 75

[19] GREENSPAN M GODIN G TALBOT J Acceleration of Binning

Nearest Neighbor Methods Proceedings of Vision Interface 2000 pp 337-

344

[20] MENCL R Reconstruction of Surfaces from Unorganized Three-Dimensional Point Clouds Dissertation Dortmund Univ 2001

[21] KRIVANEK J Representing and Rendering Surfaces With Points

httpciteseernjneccomkrivanek03representinghtml Acesso em 30 jul

2003

[22] KRISTJANSSON ET AL Approximate Boolean Operations on Free-

form Solids Proceedings of SIGGRAPH 01 2001

Operaccedilotildees Booleanas com Pontos 35

Figura 9-Um objeto representado por pontos com suas normais e sua quadtree correspondente classificada os noacutes cinza claro estatildeo dentro do modelo noacutes cinza mais escuro estatildeo fora do modelo e noacutes com cinza intermediaacuterio satildeo noacutes cheios noacutes que conteacutem pontos

O noacutes que conteacutem surfels satildeo classificados como ldquocontornordquo Para

classificar um noacute vazio existem trecircs casos

o noacute vazio tem apenas um vizinho-irmatildeo natildeo vazio

o noacute vazio tem mais de um vizinho-irmatildeo natildeo vazio

o noacute vazio natildeo tem vizinhos-irmatildeos natildeo vazios

No primeiro caso o noacute vazio eacute classificado pelo seu vizinho natildeo vazio No

segundo caso considera-se qualquer um dos vizinhos natildeo vazios No terceiro

caso classifica-se primeiro os noacutes vizinhos e eacute dada a mesma classificaccedilatildeo para

o noacute vazio Como cada noacute natildeo folha de uma octree tem pelo menos um noacute filho

natildeo vazio sempre pode ser feita a classificaccedilatildeo dos noacutes vazios A classificaccedilatildeo

eacute feita da seguinte forma dentre os surfels do vizinho-irmatildeo escolhido encontra-

se o surfel mais proacuteximo ao noacute a ser classificado Se a normal deste surfel

aponta para o noacute vazio a ser classificado entatildeo ele eacute classificado como ldquoforardquo

Se a normal aponta no sentido contraacuterio entatildeo ele eacute classificado como ldquodentrordquo

De maneira mais formal sejam cv e cc coordenadas dos centros do noacute vazio e

do noacute contorno respectivamente Seja s o surfel mais proacuteximo ao noacute vazio e ns

a normal em s Se ( cv - cc )٠ ns gt 0 ( produto interno entre a normal em s e o

vetor cv - cc for maior que zero ) o noacute vazio seraacute classificado como ldquoforardquo

Senatildeo seraacute classificado como ldquodentrordquo

Em geral os noacutes ldquocontornordquo satildeo subdivididos em trecircs partes uma que estaacute

fora do modelo uma que estaacute dentro do modelo e uma terceira que conteacutem os

surfels Esta subdivisatildeo eacute feita por meio da criaccedilatildeo de dois planos paralelos que

Operaccedilotildees Booleanas com Pontos 36

dividem o noacute Para determinar estes planos calcula-se o vetor nm igual agrave

meacutedia das normais dos surfels do noacute nm = sum ns sum ns onde ns eacute a normal de

cada surfel do noacute

Em seguida encontra-se o surfel com maior produto interno entre a sua

normal e a normal meacutedia d1=Max(nm ٠ ns) Este surfel juntamente com a normal

meacutedia define um dos planos Encontra-se tambeacutem o surfel com menor produto

interno entre a sua normal e a normal meacutedia d2=Min(nm ٠ ns) Este surfel

juntamente com a normal meacutedia define o outro plano A Figura 10 mostra a

divisatildeo de um noacute de uma quadtree nas trecircs partes dentro do modelo fora do

modelo e no ldquocontornordquo

Esta subdivisatildeo aplica-se apenas a noacutes que conteacutem surfels cujas direccedilotildees

natildeo variem em mais de 90 graus Caso isso ocorra ele natildeo seraacute subdividido Ou

seja se um noacute possuir dois vetores normais (de dois surfels diferentes) que

formem um acircngulo maior que 90 graus ele natildeo seraacute subdividido

Figura 10 [2] -Divisatildeo de noacute de contorno a parte agrave esquerda estaacute fora do modelo a parte agrave direita estaacute dentro do modelo e a faixa intermediaacuteria conteacutem os surfels

4222 Teste Dentro-Fora

O Teste Dentro-Fora faz a classificaccedilatildeo dos surfels de um modelo como

ldquodentrordquo ou ldquoforardquo de outro modelo Portanto aplicaremos este mesmo teste duas

vezes uma para o modelo S1 em relaccedilatildeo ao modelo S2 e outra para S2 em

relaccedilatildeo a S1 Vamos mostrar o teste Dentro-Fora para o caso da classificaccedilatildeo

dos surfels do modelo S1 em relaccedilatildeo a S2

Operaccedilotildees Booleanas com Pontos 37

No item anterior foram criadas duas octrees uma para o modelo S1 e

outra para o modelo S2 Chamemos de A e B as octrees de S1 e S2

respectivamente Para classificar S1 em relaccedilatildeo a S2 inicialmente eacute feita uma

avaliaccedilatildeo da posiccedilatildeo de A em relaccedilatildeo a B A e B podem estar nas seguintes

situaccedilotildees

- A natildeo intersecta B

- A intersecta apenas noacutes ldquoforardquo de B

- A intersecta apenas noacutes ldquodentrordquo de B

- A intersecta noacutes ldquoforardquo e noacutes ldquodentrordquo de B

Para testar estas situaccedilotildees os noacutes satildeo aumentados de rmax o raio do

maior surfel do modelo soacutelido Isto eacute feito para compensar o fato de que o surfel

natildeo eacute apenas um ponto mas sim considerado como um disco

No primeiro e no segundo caso todos os surfels de A satildeo classificados

como ldquoforardquo No terceiro caso todos os surfels de A satildeo classificados como

ldquodentrordquo

No quarto caso temos que percorrer a octree A Comeccedilando pelo noacute raiz

percorre-se os filhos deste noacute Para cada filho os quatro testes acima satildeo feitos

Se o noacute filho encontra-se em um dos trecircs primeiros casos a classificaccedilatildeo eacute dada

como foi citada acima Se um filho estaacute no quarto caso e natildeo eacute um noacute folha

repete-se recursivamente o mesmo procedimento para seus filhos ateacute encontrar-

se um noacute folha Para um noacute que estaacute no quarto caso e eacute folha percorre-se a lista

de surfels que este noacute conteacutem classificando cada um destes surfels Seja sa um

surfel desta lista Para este caso percorre-se a octree B para classificar sa

Primeiramente encontramos o noacute de B que conteacutem sa Se este noacute de B foi

dividido testa-se de acordo com esta divisatildeo do noacute se o surfel sa estaacute na parte

do noacute que estaacute dentro do modelo ele eacute classificado como ldquodentrordquo se sa estaacute na

parte que estaacute fora do modelo ele eacute classificado como ldquoforardquo se sa estaacute na parte

intermediaacuteria ou se o noacute de B natildeo foi subdividido em planos encontra-se sb que

eacute o surfel pertencente a este noacute de B que estaacute mais proacuteximo de sa sa seraacute

entatildeo classificado de acordo com sb Se ( sa - sb )٠ nb gt 0 sa eacute classificado

como ldquoforardquo senatildeo eacute classificado como ldquodentrordquo Se os discos de sb e sa se

intersectam sa eacute marcado como interseccedilatildeo Para encontrar sb o algoritmo

implementa o meacutetodo TINN ndash Triangle Inequality Nearest Neighbour [19]

Operaccedilotildees Booleanas com Pontos 38

4223 Tratamento da interseccedilatildeo

Os surfels de A que intersectam surfels de B satildeo classificados como

ldquointerseccedilatildeordquo Se eles natildeo forem incluiacutedos no modelo resultado o soacutelido resultado

teraacute buracos Se eles forem incluiacutedos sem algum tratamento eles natildeo

representaratildeo adequadamente a regiatildeo Em geral o surfel sa (um surfel

ldquointerseccedilatildeordquo de A) eacute dividido em dois pelo plano que conteacutem o surfel sb (surfel de

B que sa intersecta) uma parte que estaacute fora de B e outra que estaacute dentro de B

Dependendo da operaccedilatildeo que estaacute sendo realizada vamos querer manter uma

destas partes do surfel sa no modelo resultado Seja xa a posiccedilatildeo do surfel sa e o

surfel sa uma circunferecircncia de centro xa e raio ra igual ao raio de alcance de sa

O plano que conteacutem o surfel sb define uma corda desta circunferecircncia como

mostra a Figura 11 O surfel sa seraacute substituiacutedo por um surfel menor que

ultrapassa esta corda de uma distacircncia e definida pelo usuaacuterio Para cobrir

completamente a interseccedilatildeo seratildeo adicionados surfels menores que cruzam a

corda de interseccedilatildeo

Figura 11 -Interseccedilatildeo do surfel s e do plano que passa pelo surfel t o surfel mais proacuteximo a s O surfel s eacute substituiacutedo por trecircs surfels menores

Operaccedilotildees Booleanas com Pontos 39

O tratamento de interseccedilatildeo proposto por Adams e Dutreacute [2] natildeo soacute evita

os buracos mas tambeacutem cria uma forma de renderizaccedilatildeo de arestas vivas A

colocaccedilatildeo de vaacuterios pequenos surfels na regiatildeo da interseccedilatildeo permite esta

correta renderizaccedilatildeo das ldquoarestas vivasrdquo Desta forma o problema das arestas

vivas eacute resolvido na modelagem (Figura 12) A vantagem de se resolver o caso

na modelagem eacute que natildeo eacute necessaacuterio fazer um tratamento especial na

renderizaccedilatildeo para que mostre esta aresta viva Diferente do tratamento feito

em Pauly (seccedilatildeo 431) que resolve esta questatildeo em tempo de renderizaccedilatildeo

Aleacutem disso o tratamento resolve alguns casos onde a Regra 2 poderia falhar

(veja em Validade da Regra 2-seccedilatildeo 44)

Figura 12 [2] -Agrave direita eacute mostrado o resultado do tratamento de interseccedilatildeo para o caso de Arestas Vivas do objeto agrave esquerda

43 Meacutetodo de Pauly

O meacutetodo aplica-se a objetos soacutelidos e natildeo soacutelidos Os modelos podem ser

obtidos a partir de diferentes entradas como nuvem de pontos irregulares ou por

meio de scanners 3D Cria um modelo hiacutebrido destes objetos usa o modelo por

pontos juntamente com a representaccedilatildeo impliacutecita Moving Least Squares - MLS

[18] Realiza operaccedilotildees booleanas com pontos e utiliza adicionalmente MLS

para alguns casos de classificaccedilatildeo de surfels e no tratamento de interseccedilatildeo A

seguir apresentamos as caracteriacutesticas do modelo por pontos deste meacutetodo e o

algoritmo que realiza as operaccedilotildees

Operaccedilotildees Booleanas com Pontos 40

431 Modelo em Pauly

O modelo eacute uma estrutura hiacutebrida de pontos com a representaccedilatildeo impliacutecita

Moving Least Squares - MLS [18] Esta estrutura eacute usada para fazer operaccedilotildees

booleanas e tambeacutem operaccedilotildees de free-form (natildeo abordadas nesta

dissertaccedilatildeo) Para operaccedilotildees booleanas a representaccedilatildeo MLS permite que a

curva de interseccedilatildeo entre os modelos seja reconstruiacuteda e surfels sejam

colocados nesta curva e em alguns casos de classificaccedilatildeo de surfels mostrados

na seccedilatildeo 432 Para este modelo natildeo existem restriccedilotildees quanto agrave forma do

objeto

Os surfels contecircm informaccedilotildees sobre sua posiccedilatildeo e sua normal Aleacutem

disso surfels podem conter informaccedilotildees adicionais como textura cor

propriedades de materiais

A distribuiccedilatildeo dos surfels eacute natildeo-uniforme e a amostragem eacute

aproximadamente adequada (Veja seccedilatildeo 44)

432 Algoritmo de Operaccedilotildees Booleanas

O algoritmo classifica surfels de um modelo como ldquodentrordquo ou ldquoforardquo de

outro modelo Antes de colocarmos como eacute feita esta classificaccedilatildeo devemos

acrescentar que Pauly estende esta classificaccedilatildeo para modelos que natildeo satildeo

soacutelidos Ou seja mesmo um modelo natildeo soacutelido divide o espaccedilo da cena (espaccedilo

em que se encontra o modelo) em dois sub-espaccedilos dentro ou fora do modelo

Pauly faz esta subdivisatildeo da seguinte forma

Como a superfiacutecie que determina o modelo eacute orientada (conteacutem vetores

normais agrave superfiacutecie que apontam para ldquoforardquo do modelo) Pauly considera que

um modelo natildeo soacutelido divide o espaccedilo em dois sub-espaccedilos um ldquoforardquo do

modelo (os vetores normais apontam para este sub-espaccedilo) e um que estaacute

ldquodentrordquo do modelo (os vetores normais apontam para direccedilatildeo oposta a este sub-

espaccedilo) Por exemplo um plano eacute representado como um conjunto de surfels

contidos num determinado espaccedilo geomeacutetrico plano π Cada surfel conteacutem um

vetor normal direcionado Este modelo divide entatildeo o espaccedilo em dois sub-

espaccedilos o sub-espaccedilo que eacute apontado por estes surfels (considerado ldquoforardquo do

modelo) e o sub-espaccedilo que estaacute na direccedilatildeo oposta (considerado ldquodentrordquo do

modelo) Desta forma ele aplica as classificaccedilotildees de ldquodentrordquo e ldquoforardquo de um

modelo tambeacutem a modelos natildeo soacutelidos A partir desta consideraccedilatildeo as

Operaccedilotildees Booleanas com Pontos 41

operaccedilotildees booleanas satildeo realizadas com os modelos natildeo soacutelidos da mesma

forma que com os modelos soacutelidos

Para determinar esta classificaccedilatildeo (dentro ou fora do modelo) Pauly utiliza

a Regra 2 Para pesquisa do surfel mais proacuteximo o meacutetodo usa a estrutura Kd-

tree [16] e tambeacutem o algoritmo ANN [16] No entanto o meacutetodo apresenta uma

restriccedilatildeo da Regra 2 ela soacute deve ser usada para classificaccedilotildees de pontos x se

a distacircncia x-p for maior que o espaccedilamento da amostragem local ηp em p

Este espaccedilamento da amostragem local ηp em p eacute um caacutelculo aproximado da

distacircncia meacutedia entre os surfels vizinhos a p Se x estaacute muito proacuteximo agrave

superfiacutecie a classificaccedilatildeo pode falhar Neste caso ele calcula o ponto exato de

S mais proacuteximo a x usando a projeccedilatildeo MLS (ldquoMoving Least Squaresrdquo)

Por questotildees de melhoria de desempenho utiliza-se o fato de que sendo

Ωp (x) a classificaccedilatildeo do ponto x em relaccedilatildeo agrave amostragem P tem-se que Ωp (x)

= Ωp (xrsquo) para todos os pontos de xrsquo que estatildeo dentro da esfera de centro x e

raio igual a x-p - ηp (onde p eacute o surfel mais proacuteximo e ηp eacute o espaccedilamento

local da amostragem em p acima citado) Ou seja sendo x um ponto qualquer p

o surfel mais proacuteximo a x ηp eacute o espaccedilamento local da amostragem em p se

desenharmos uma esfera com centro x e raio igual a x-p - ηp temos que

todos os pontos xrsquo que estatildeo dentro da esfera teratildeo a mesma classificaccedilatildeo de x

Desta forma o nuacutemero de vezes que a classificaccedilatildeo eacute feita (pesquisando-se o

surfel mais proacuteximo ao ponto e usando a Regra 2) diminui em ateacute 90 Assim

em geral a classificaccedilatildeo de um surfel eacute obtida a partir do seu surfel vizinho

Dados

S1 a superfiacutecie MLS de contorno que define o modelo A

S2 a superfiacutecie MLS de contorno que define o modelo B

P1 o conjunto de surfels que representa a superfiacutecie S1

P2 o conjunto de surfels que representa a superfiacutecie S2

Ωp1 (x) a classificaccedilatildeo do ponto p em relaccedilatildeo a uma amostragem P1

Q1 o subconjunto de P1 que vai compor o resultado

Ωp2 (x) a classificaccedilatildeo do ponto p em relaccedilatildeo a uma amostragem P2

Q2 o subconjunto de P2 que vai compor o resultado

Os conjuntos Q1 e Q2 satildeo obtidos por meio da Tabela 1 mostrada abaixo

Operaccedilotildees Booleanas com Pontos 42

Tabela 1 Classificaccedilatildeo para operaccedilotildees booleanas

Para o tratamento de interseccedilatildeo neste meacutetodo satildeo computados pontos

que caem exatamente na curva de interseccedilatildeo e estes satildeo acrescentados ao

modelo resultado Estes pontos satildeo determinados de forma que a densidade da

amostragem vai crescendo agrave medida que os surfels se aproximam da curva de

interseccedilatildeo e convergem para este ponto de interseccedilatildeo como mostra a Figura

13

(a) (b) (c)

Figura 13 - Os novos surfels satildeo colocados exatamente na curva de interseccedilatildeo

e convergem para o ponto de interseccedilatildeo

A Figura 14 mostra o processo de encontrar os surfels que caem nesta

curva de interseccedilatildeo Inicialmente satildeo encontrados todos os pontos de Q1 e Q2

que estatildeo proacuteximos agrave curva de interseccedilatildeo por meio da funccedilatildeo de distacircncia do

operador de projeccedilatildeo MLS Em seguida procura-se todos os pares mais

proacuteximos (q1 є Q1 q2 є Q2 ) e computa-se o ponto q na curva de interseccedilatildeo da

seguinte forma (veja a Figura 14)Seja r o ponto na linha de interseccedilatildeo dos dois

planos tangentes em q1 e q2 e que estaacute mais proacuteximo a estes dois pontos isto eacute

que minimiza a distacircncia ||r-q1|| + ||r-q2|| r eacute a primeira aproximaccedilatildeo de q e agora

pode ser projetado sobre S1 e S2 para obter dois novos pontos de partida q1rsquo e q2

rsquo

para a iteraccedilatildeo Este procedimento pode ser repetido iterativamente ateacute que os

pontos q1 e q2 convirjam ao ponto q na curva de interseccedilatildeo Normalmente este

processo requer menos de trecircs iteraccedilotildees

Operaccedilotildees Booleanas com Pontos 43

(a) (b)

(c)

Figura 14 (a) Suponhamos a reta que eacute a interseccedilatildeo do plano tangente a S1 em q1 e o

plano tangente a S2 em q2 O ponto r eacute o ponto desta reta que estaacute mais proacuteximo a q1 e

q2 (b) r eacute projetado sobre S1 e S2 obtendo-se q1acute e q2acute dois novos pontos de partida

para nova iteraccedilatildeo (c) A nova iteraccedilatildeo gera r que eacute uma aproximaccedilatildeo melhor de q

Pauly faz o tratamento de arestas vivas em tempo de renderizaccedilatildeo Ele

faz uma alteraccedilatildeo no renderizador Marca os surfels de interseccedilatildeo e ao

renderizaacute-los satildeo cortados para gerar uma aresta viva

44 Validade da Regra 2

Os dois meacutetodos analisados nesta dissertaccedilatildeo utilizam a seguinte regra

para a classificaccedilatildeo de um surfel

Regra 2 dado um volume V determinado por uma superfiacutecie de contorno

S uma amostragem P da superfiacutecie S um ponto x qualquer um ponto p є P que

eacute a amostra mais proacutexima a x um vetor ny normal a S em p e orientado para

fora de S temos que (x ndash p) np gt 0 x notinV

Em [16] eacute colocado que esta regra eacute tirada da seguinte propriedade da

geometria diferencial (aqui chamada Propriedade 1)

Propriedade 1 Dado um volume V determinado por uma superfiacutecie de

contorno S contiacutenua e duplamente diferenciaacutevel um ponto x qualquer um ponto

Operaccedilotildees Booleanas com Pontos 44

y є S que eacute o ponto de S mais proacuteximo a x um vetor ny normal a S em y e

orientado para fora de S temos que (x ndash y) ny gt 0 x notinV

A Figura 15 ilustra esta propriedade

Figura 15 Para verificar se o ponto x estaacute fora de um contorno C encontra-se o ponto y

de C Se o produto interno entre a normal em y e o vetor que liga y a x for maior que

zero entatildeo x estaacute fora de C senatildeo estaacute dentro de C

Pauly assume que tendo uma amostragem P da superfiacutecie S podemos

usar a Propriedade 1 substituindo y por p o surfel mais proacuteximo ao ponto x (x ndash

p) np gt 0 x notinV (Regra 2) Esta amostragem P em seu trabalho eacute

(aproximadamente) uma ldquoamostragem adequadardquo Tambeacutem seu tratamento de

interseccedilatildeo cria uma aproximaccedilatildeo dela (seccedilatildeo 43) Empiricamente a

ldquodiscretizaccedilatildeo da propriedaderdquo eacute vaacutelida a partir desta suposiccedilatildeo Mas isso natildeo foi

demonstrado teoricamente em seu trabalho

Pauly coloca em [16] que natildeo existe ainda uma teoria matemaacutetica rigorosa

de amostragem anaacuteloga a teoria de Fourier para superfiacutecies discretas

A melhor aproximaccedilatildeo teoacuterica para esta aacuterea eacute o uso do Eixo Medial que

foi colocado em [10] Vamos descrever este trabalho brevemente nesta seccedilatildeo

Este trabalho apresenta um algoritmo de reconstruccedilatildeo de superfiacutecie que parte de

uma amostragem adequada (abaixo definida) de pontos e obteacutem uma malha

que eacute topologicamente equivalente agrave superfiacutecie do objeto e agrave medida que a

densidade da amostragem cresce a saiacuteda converge para esta superfiacutecie

Para definir amostragem adequada o trabalho parte do conceito de Eixo

Medial

Operaccedilotildees Booleanas com Pontos 45

ldquoEixo Medialrdquo de uma superfiacutecie 2D posicionada no R3 eacute o conjunto

(fechado) de pontos pi para os quais buscando-se o ponto da superfiacutecie que

estaacute mais proacuteximo a pi mais de um ponto pertencentes a esta superfiacutecie satildeo

encontrados A Figura 16 abaixo ilustra o Eixo Medial em 2D

Figura 16 [10] As curvas de cor mais clara satildeo o Eixo Medial da curva em preto

Em duas dimensotildees os veacutertices de Voronoi de uma amostragem densa

aproximam o ldquoEixo Medialrdquo da amostragem (mas esta propriedade natildeo se

estende a 3D) A Figura 17 mostra o Eixo Medial em 3D

Figura 17 [10] Em 3D geralmente o Eixo Medial eacute uma superfiacutecie 2D (em cor mais

clara) Aqui o quadrado eacute o Eixo Medial da superfiacutecie transparente que o contorna

Podemos definir agora a amostragem adequada da seguinte forma

Supondo uma superfiacutecie suave que quer dizer uma 2-manifold duplamente

diferenciaacutevel posicionada no R3 uma ldquoamostragem adequadardquo desta superfiacutecie eacute

aquela na qual a densidade da amostragem eacute (pelo menos) inversamente

proporcional agrave distacircncia ao ldquoEixo Medialrdquo A Figura 18 mostra uma amostragem

adequada

Operaccedilotildees Booleanas com Pontos 46

Figura 18 [10] A figura mostra o diagrama de Voronoi de uma amostragem de pontos S

Da mesma forma que o a amostragem aproxima a curva os veacutertices de Voronoi

aproximam o Eixo Medial

Na praacutetica na reconstruccedilatildeo da superfiacutecie uma aproximaccedilatildeo deste ldquoEixo

Medialrdquo eacute computada (devido agrave dificuldade de computaacute-lo exatamente e em

alguns casos ateacute impossibilidade)

Melhorias Propostas 47

5 Melhorias Propostas

No capiacutetulo 4 apresentamos dois meacutetodos que realizam operaccedilotildees

booleanas em modelos por pontos o meacutetodo de Adams e Dutreacute [2] e o meacutetodo

de Pauly[3] Para esta dissertaccedilatildeo usamos o meacutetodo de Adams e Dutreacute [2] e

propomos as seguintes melhorias

- Alteramos o momento em que eacute feita a classificaccedilatildeo da octree Fazemos

esta classificaccedilatildeo durante a sua criaccedilatildeo Os noacutes filhos de um noacute pai P qualquer

satildeo classificados logo apoacutes a criaccedilatildeo de todos estes filhos de P

independentemente do restante da octree ter sido criada Isso pode ser feito

porque a octree eacute construiacuteda na ordem raiz-esquerda-direita (preorder

traversal) e portanto apoacutes todos os filhos de um noacute pai serem criados a parte

necessaacuteria da octree para a classificaccedilatildeo destes filhos jaacute estaacute criada

- A classificaccedilatildeo da octree eacute otimizada classificando-se os cantos dos seus

noacutes como dentro ou fora do modelo Na classificaccedilatildeo de um noacute n1 a partir de seu

vizinho n2 se os cantos que satildeo comuns a n1 e n2 tiverem a mesma

classificaccedilatildeo esta seraacute dada ao noacute Assim diminuiacutemos o nuacutemero de pesquisas

pelo surfel mais proacuteximo que eacute a parte criacutetica da classificaccedilatildeo dos noacutes da octree

em termos de tempo de processamento

- Acrescentamos um valor miacutenimo (maior que zero) para o nuacutemero de

surfels contidos em um noacute que eacute uma das condiccedilotildees de parada na criaccedilatildeo da

octree Verificamos que desta forma diminui-se a chance de erro na classificaccedilatildeo

de partes criacuteticas como ldquoarestas vivasrdquo

Uma comparaccedilatildeo entre a nossa implementaccedilatildeo e a de Pauly tambeacutem seraacute

feita no capiacutetulo 6

51 Descriccedilatildeo do algoritmo

O algoritmo implementado para esta dissertaccedilatildeo baseado no meacutetodo de

Adams e Dutreacute [2] pode ser dividido nas seguintes partes Criaccedilatildeo e

classificaccedilatildeo de uma octree para cada modelo Teste DentroFora Criaccedilatildeo do

modelo resultado Natildeo foi implementado tratamento especial algum de

interseccedilatildeo para o nosso plugin As proacuteximas seccedilotildees apresentam estas partes

Melhorias Propostas 48

511 Criaccedilatildeo e classificaccedilatildeo de uma octree para cada modelo

As ideacuteias do algoritmo satildeo aqui ilustradas em 2D mas a extensatildeo delas

para 3D eacute feita facilmente

Para cada modelo a octree eacute criada e classificada da seguinte forma

Figura 19-Quadtree classificada Os noacutes mais escuros estatildeo fora do modelo os mais claros dentro e os em tom intermediaacuterio satildeo noacutes de contorno

Gera-se uma ldquocaixa envolventerdquo do modelo contendo todos os surfels e

cria-se o noacute raiz da octree que corresponde a esta ldquocaixa envolventerdquo Este noacute

raiz eacute subdividido em oito filhos e seus surfels satildeo distribuiacutedos entre eles Ao

inveacutes de testarmos os valores de xy e z para cada surfel a fim de determinar

para qual filho ele iraacute utilizamos listas auxiliares Primeiro os surfels satildeo

subdivididos em dois grupos pelos valores de x e armazenados em uma lista

auxiliar Em seguida cada uma das listas eacute subdividida pelo valor de y e as

quatro listas obtidas seratildeo subdivididas pelo valor de z Ao final teremos 8 listas

de surfels cada uma delas pertencente a um filho

Cada noacute seraacute entatildeo novamente subdividido enquanto contiver um nuacutemero

de surfels gt nmin (valor preacute-definido) ou enquanto a profundidade da aacutervore lt pmax

(valor preacute-definido) Na figura 19 pmax = 3 e nmin = 3

Melhorias Propostas 49

Figura 20-O noacute cheio eacute dividido em trecircs partes agrave esquerda a regiatildeo estaacute dentro do modelo agrave direita estaacute fora e entre as duas linhas que dividem o noacute estaacute a regiatildeo que conteacutem os surfels

Os noacutes cheios recebem um tratamento especial Eles satildeo subdivididos em

trecircs partes da seguinte forma uma que estaacute fora do modelo outra que estaacute

dentro e uma que conteacutem os surfels Esta subdivisatildeo eacute feita por meio da criaccedilatildeo

de dois planos paralelos que dividem o noacute Para determinar estes planos

calcula-se o vetor nm igual agrave meacutedia das normais dos surfels do noacute nm = sum ns

sum ns onde ns eacute a normal de cada surfel do noacute Em seguida encontra-se o

surfel com maior produto interno entre a sua normal e a normal meacutedia

d1=Max(nm ٠ ns) Este surfel juntamente com a normal meacutedia define um dos

planos Encontra-se tambeacutem o surfel com menor produto interno entre a sua

normal e a normal meacutedia d2=Min (nm ٠ ns) Este surfel juntamente com a normal

meacutedia define o outro plano (Figura 20) Se o noacute conteacutem surfels de superfiacutecies de

orientaccedilotildees diferentes ele natildeo seraacute subdividido ou seja os planos coincidiratildeo

com os planos que delimitam o proacuteprio noacute Este teste foi implementado da

seguinte forma escolhe-se um surfel qualquer do noacute Calcula-se o produto

interno entre a normal deste surfel e as outras normais dos outros surfels deste

noacute Se algum produto interno for menor que zero este noacute natildeo seraacute subdividido

Apoacutes a etapa de subdivisatildeo classificam-se os oito cantos deste noacute como

dentro ou fora do modelo por meio da classificaccedilatildeo de um ponto que

descreveremos na sub-seccedilatildeo 5111

Melhorias Propostas 50

a b

c d

Figura 21-O noacute a eacute classificado pelo noacute c o noacute d tambeacutem eacute classificado pelo noacute c a classificaccedilatildeo do noacute a eacute propagada para o noacute b

Jaacute os noacutes vazios da octree seratildeo classificados como ldquodentrordquo ou ldquoforardquo do

modelo da seguinte forma cada noacute folha vazio eacute classificado a partir de um de

seus irmatildeos vizinhos adjacentes Se ele possuir um vizinho adjacente cheio ele

seraacute classificado por este vizinho se natildeo possuir os vizinhos adjacentes seratildeo

classificados primeiro e ele teraacute esta mesma classificaccedilatildeo (Figura 21) Como tem

que existir sempre pelo menos um noacute cheio entre os filhos de um noacute pai entatildeo

sempre esta classificaccedilatildeo poderaacute ser feita Com a classificaccedilatildeo de todos os

filhos tem-se tambeacutem a classificaccedilatildeo dos cantos do noacute pai

Mf03c003fmx a b

Figura 22-Os cantos a e b do noacute cheio possuem a mesma classificaccedilatildeo fora do modelo Esta classificaccedilatildeo foi dada ao noacute vazio adjacente

Melhorias Propostas 51

Para classificar um noacute vazio por meio de um noacute cheio verificam-se os

cantos comuns destes dois noacutes se todos os cantos tiverem a mesma

classificaccedilatildeo esta seraacute dada ao noacute vazio (Figura 22) Se houver classificaccedilotildees

diferentes escolhe-se o surfel do noacute cheio mais proacuteximo ao noacute vazio faz-se o

produto interno entre a normal deste surfel e o vetor que liga o centro do noacute

cheio ao centro do noacute vazio (ou o vetor que liga o surfel ao centro do noacute vazio)

Se o produto interno for maior que zero o noacute eacute classificado como ldquoforardquo senatildeo eacute

classificado como ldquodentrordquo Para encontrar o surfel (pertencente a um noacute cheio)

mais proacuteximo ao noacute vazio existem dois casos

- O noacute cheio eacute folha percorre-se toda a lista de surfels e escolhe o surfel

mais proacuteximo da fronteira entre o noacute cheio e o vazio

- O noacute cheio natildeo eacute um noacute folha percorrem-se os filhos do noacute cheio ou seja

esta pesquisa eacute feita descendo na octree a partir do noacute cheio procurando o

surfel mais proacuteximo agrave fronteira do pai com o noacute vazio a ser classificado

Classificando o centro do noacute vazio todo o noacute deve ter a mesma

classificaccedilatildeo pois este noacute natildeo conteacutem surfels Para encontrar o surfel do noacute

vazio mais proacuteximo da fronteira entre o noacute cheio e o vazio basta testar o valor da

coordenada se a fronteira eacute o lado direito do noacute cheio escolhe-se o surfel com

maior coordenada lsquoxrsquo se eacute o lado esquerdo escolhe-se o surfel com menor lsquoxrsquo

se lado superior surfel com maior lsquoyrsquo etc A seguir apresentamos a classificaccedilatildeo

de um ponto qualquer pertencente a um noacute cheio

Figura 23- Quadtree classificada

Melhorias Propostas 52

5111 Classificaccedilatildeo de um ponto de um noacute cheio

Figura 24 [2] A normal n eacute a normal meacutedia e os surfels s1 e s2 juntamente com a normal

n definem as retas que dividem o noacute O ponto a estaacute fora do modelo e o ponto b estaacute

dentro do modelo

Para um ponto localizado dentro do noacute faz-se o seguinte teste se o noacute foi

dividido testa-se de acordo com a divisatildeo do noacute se o ponto estaacute na parte do noacute

que estaacute dentro do modelo ele eacute classificado como ldquodentrordquo se o ponto estaacute na

parte que estaacute fora do modelo ele eacute classificado como ldquoforardquo (Figura 24) se o

ponto estaacute na parte que conteacutem os surfels encontra-se o surfel s pertencente ao

noacute mais proacuteximo do ponto e o classifica de acordo com s seja ns a normal em s

cs a coordenada de s cp a coordenada do ponto Se (cp - cs )٠ ns gt 0 o ponto

seraacute classificado como ldquoforardquo Senatildeo seraacute classificado como ldquodentrordquo

Se o noacute natildeo foi dividido em planos esta classificaccedilatildeo a partir do surfel

mais proacuteximo seraacute sempre feita

512 Teste DentroFora

Melhorias Propostas 53

Figura 25-Duas circunferecircncias e suas quadtrees correspondentes

O Teste DentroFora classifica os surfels de um modelo como dentro ou

fora de outro modelo ou na sua interseccedilatildeo Este teste foi aqui implementado

exatamente como foi proposto em Adams e Dutreacute [2] exceto que natildeo foi

implementado o meacutetodo TINN - Triangle Inequality Nearest Neighbour [19]

Cada octree eacute percorrida verificando-se se os seus noacutes ou surfels estatildeo dentro

fora ou no contorno do outro modelo (Figura 25) Sejam A e B duas octrees e

queremos classificar a octree A As duas octrees (AB) satildeo percorridas partindo

da raiz

Para cada noacute de A existem quatro casos (Figura 26) Para testar estas

situaccedilotildees os boxes dos noacutes satildeo aumentados de rmax o raio do maior surfel do

modelo Isto eacute feito para compensar o fato de que o surfel natildeo eacute apenas um

ponto mas sim considerado como um disco

Os quatro casos satildeo

Se o noacute de A natildeo intersecta B entatildeo todos os surfels deste noacute satildeo

classificados como fora

Se o noacute de A intersecta apenas noacutes de B que estatildeo fora do modelo

todos os surfels deste noacute satildeo fora

Se o noacute de A intersecta apenas noacutes de B que estatildeo dentro do modelo

todos os surfels deste noacute satildeo dentro

Melhorias Propostas 54

Se o noacute de A intersecta noacutes de B que estatildeo dentro e tambeacutem noacutes de B

que estatildeo fora testa-se se este noacute de A eacute ou natildeo folha Se natildeo for folha

percorre-se os filhos deste noacute de A ateacute encontrar um noacute folha cheio que

intersecta B Para cada surfel sa deste noacute folha de A encontra-se o surfel de B

mais proacuteximo e classifica-se a coordenada de sa da forma apresentada na seccedilatildeo

5111 Seja sb o surfel usado na classificaccedilatildeo de sa Se os discos de sb e sa

se intersectam sa eacute classificado como ldquointerseccedilatildeordquo

(a) (b)

(c) (d)

Figura 26- a modelos natildeo se intersectam b modelo intersecta noacutes fora c modelo intersecta apenas noacutes dentro d modelo intersecta noacutes dentro e noacutes fora

513 Criaccedilatildeo do modelo resultado

Um novo modelo eacute criado com os seguintes surfels (de acordo com a

operaccedilatildeo booleana escolhida pelo usuaacuterio - veja Regra 1 da seccedilatildeo 41)

Uniatildeo - surfels de A que estatildeo fora de B + surfels de B que estatildeo fora de A

Melhorias Propostas 55

Interseccedilatildeo - surfels de A que estatildeo dentro de B + surfels de B que estatildeo

dentro de A

Diferenccedila A-B - surfels de A que estatildeo fora de B + surfels de B que estatildeo

dentro de A (com orientaccedilatildeo invertida)

Como natildeo foi implementado tratamento especial algum de interseccedilatildeo para

o nosso plugin os surfels que se intersectam satildeo mantidos no modelo resultado

final sem modificaccedilotildees

Descrito o algoritmo vejamos a seguir a sua implementaccedilatildeo

52 Implementaccedilatildeo

Este algoritmo foi implementado na forma de um plugin para o software

PointShop 3D [11] Este plugin foi desenvolvido na linguagem C e no sistema

operacional Windows

A escolha deste tipo de implementaccedilatildeo permitiu-nos usar o software

PointShop para os testes do algoritmo Estes testes foram feitos com os modelos

disponibilizados para o PointShop [11] Nesta seccedilatildeo apresentaremos o software

PointShop e as principais estruturas de dados usadas em nosso plugin

O Pointshop eacute um software aberto com seu coacutedigo disponiacutevel e preparado

para trabalhar com plugins Eacute um software de ediccedilatildeo de modelos 3D por pontos

Ele permite aleacutem de visualizar o modelo alterar as suas caracteriacutesticas como

cor brilho e fazer mapeamento de textura iluminaccedilatildeo filtragem (Figura 27)

Melhorias Propostas 56

Figura 27-Software PointShop 3D com dois modelos carregados na sua cena

Aleacutem disso pode-se criar uma cena com vaacuterios modelos e visualizaacute-los de

qualquer ponto de vista Implementa o virtual trackball para rotacionaacute-los e

transladaacute-los Usa uma iluminaccedilatildeo simples direcional A sua arquitetura eacute

extensiacutevel permite que o usuaacuterio adicione seus proacuteprios componentes ao

sistema Possui trecircs tipos de componentes

ldquoToolsrdquo fornece funcionalidades para ediccedilatildeo interativa de superfiacutecie Satildeo

disponibilizados na ldquotoolbarrdquo

Plugins fornece funcionalidades para processar em um soacute passo

modelos ou partes deles selecionadas Satildeo disponibilizados no menu ldquoPluginsrdquo

Renderes fornece funcionalidades de display para os modelos

Para esta dissertaccedilatildeo foi escolhida a construccedilatildeo do componente Plugin

por adequar-se agrave nossa proposta e ser a mais simples de ser construiacuteda O

PointShop [11] jaacute conteacutem uma tool que executa operaccedilotildees booleanas e

deformaccedilatildeo free-form sobre os modelos carregados na cena usando o meacutetodo

de Pauly [3] apresentado no capiacutetulo 4 O nosso plugin Operaccedilotildees Booleanas

implementa o algoritmo descrito na seccedilatildeo anterior baseado na proposta de

Melhorias Propostas 57

Adams e Dutreacute [2] Uma comparaccedilatildeo entre o nosso plugin e a tool de Pauly [3] eacute

feita no capiacutetulo 6

Figura 28-Menu do PointShop com o plugin e as opccedilotildees para operaccedilotildees booleanas

Para se executar o plugin o usuaacuterio precisa carregar dois modelos na

cena do PointShop acionar o plugin informando a operaccedilatildeo que seraacute executada

O plugin executaraacute o algoritmo acima proposto e carregaraacute o resultado na cena

do Pointshop retirando os modelos anteriores

521 Estruturas de Dados

Como vimos o software PointShop [11] trabalha com modelos por pontos

Um modelo deste software descrito na seccedilatildeo 42 conteacutem todas as informaccedilotildees

que o algoritmo proposto em Bart [2] necessita Abaixo relacionamos as

Melhorias Propostas 58

principais estruturas de dados do PointShop usadas no plugin e as principais

estruturas de dados do nosso plugin

As principais classes do PointShop usadas no plugin satildeo

Classe Scene

Classe Objects

Classe SurfelColections

Classe Surfel

Classe StatusBar

Classe Transformer

A hierarquia de dados eacute a seguinte a Scene conteacutem vaacuterios Objects os

quais conteacutem SurfelColections Cada SurfelColections conteacutem Surfels que

suportam uma ou mais propriedades tais como cor difusa cor especular

Classe Scene Classe que representa uma cena que conteacutem modelos

Classe Object Um modelo eacute representado pela classe Object que

conteacutem uma SurfelCollection e as matrizes de transformaccedilatildeo para rotaccedilatildeo

escala e translaccedilatildeo Cada Object eacute identificado pelo seu nome que eacute uacutenico na

Scene O meacutetodo getUniqueName retorna um nome uacutenico Cada Object tem sua

proacutepria matriz de transformaccedilatildeo que pode ser modificada com setRotation

rotate setPosition translate setScale e scale Objects podem ser copiados com

copy Objects consiste em um conjunto de surfels os quais podem ser

recuperados pela getSurfelCollection O Object pode ser ativado com

setActiveObject e recuperado com getActiveObject

Objects podem ser adicionados ou removidos com addObject e

removeObject Os Objects podem ser obtidos pela getFirstObject e

getNextObject

Classe SurfelCollection representa o conjunto de surfels de um modelo

Cada surfelcollection consiste em um conjunto de surfels (SurfelInterface) de

tamanho obtido por getNofSurfels Os surfels podem ser recuperados com

getFirstSurfel getCurrentSurfel e getNextSurfel

A SurfelCollection conteacutem um PropertyDescriptor e uma SurfelList

A SurfelList eacute uma lista duplamente encadeada de surfels Possui os

atributos firstSurfel lastSurfel currentSurfel que satildeo ponteiros para uma

SurfelInterface nSurfels que eacute o nuacutemero de Surfels

A SurfelInterface define a API para os surfels que satildeo os menores

elementos que compotildeem um Object Podem ser considerados como pontos com

uma normal que define a orientaccedilatildeo do ciacuterculo (ou elipse) que seraacute desenhado

Melhorias Propostas 59

tatildeo logo o surfel seja renderizado Tem como atributos dois ponteiros (next e

prev) para SurfelInterface

PropertyDescriptor consiste em ateacute 32 valores descrevendo quais as

propriedades a SurfelInterface suporta

Classe Surfel classe que representa o surfel

Classe StatusBar classe que imprime mensagens na tela Os plugins

podem mandar mensagens para o usuaacuterio pela StatusBar

Mensagens texto podem ser impressas com showMessage O progresso

de uma operaccedilatildeo pode ser indicado com setProgress ou resetProgress

Classe Transformer representa a transformaccedilatildeo entre sistemas de

coordenadas Esta classe fornece meacutetodos para transformar pontos e vetores

entre os diferentes sistemas de coordenadas do Pointshop

A seguir apresentamos as principais estruturas de dados do plugin

Operaccedilotildees Booleanas

As principais estruturas de dados do plugin satildeo boundingbox tree no

lista_surfel surfel

Boundingbox conteacutem dois pontos 3D que definem uma caixa que conteacutem

o modelo um ponto com menores coordenadas xy e z e outro ponto com

maiores xyz

Tree representa a octree do modelo Cada registro conteacutem um ponteiro

para um noacute e oito ponteiros para as 8 octrees filhas

No representa um noacute da octree Conteacutem os seguintes dados

- localizaccedilatildeo do noacute que eacute o canto inferior esquerdo do noacute

- lista_surfel (preenchida apenas para noacutes folha cheios)

- quantidade de surfels do noacute

- classificaccedilatildeo do noacute como dentro fora ou contorno

- classificaccedilatildeo do noacute em relaccedilatildeo a outro modelo

- indica se o noacute eacute folha ou natildeo

- vetor que eacute a meacutedia das normais dos surfels do noacute

- ponto que eacute a meacutedia das localizaccedilotildees dos surfels do noacute

- surfel que tem (entre todos os surfels do noacute) o maior produto interno

entre a sua normal e a normal meacutedia

- surfel que tem (entre todos os surfels do noacute) o menor produto interno

entre a sua normal e a normal meacutedia

- produto interno maacuteximo e miacutenimo entre as normais dos surfels do noacute e a

normal meacutedia deste noacute

Melhorias Propostas 60

- indica se o noacute conteacutem surfels com normais em sentido oposto (produto

interno entre elas eacute menor que zero)

- classificaccedilatildeo dos oito cantos do noacute

lista_surfels lista em que cada registro conteacutem um apontador para um

surfel e um apontador para o proacuteximo registro

surfel representa o surfel da octree Conteacutem a classificaccedilatildeo em relaccedilatildeo a

outro modelo e um ponteiro para o surfel do Poinshop

Resultados 61

6 Resultados

Neste capiacutetulo apresentamos os testes realizados com o plugin para o

PointShop implementado para esta dissertaccedilatildeo a comparaccedilatildeo deste plugin com

o plugin de Pauly [3] e a comparaccedilatildeo entre o meacutetodo de Adams e Dutreacute [2] e o

meacutetodo de Pauly [3]

61 Testes

Os testes foram feitos em um PC x86 Family 6 261600 KB de RAM sem

placa graacutefica sistema operacional Windows 2000 O plugin foi implementado na

linguagem C

Os modelos usados para os testes satildeo modelos disponibilizados no

PointShop [11] Vale lembrar que o meacutetodo implementado em nosso plugin eacute

restrito a modelos soacutelidos e portanto foram usados apenas estes modelos

soacutelidos para os testes

O modelo na Figura 29 que eacute um dos modelos disponibilizados no

PointShop [11] foi usado para mostrar o resultado das operaccedilotildees realizadas

pelo plugin implementado nesta dissertaccedilatildeo O modelo Igea eacute um modelo soacutelido

que conteacutem 134345 surfels

Resultados 62

Figura 29-Modelo do PointShop Igea

Para realizar as operaccedilotildees este modelo foi carregado na cena do

PointShop duas vezes e um deles colorido de vermelho As Figuras 30 31 32

mostram o resultado da operaccedilatildeo de uniatildeo interseccedilatildeo e diferenccedila

respectivamente Os nuacutemeros de surfels dos modelos resultantes satildeo mostrados

na Tabela 2

Resultados 63

Figura 30-Resultado da uniatildeo de duas Igeas

Figura 31-Resultado da interseccedilatildeo de duas Igeas

Resultados 64

Figura 32-Resultado da diferenccedila entre duas Igeas

Tabela 2-Nuacutemero de surfels dos modelos resultantes

Observamos que o nuacutemero de surfels dos modelos resultantes estaacute

coerente com as figuras dos seus modelos

Para avaliar o tempo de processamento das operaccedilotildees foram realizados

vaacuterios testes com o objetivo de obter uma meacutedia dos tempos de realizaccedilatildeo de

cada operaccedilatildeo Tambeacutem foram armazenados os tempos da criaccedilatildeo das duas

octrees e da classificaccedilatildeo de todos os surfels dos dois objetos (como dentro ou

fora do outro modelo) Estes testes foram feitos usando o modelo Igea A meacutedia

dos tempos de processamento foi calculada e os resultados satildeo mostrados na

Tabela 3 Verificamos que o maior tempo gasto eacute para criaccedilatildeo das octrees

Verificamos tambeacutem que este resultado apresentado eacute similar ao resultado

verificado empiricamente com o plugin de Pauly [3] Os tempos gastos para

realizar as operaccedilotildees satildeo similares e o maior tempo gasto no plugin de Pauly

tambeacutem eacute para inicializaccedilatildeo de suas estruturas de dados que incluem a kd-tree

Operaccedilatildeo Nuacutemero de surfels do modelo resultado

Uniatildeo 189715

Interseccedilatildeo 72225

Diferenccedila 134552

Resultados 65

Operaccedilatildeo Criaccedilatildeo das

Octrees (seg)

Classificaccedilatildeo

(seg)

Criaccedilatildeo do

resultado (seg)

Total (seg)

Uniatildeo 39375 1324 18925 7154

Interseccedilatildeo 38585 1585 09547 63982

Diferenccedila 399875 1504 1729 729475

Tabela 3- Meacutedia dos tempos de processamento para as operaccedilotildees com duas Igeas

Com o objetivo de expor melhor os resultados deste trabalho

apresentamos abaixo mais um teste das operaccedilotildees booleanas usando o nosso

plugin Os modelos usados para este segundo teste satildeo o Max Planck e o Male

ambos modelos soacutelidos disponibilizados no PointShop Estes modelos satildeo

mostrados nas figura 33 e 34

O primeiro Max Planck conteacutem 52809 surfels

Figura 33-Modelo do PointShop MaxPlanck

O segundo modelo abaixo Male conteacutem 148138 surfels

Resultados 66

Figura 34-Modelo do PointShop Male

As Figuras 353637 mostram o resultado da operaccedilatildeo de uniatildeo interseccedilatildeo

e diferenccedila respectivamente usando os dois modelos acima Podemos observar

pela figura 35 que o resultado da operaccedilatildeo de diferenccedila neste caso gerou um

modelo resultado com trecircs partes desconexas Os nuacutemeros de surfels de cada

modelo resultado satildeo mostrados na Tabela 5

Figura 35- Resultado da Uniatildeo do modelo Male com MaxPlanck

Resultados 67

Figura 36-Resultado da interseccedilatildeo do modelo Male com o MaxPlanck

Figura 37-Resultado da diferenccedila do modelo Male do modelo MaxPlanck

As meacutedias de tempos de processamento foram calculadas da mesma

forma que o primeiro teste com o modelo Igea acima apresentado Os

resultados satildeo mostrados na Tabela 4 Podemos observar que este teste

Resultados 68

apresenta tempos um pouco menores que o teste com o modelo Igea Isto se

deve ao fato de que o modelo MaxPlanck ser significativamente menor que o

modelo Igea MaxPlanck possui 52809 surfels e Igea conteacutem 134345 surfels

Operaccedilatildeo Criaccedilatildeo das

Octrees (seg)

Classificaccedilatildeo

(seg)

Criaccedilatildeo do

resultado (seg)

Total

(seg)

Uniatildeo 3012 1254 102 5285

Interseccedilatildeo 2985 0901 0861 4747

Diferenccedila 2965 0911 0791 4667

Tabela 4-Tempo de processamento das operaccedilotildees com os modelos MaxPlanck e Male

Operaccedilatildeo Nuacutemero de surfels do resultado

Uniatildeo 126532

Interseccedilatildeo 88414

Diferenccedila 77635

Tabela 5-Nuacutemero de surfels dos modelos resultados das operaccedilotildees com os modelos MaxPlanck e Male

Em seguida apresentaremos uma comparaccedilatildeo entre o nosso plugin e o

plugin de Pauly[3] e tambeacutem uma comparaccedilatildeo entre o meacutetodo de Adams e Dutreacute

[2] e o meacutetodo de Pauly [3]

62 Comparaccedilatildeo entre os dois meacutetodos que realizam operaccedilotildees booleanas

A comparaccedilatildeo entre os meacutetodos de Pauly[3] e de Adams e Dutreacute foi feita

em termos de tempo de processamento e em termos conceituais Em termos de

tempo de processamento comparamos o plugin de Pauly[3] com o nosso plugin

Em termos de tempo de processamento verifica-se empiricamente que os

dois meacutetodos apresentam tempos bastante similares Entretanto o tempo de

processamento do algoritmo aqui implementado ainda pode ser melhorado com

Resultados 69

o uso do meacutetodo TINN [19] que foi proposto em Adams[2] - para otimizar a

pesquisa do surfel mais proacuteximo a um ponto que estaacute localizado na regiatildeo de um

noacute que conteacutem surfels - veja seccedilatildeo 42 O uso deste meacutetodo natildeo foi

implementado para este trabalho e a sua implementaccedilatildeo melhoraria o tempo de

resposta do algoritmo Aleacutem disso o trabalho de Sara F Frisken [12] citado no

capiacutetulo 2 apresenta uma otimizaccedilatildeo no uso de octrees que pode ser

incorporada no algoritmo implementado neste trabalho

Em termos conceituais vamos fazer a comparaccedilatildeo do uso do que

chamamos aqui de Regra 2 do tratamento de interseccedilatildeo e do tratamento de

ldquoarestas vivasrdquo

Como vimos na seccedilatildeo 41 tanto o algoritmo implementado nesta

dissertaccedilatildeo baseado no trabalho de Adams e Dutreacute como o meacutetodo de Pauly

[3] parte do que chamamos aqui de Regra 2 para realizar operaccedilotildees booleanas

com pontos Mas cada um destes meacutetodos daacute um tratamento diferente para o

uso desta regra

O meacutetodo de Pauly usa a Regra 2 para classificaccedilatildeo de cada ponto ou de

cada surfel Para classificar um surfel de B sb como dentro ou fora de A eacute

encontrado o surfel de A sa mais proacuteximo a sb e sb eacute classificado a partir de sa

Para encontrar sa Pauly utiliza uma kd-tree Como esta pesquisa para encontrar

sa eacute cara (mesmo usando uma kd-tree) Pauly utiliza uma esfera que conteacutem

pontos com a mesma classificaccedilatildeo (seccedilatildeo 432) e diminui em 90 este nuacutemero

de pesquisas Pauly utiliza tambeacutem a representaccedilatildeo impliacutecita MLS (Moving Least

Squares) para casos em que a Regra 2 poderia falhar e para tratamento de

interseccedilotildees Entretanto o nuacutemero destes casos em que a Regra 2 poderia falhar

eacute muito pequeno E a representaccedilatildeo MLS natildeo eacute uma estrutura simples de ser

implementada Portanto natildeo encontramos vantagens em usar MLS para estes

casos O meacutetodo de Adams e Dutreacute natildeo trata estes casos e na praacutetica

apresenta resultados bastante satisfatoacuterios como foi mostrado Portanto

consideramos que valeria a pena fazer algum tratamento especial para estes

casos se fosse um procedimento simples Para a execuccedilatildeo do algoritmo de

Pauly o uso de MLS natildeo interfere significativamente porque a construccedilatildeo desta

representaccedilatildeo natildeo eacute feita somente para realizar operaccedilotildees booleanas Os testes

empiacutericos que fizemos com o algoritmo de Pauly natildeo incluem a construccedilatildeo desta

representaccedilatildeo

Aparentemente os dois algoritmos satildeo bastante parecidos um usa octrees

e o outro usa kd-tree As duas estruturas de dados satildeo simples e otimizam a

classificaccedilatildeo dos surfels de um modelo como dentro ou fora do outro modelo

Resultados 70

Mas existe uma diferenccedila conceitual entre dois que merece ser destacada O

algoritmo aqui implementado usa a Regra 2 para classificaccedilatildeo dos noacutes de uma

octree e armazena esta octree classificada (ver capiacutetulo 5) Assim na maioria dos

casos natildeo seraacute necessaacuterio encontrar o surfel mais proacuteximo para classificar um

ponto (ou um surfel) como fora ou dentro de um modelo Caso o ponto esteja em

uma aacuterea da octree classificada ele teraacute a classificaccedilatildeo dada agravequela aacuterea A

pesquisa ao surfel mais proacuteximo seraacute feita apenas nos casos em que o ponto a

ser classificado estaacute localizado entre os planos que subdividem um noacute cheio

O uso desta octree classificada levanta uma questatildeo que natildeo foi citada no

trabalho de Adams e Dutreacute que eacute a proximidade desta estrutura (armazenada)

de octree classificada com uma representaccedilatildeo volumeacutetrica do objeto Sendo

assim esta estrutura pode ser aproveitada para outras funccedilotildees aleacutem da

classificaccedilatildeo dos surfels Por exemplo podemos ter uma aproximaccedilatildeo do

volume de uma cena somando os volumes aproximados dos modelos que a

compotildeem Como o enfoque deste trabalho eacute operaccedilatildeo booleana natildeo vamos nos

aprofundar nesta questatildeo

Outra importante diferenccedila entre os dois trabalhos que jaacute foi explicada na

seccedilatildeo 432 eacute que o meacutetodo de Pauly aplica-se a modelos soacutelidos ou natildeo

soacutelidos enquanto que o meacutetodo de Adams e Dutreacute aplica-se somente a modelos

soacutelidos

Quanto ao tratamento de interseccedilatildeo em termos de visualizaccedilatildeo todos os

dois resolvem bem o problema O tratamento de interseccedilatildeo nos dois trabalhos

tambeacutem resolve o problema da validade da Regra 2 (ver seccedilatildeo 44) Entretanto

o tratamento de Adams e Dutreacute natildeo depende da renderizaccedilatildeo sendo portanto

mais portaacutevel Aleacutem disso uma desvantagem do meacutetodo de Pauly eacute o uso da

representaccedilatildeo impliacutecita MLS (ldquoMoving Least Squaresrdquo) do objeto para obter os

pontos exatamente na curva de interseccedilatildeo Esta representaccedilatildeo torna o

tratamento de interseccedilatildeo mais complexo e a vantagem apresentada natildeo eacute tatildeo

significativa para este tratamento de interseccedilatildeo

Conclusatildeo 71

7 Conclusatildeo

Concluiacutemos entatildeo que as escolhas de Adams e Dutreacute por usar uma

octree classificada e pelo tratamento dado agrave interseccedilatildeo satildeo mais abrangentes

que a escolha de Pauly E consideramos que quanto mais abrangente for uma

escolha conceitual mais resultados poderemos tirar dela No caso de Adams e

Dutreacute eles estendem o problema de classificar um ponto para classificar todo o

modelo Como foi citado ele quase fornece uma representaccedilatildeo volumeacutetrica do

modelo Esta aproximada representaccedilatildeo volumeacutetrica pode nos fornecer outras

informaccedilotildees como por exemplo o volume aproximado do modelo

Aleacutem disso o uso da representaccedilatildeo impliacutecita MLS no meacutetodo de Pauly cria

uma complexidade a mais para o meacutetodo sem apresentar vantagens para a

realizaccedilatildeo de operaccedilotildees booleanas que eacute o nosso enfoque

Logo podemos dizer que o meacutetodo de Adams e Dutreacute apresenta as

seguintes vantagens em relaccedilatildeo ao de Pauly

- a estrutura de octree classificada aleacutem de ser usada para classificaccedilatildeo

fornece informaccedilotildees adicionais como volume aproximado do objeto

- o tempo de processamento no meacutetodo de Adams e Dutreacute tende a ser

melhor que no meacutetodo de Pauly se implementadas as melhorias acima citadas e

se colocaacutessemos em consideraccedilatildeo o uso da representaccedilatildeo impliacutecita MLS

(Moving Least Squares)

- o tratamento de interseccedilatildeo de Adams e Dutreacute apresenta a vantagem da

portabilidade ou seja iraacute funcionar independente do algoritmo de renderizaccedilatildeo

utilizado

E as vantagens do meacutetodo de Pauly em relaccedilatildeo ao de Adams e Dutreacute

- a colocaccedilatildeo de surfels exatamente na curva de interseccedilatildeo

- a possibilidade de trabalhar com modelos soacutelidos ou natildeo soacutelidos

E finalizando concluiacutemos que o estudo relatado nesta dissertaccedilatildeo foi

importante por

- fornecer um breve estudo sobre modelagem por pontos uma nova e

promissora aacuterea dentro da computaccedilatildeo graacutefica

Conclusatildeo 72

- por apresentar uma avaliaccedilatildeo dos dois trabalhos existentes sobre

operaccedilotildees booleanas com pontos encontrando as vantagens de cada um

e levantando questotildees que natildeo tinham sido citadas nos trabalhos originais

- por propor e implementar melhorias ao trabalho de Adams e Dutreacute

71 Trabalhos Futuros

Nossa implementaccedilatildeo pode ser ainda evoluiacuteda com as propostas

apresentadas na seccedilatildeo 62 Como observamos o tempo de processamento do

algoritmo aqui implementado ainda pode ser melhorado com o uso do meacutetodo

TINN [19] - que foi proposto em Adams[2] - para otimizar a pesquisa do surfel

mais proacuteximo a um ponto que estaacute localizado na regiatildeo de um noacute que conteacutem

surfels Aleacutem disso o trabalho Simple and Efficient Trasversal Methods for

Quadtrees and Octrees de Sara F Frisken [12] citado no capiacutetulo 2 apresenta

uma otimizaccedilatildeo no uso de octrees Outra proposta para melhorar o tempo de

processamento do algoritmo aqui implementado eacute usar a forma de trabalhar com

octrees apresentada neste trabalho

O trabalho de Adams e Dutreacute [2] eacute aplicado apenas a objetos soacutelidos O

nosso plugin portanto aplica-se somente a este tipo de objeto Jaacute o trabalho de

Pauly[3] eacute aplicado tambeacutem a modelos natildeo soacutelidos Apresentamos como

proposta a um trabalho futuro a extensatildeo do algoritmo aqui implementado para

modelos natildeo soacutelidos O surfel pode conter uma informaccedilatildeo adicional que indica

se ele estaacute delimitando um volume ou natildeo Assim pode-se ter um modelo com

ldquopartes soacutelidasrdquo e ldquopartes natildeo soacutelidasrdquo Por exemplo a uniatildeo de um plano com

uma esfera poderia resultar numa esfera com ldquoabasrdquo (seriam as partes do plano

que estariam fora da esfera) O modelo resultado teria uma parte correspondente

a um espaccedilo 3D (esfera) e outra parte que seria uma superfiacutecie 2D posicionada

no espaccedilo 3D sem delimitar algum volume (abas)

Muitos trabalhos podem ser desenvolvidos aplicando-se o modelo por

pontos em animaccedilatildeo jogos visualizaccedilatildeo de terrenos criaccedilatildeo de protoacutetipos etc

considerando-se a eficiecircncia e simplicidade do modelo E mais especificamente

as operaccedilotildees booleanas com pontos podem ser aplicadas para criaccedilatildeo de

cenaacuterios testes de colisotildees e nestes casos a representaccedilatildeo usando octrees

pode ser mais explorada considerando-se o seu potencial de representaccedilatildeo

volumeacutetrica de um objeto

Referecircncias Bibliograacuteficas 73

8 Referecircncias Bibliograacuteficas

[1] MAumlNTYLAuml M An Introduction to Solid Modeling Computer Science Press 1988

[2] ADAMS B DUTREacute P Interactive Boolean Operations on Surfel-

Bounded Solids Proceedings of SIGGRAPH 2003 San Diego USA 2003

[3] PAULY M KEISER R KOBBELT L GROSS M Shape Modeling

with Point-Sampled Geometry SIGGRAPH 2003 Computer Graphics

Proceedings Annual Conference Series ACM Press ACM SIGGRAPH 2003

[4] LEVOY M WHITTED T The Use of Points as Display Primitives

Technical Report TR 85-022 The University of North Carolina at Chapel Hill

Department of Computer Science 1985

[5] PFISTER H ZWICKER M VAN BAAR J GROSS M 2000 Surfels

Surface Elements as Rendering Primitives SIGGRAPH 2000 pp 335ndash342 New

Orleans LA July 23-28 2000

[6] ZWICKER M PFISTER H VAN BAAR J GROSS M Surface

Splatting SIGGRAPH 2001

[7] PAULY M KOBBELT L GROSS M Multiresolution Modeling of

Point-Sampled Geometry CS Techinical Report 378 September 16 2002

[8] CURLESS B New Methods for Surface Reconstruction from Range Images PhD thesis Stanford University 1997

[9] RUSINKIEWICZ S Real-time Acquisition and Rendering of Large 3D Models PhD thesis Stanford University 2001

Referecircncias Bibliograacuteficas 74

[10] AMENTA N BERN M KAMVYSSELIS M A new Voronoi-Based

Surface Reconstruction Algorithm SIGGRAPH 98 Conference proceedings pp

415-421 New York 1998

[11] ZWICKER M PAULY M KNOLL O GROSS M Pointshop 3D an

Interactive System for Point-Based Surface Editing Proceedings of SIGGRAPH 2002 San Antonio TX July 2002

[12] FRISKEN S PERRY R Simple and Efficient Traversal Methods for

Quadtrees and Octrees Journal of Graphics Tools Vol 7 Issue 3 May 2003

[13] CORREcircA W T OLIVEIRA M M Silva C T Wang J

Modeling and Rendering of Real Environments

Revista de Informaacutetica Teoacuterica e Aplicada (Brazilian Journal of Theoretic and Applied Computing) 9(2)127-156 2002

[14] DAVIS J MARSCHNER S GARR M LEVOY M Filling Holes in

Complex Surfaces Using Volumetric Diffusion First International Symposium on 3D Data Processing Visualization Transmission June 2002

[15] RAumlSAumlNEN J Surface Splatting Theory Extensions and Implementation Masterrsquos Thesis Dept of Computer Science Helsinki

University of Technology May 28 2002

[16] PAULY M Point Primitives for Interactive Modeling and Processing of 3D Geometry PhD thesis Federal Institute of Technology (ETH)

of Zurich 2003

[17] HOPPE H DEROSE T DUCHAMP T MCDONALD J

STUELZLE W Surface Reconstruction from Unorganized Points Computer Graphics 26(2)71ndash78 July 1992

[18] ALEXA M BEHR J COHEN-OR D FLEISHMAN S LEVIN D

SILVA C T Point Set Surfaces IEEE Visualization 2001 pp 21ndash28 October

2001

Referecircncias Bibliograacuteficas 75

[19] GREENSPAN M GODIN G TALBOT J Acceleration of Binning

Nearest Neighbor Methods Proceedings of Vision Interface 2000 pp 337-

344

[20] MENCL R Reconstruction of Surfaces from Unorganized Three-Dimensional Point Clouds Dissertation Dortmund Univ 2001

[21] KRIVANEK J Representing and Rendering Surfaces With Points

httpciteseernjneccomkrivanek03representinghtml Acesso em 30 jul

2003

[22] KRISTJANSSON ET AL Approximate Boolean Operations on Free-

form Solids Proceedings of SIGGRAPH 01 2001

Operaccedilotildees Booleanas com Pontos 36

dividem o noacute Para determinar estes planos calcula-se o vetor nm igual agrave

meacutedia das normais dos surfels do noacute nm = sum ns sum ns onde ns eacute a normal de

cada surfel do noacute

Em seguida encontra-se o surfel com maior produto interno entre a sua

normal e a normal meacutedia d1=Max(nm ٠ ns) Este surfel juntamente com a normal

meacutedia define um dos planos Encontra-se tambeacutem o surfel com menor produto

interno entre a sua normal e a normal meacutedia d2=Min(nm ٠ ns) Este surfel

juntamente com a normal meacutedia define o outro plano A Figura 10 mostra a

divisatildeo de um noacute de uma quadtree nas trecircs partes dentro do modelo fora do

modelo e no ldquocontornordquo

Esta subdivisatildeo aplica-se apenas a noacutes que conteacutem surfels cujas direccedilotildees

natildeo variem em mais de 90 graus Caso isso ocorra ele natildeo seraacute subdividido Ou

seja se um noacute possuir dois vetores normais (de dois surfels diferentes) que

formem um acircngulo maior que 90 graus ele natildeo seraacute subdividido

Figura 10 [2] -Divisatildeo de noacute de contorno a parte agrave esquerda estaacute fora do modelo a parte agrave direita estaacute dentro do modelo e a faixa intermediaacuteria conteacutem os surfels

4222 Teste Dentro-Fora

O Teste Dentro-Fora faz a classificaccedilatildeo dos surfels de um modelo como

ldquodentrordquo ou ldquoforardquo de outro modelo Portanto aplicaremos este mesmo teste duas

vezes uma para o modelo S1 em relaccedilatildeo ao modelo S2 e outra para S2 em

relaccedilatildeo a S1 Vamos mostrar o teste Dentro-Fora para o caso da classificaccedilatildeo

dos surfels do modelo S1 em relaccedilatildeo a S2

Operaccedilotildees Booleanas com Pontos 37

No item anterior foram criadas duas octrees uma para o modelo S1 e

outra para o modelo S2 Chamemos de A e B as octrees de S1 e S2

respectivamente Para classificar S1 em relaccedilatildeo a S2 inicialmente eacute feita uma

avaliaccedilatildeo da posiccedilatildeo de A em relaccedilatildeo a B A e B podem estar nas seguintes

situaccedilotildees

- A natildeo intersecta B

- A intersecta apenas noacutes ldquoforardquo de B

- A intersecta apenas noacutes ldquodentrordquo de B

- A intersecta noacutes ldquoforardquo e noacutes ldquodentrordquo de B

Para testar estas situaccedilotildees os noacutes satildeo aumentados de rmax o raio do

maior surfel do modelo soacutelido Isto eacute feito para compensar o fato de que o surfel

natildeo eacute apenas um ponto mas sim considerado como um disco

No primeiro e no segundo caso todos os surfels de A satildeo classificados

como ldquoforardquo No terceiro caso todos os surfels de A satildeo classificados como

ldquodentrordquo

No quarto caso temos que percorrer a octree A Comeccedilando pelo noacute raiz

percorre-se os filhos deste noacute Para cada filho os quatro testes acima satildeo feitos

Se o noacute filho encontra-se em um dos trecircs primeiros casos a classificaccedilatildeo eacute dada

como foi citada acima Se um filho estaacute no quarto caso e natildeo eacute um noacute folha

repete-se recursivamente o mesmo procedimento para seus filhos ateacute encontrar-

se um noacute folha Para um noacute que estaacute no quarto caso e eacute folha percorre-se a lista

de surfels que este noacute conteacutem classificando cada um destes surfels Seja sa um

surfel desta lista Para este caso percorre-se a octree B para classificar sa

Primeiramente encontramos o noacute de B que conteacutem sa Se este noacute de B foi

dividido testa-se de acordo com esta divisatildeo do noacute se o surfel sa estaacute na parte

do noacute que estaacute dentro do modelo ele eacute classificado como ldquodentrordquo se sa estaacute na

parte que estaacute fora do modelo ele eacute classificado como ldquoforardquo se sa estaacute na parte

intermediaacuteria ou se o noacute de B natildeo foi subdividido em planos encontra-se sb que

eacute o surfel pertencente a este noacute de B que estaacute mais proacuteximo de sa sa seraacute

entatildeo classificado de acordo com sb Se ( sa - sb )٠ nb gt 0 sa eacute classificado

como ldquoforardquo senatildeo eacute classificado como ldquodentrordquo Se os discos de sb e sa se

intersectam sa eacute marcado como interseccedilatildeo Para encontrar sb o algoritmo

implementa o meacutetodo TINN ndash Triangle Inequality Nearest Neighbour [19]

Operaccedilotildees Booleanas com Pontos 38

4223 Tratamento da interseccedilatildeo

Os surfels de A que intersectam surfels de B satildeo classificados como

ldquointerseccedilatildeordquo Se eles natildeo forem incluiacutedos no modelo resultado o soacutelido resultado

teraacute buracos Se eles forem incluiacutedos sem algum tratamento eles natildeo

representaratildeo adequadamente a regiatildeo Em geral o surfel sa (um surfel

ldquointerseccedilatildeordquo de A) eacute dividido em dois pelo plano que conteacutem o surfel sb (surfel de

B que sa intersecta) uma parte que estaacute fora de B e outra que estaacute dentro de B

Dependendo da operaccedilatildeo que estaacute sendo realizada vamos querer manter uma

destas partes do surfel sa no modelo resultado Seja xa a posiccedilatildeo do surfel sa e o

surfel sa uma circunferecircncia de centro xa e raio ra igual ao raio de alcance de sa

O plano que conteacutem o surfel sb define uma corda desta circunferecircncia como

mostra a Figura 11 O surfel sa seraacute substituiacutedo por um surfel menor que

ultrapassa esta corda de uma distacircncia e definida pelo usuaacuterio Para cobrir

completamente a interseccedilatildeo seratildeo adicionados surfels menores que cruzam a

corda de interseccedilatildeo

Figura 11 -Interseccedilatildeo do surfel s e do plano que passa pelo surfel t o surfel mais proacuteximo a s O surfel s eacute substituiacutedo por trecircs surfels menores

Operaccedilotildees Booleanas com Pontos 39

O tratamento de interseccedilatildeo proposto por Adams e Dutreacute [2] natildeo soacute evita

os buracos mas tambeacutem cria uma forma de renderizaccedilatildeo de arestas vivas A

colocaccedilatildeo de vaacuterios pequenos surfels na regiatildeo da interseccedilatildeo permite esta

correta renderizaccedilatildeo das ldquoarestas vivasrdquo Desta forma o problema das arestas

vivas eacute resolvido na modelagem (Figura 12) A vantagem de se resolver o caso

na modelagem eacute que natildeo eacute necessaacuterio fazer um tratamento especial na

renderizaccedilatildeo para que mostre esta aresta viva Diferente do tratamento feito

em Pauly (seccedilatildeo 431) que resolve esta questatildeo em tempo de renderizaccedilatildeo

Aleacutem disso o tratamento resolve alguns casos onde a Regra 2 poderia falhar

(veja em Validade da Regra 2-seccedilatildeo 44)

Figura 12 [2] -Agrave direita eacute mostrado o resultado do tratamento de interseccedilatildeo para o caso de Arestas Vivas do objeto agrave esquerda

43 Meacutetodo de Pauly

O meacutetodo aplica-se a objetos soacutelidos e natildeo soacutelidos Os modelos podem ser

obtidos a partir de diferentes entradas como nuvem de pontos irregulares ou por

meio de scanners 3D Cria um modelo hiacutebrido destes objetos usa o modelo por

pontos juntamente com a representaccedilatildeo impliacutecita Moving Least Squares - MLS

[18] Realiza operaccedilotildees booleanas com pontos e utiliza adicionalmente MLS

para alguns casos de classificaccedilatildeo de surfels e no tratamento de interseccedilatildeo A

seguir apresentamos as caracteriacutesticas do modelo por pontos deste meacutetodo e o

algoritmo que realiza as operaccedilotildees

Operaccedilotildees Booleanas com Pontos 40

431 Modelo em Pauly

O modelo eacute uma estrutura hiacutebrida de pontos com a representaccedilatildeo impliacutecita

Moving Least Squares - MLS [18] Esta estrutura eacute usada para fazer operaccedilotildees

booleanas e tambeacutem operaccedilotildees de free-form (natildeo abordadas nesta

dissertaccedilatildeo) Para operaccedilotildees booleanas a representaccedilatildeo MLS permite que a

curva de interseccedilatildeo entre os modelos seja reconstruiacuteda e surfels sejam

colocados nesta curva e em alguns casos de classificaccedilatildeo de surfels mostrados

na seccedilatildeo 432 Para este modelo natildeo existem restriccedilotildees quanto agrave forma do

objeto

Os surfels contecircm informaccedilotildees sobre sua posiccedilatildeo e sua normal Aleacutem

disso surfels podem conter informaccedilotildees adicionais como textura cor

propriedades de materiais

A distribuiccedilatildeo dos surfels eacute natildeo-uniforme e a amostragem eacute

aproximadamente adequada (Veja seccedilatildeo 44)

432 Algoritmo de Operaccedilotildees Booleanas

O algoritmo classifica surfels de um modelo como ldquodentrordquo ou ldquoforardquo de

outro modelo Antes de colocarmos como eacute feita esta classificaccedilatildeo devemos

acrescentar que Pauly estende esta classificaccedilatildeo para modelos que natildeo satildeo

soacutelidos Ou seja mesmo um modelo natildeo soacutelido divide o espaccedilo da cena (espaccedilo

em que se encontra o modelo) em dois sub-espaccedilos dentro ou fora do modelo

Pauly faz esta subdivisatildeo da seguinte forma

Como a superfiacutecie que determina o modelo eacute orientada (conteacutem vetores

normais agrave superfiacutecie que apontam para ldquoforardquo do modelo) Pauly considera que

um modelo natildeo soacutelido divide o espaccedilo em dois sub-espaccedilos um ldquoforardquo do

modelo (os vetores normais apontam para este sub-espaccedilo) e um que estaacute

ldquodentrordquo do modelo (os vetores normais apontam para direccedilatildeo oposta a este sub-

espaccedilo) Por exemplo um plano eacute representado como um conjunto de surfels

contidos num determinado espaccedilo geomeacutetrico plano π Cada surfel conteacutem um

vetor normal direcionado Este modelo divide entatildeo o espaccedilo em dois sub-

espaccedilos o sub-espaccedilo que eacute apontado por estes surfels (considerado ldquoforardquo do

modelo) e o sub-espaccedilo que estaacute na direccedilatildeo oposta (considerado ldquodentrordquo do

modelo) Desta forma ele aplica as classificaccedilotildees de ldquodentrordquo e ldquoforardquo de um

modelo tambeacutem a modelos natildeo soacutelidos A partir desta consideraccedilatildeo as

Operaccedilotildees Booleanas com Pontos 41

operaccedilotildees booleanas satildeo realizadas com os modelos natildeo soacutelidos da mesma

forma que com os modelos soacutelidos

Para determinar esta classificaccedilatildeo (dentro ou fora do modelo) Pauly utiliza

a Regra 2 Para pesquisa do surfel mais proacuteximo o meacutetodo usa a estrutura Kd-

tree [16] e tambeacutem o algoritmo ANN [16] No entanto o meacutetodo apresenta uma

restriccedilatildeo da Regra 2 ela soacute deve ser usada para classificaccedilotildees de pontos x se

a distacircncia x-p for maior que o espaccedilamento da amostragem local ηp em p

Este espaccedilamento da amostragem local ηp em p eacute um caacutelculo aproximado da

distacircncia meacutedia entre os surfels vizinhos a p Se x estaacute muito proacuteximo agrave

superfiacutecie a classificaccedilatildeo pode falhar Neste caso ele calcula o ponto exato de

S mais proacuteximo a x usando a projeccedilatildeo MLS (ldquoMoving Least Squaresrdquo)

Por questotildees de melhoria de desempenho utiliza-se o fato de que sendo

Ωp (x) a classificaccedilatildeo do ponto x em relaccedilatildeo agrave amostragem P tem-se que Ωp (x)

= Ωp (xrsquo) para todos os pontos de xrsquo que estatildeo dentro da esfera de centro x e

raio igual a x-p - ηp (onde p eacute o surfel mais proacuteximo e ηp eacute o espaccedilamento

local da amostragem em p acima citado) Ou seja sendo x um ponto qualquer p

o surfel mais proacuteximo a x ηp eacute o espaccedilamento local da amostragem em p se

desenharmos uma esfera com centro x e raio igual a x-p - ηp temos que

todos os pontos xrsquo que estatildeo dentro da esfera teratildeo a mesma classificaccedilatildeo de x

Desta forma o nuacutemero de vezes que a classificaccedilatildeo eacute feita (pesquisando-se o

surfel mais proacuteximo ao ponto e usando a Regra 2) diminui em ateacute 90 Assim

em geral a classificaccedilatildeo de um surfel eacute obtida a partir do seu surfel vizinho

Dados

S1 a superfiacutecie MLS de contorno que define o modelo A

S2 a superfiacutecie MLS de contorno que define o modelo B

P1 o conjunto de surfels que representa a superfiacutecie S1

P2 o conjunto de surfels que representa a superfiacutecie S2

Ωp1 (x) a classificaccedilatildeo do ponto p em relaccedilatildeo a uma amostragem P1

Q1 o subconjunto de P1 que vai compor o resultado

Ωp2 (x) a classificaccedilatildeo do ponto p em relaccedilatildeo a uma amostragem P2

Q2 o subconjunto de P2 que vai compor o resultado

Os conjuntos Q1 e Q2 satildeo obtidos por meio da Tabela 1 mostrada abaixo

Operaccedilotildees Booleanas com Pontos 42

Tabela 1 Classificaccedilatildeo para operaccedilotildees booleanas

Para o tratamento de interseccedilatildeo neste meacutetodo satildeo computados pontos

que caem exatamente na curva de interseccedilatildeo e estes satildeo acrescentados ao

modelo resultado Estes pontos satildeo determinados de forma que a densidade da

amostragem vai crescendo agrave medida que os surfels se aproximam da curva de

interseccedilatildeo e convergem para este ponto de interseccedilatildeo como mostra a Figura

13

(a) (b) (c)

Figura 13 - Os novos surfels satildeo colocados exatamente na curva de interseccedilatildeo

e convergem para o ponto de interseccedilatildeo

A Figura 14 mostra o processo de encontrar os surfels que caem nesta

curva de interseccedilatildeo Inicialmente satildeo encontrados todos os pontos de Q1 e Q2

que estatildeo proacuteximos agrave curva de interseccedilatildeo por meio da funccedilatildeo de distacircncia do

operador de projeccedilatildeo MLS Em seguida procura-se todos os pares mais

proacuteximos (q1 є Q1 q2 є Q2 ) e computa-se o ponto q na curva de interseccedilatildeo da

seguinte forma (veja a Figura 14)Seja r o ponto na linha de interseccedilatildeo dos dois

planos tangentes em q1 e q2 e que estaacute mais proacuteximo a estes dois pontos isto eacute

que minimiza a distacircncia ||r-q1|| + ||r-q2|| r eacute a primeira aproximaccedilatildeo de q e agora

pode ser projetado sobre S1 e S2 para obter dois novos pontos de partida q1rsquo e q2

rsquo

para a iteraccedilatildeo Este procedimento pode ser repetido iterativamente ateacute que os

pontos q1 e q2 convirjam ao ponto q na curva de interseccedilatildeo Normalmente este

processo requer menos de trecircs iteraccedilotildees

Operaccedilotildees Booleanas com Pontos 43

(a) (b)

(c)

Figura 14 (a) Suponhamos a reta que eacute a interseccedilatildeo do plano tangente a S1 em q1 e o

plano tangente a S2 em q2 O ponto r eacute o ponto desta reta que estaacute mais proacuteximo a q1 e

q2 (b) r eacute projetado sobre S1 e S2 obtendo-se q1acute e q2acute dois novos pontos de partida

para nova iteraccedilatildeo (c) A nova iteraccedilatildeo gera r que eacute uma aproximaccedilatildeo melhor de q

Pauly faz o tratamento de arestas vivas em tempo de renderizaccedilatildeo Ele

faz uma alteraccedilatildeo no renderizador Marca os surfels de interseccedilatildeo e ao

renderizaacute-los satildeo cortados para gerar uma aresta viva

44 Validade da Regra 2

Os dois meacutetodos analisados nesta dissertaccedilatildeo utilizam a seguinte regra

para a classificaccedilatildeo de um surfel

Regra 2 dado um volume V determinado por uma superfiacutecie de contorno

S uma amostragem P da superfiacutecie S um ponto x qualquer um ponto p є P que

eacute a amostra mais proacutexima a x um vetor ny normal a S em p e orientado para

fora de S temos que (x ndash p) np gt 0 x notinV

Em [16] eacute colocado que esta regra eacute tirada da seguinte propriedade da

geometria diferencial (aqui chamada Propriedade 1)

Propriedade 1 Dado um volume V determinado por uma superfiacutecie de

contorno S contiacutenua e duplamente diferenciaacutevel um ponto x qualquer um ponto

Operaccedilotildees Booleanas com Pontos 44

y є S que eacute o ponto de S mais proacuteximo a x um vetor ny normal a S em y e

orientado para fora de S temos que (x ndash y) ny gt 0 x notinV

A Figura 15 ilustra esta propriedade

Figura 15 Para verificar se o ponto x estaacute fora de um contorno C encontra-se o ponto y

de C Se o produto interno entre a normal em y e o vetor que liga y a x for maior que

zero entatildeo x estaacute fora de C senatildeo estaacute dentro de C

Pauly assume que tendo uma amostragem P da superfiacutecie S podemos

usar a Propriedade 1 substituindo y por p o surfel mais proacuteximo ao ponto x (x ndash

p) np gt 0 x notinV (Regra 2) Esta amostragem P em seu trabalho eacute

(aproximadamente) uma ldquoamostragem adequadardquo Tambeacutem seu tratamento de

interseccedilatildeo cria uma aproximaccedilatildeo dela (seccedilatildeo 43) Empiricamente a

ldquodiscretizaccedilatildeo da propriedaderdquo eacute vaacutelida a partir desta suposiccedilatildeo Mas isso natildeo foi

demonstrado teoricamente em seu trabalho

Pauly coloca em [16] que natildeo existe ainda uma teoria matemaacutetica rigorosa

de amostragem anaacuteloga a teoria de Fourier para superfiacutecies discretas

A melhor aproximaccedilatildeo teoacuterica para esta aacuterea eacute o uso do Eixo Medial que

foi colocado em [10] Vamos descrever este trabalho brevemente nesta seccedilatildeo

Este trabalho apresenta um algoritmo de reconstruccedilatildeo de superfiacutecie que parte de

uma amostragem adequada (abaixo definida) de pontos e obteacutem uma malha

que eacute topologicamente equivalente agrave superfiacutecie do objeto e agrave medida que a

densidade da amostragem cresce a saiacuteda converge para esta superfiacutecie

Para definir amostragem adequada o trabalho parte do conceito de Eixo

Medial

Operaccedilotildees Booleanas com Pontos 45

ldquoEixo Medialrdquo de uma superfiacutecie 2D posicionada no R3 eacute o conjunto

(fechado) de pontos pi para os quais buscando-se o ponto da superfiacutecie que

estaacute mais proacuteximo a pi mais de um ponto pertencentes a esta superfiacutecie satildeo

encontrados A Figura 16 abaixo ilustra o Eixo Medial em 2D

Figura 16 [10] As curvas de cor mais clara satildeo o Eixo Medial da curva em preto

Em duas dimensotildees os veacutertices de Voronoi de uma amostragem densa

aproximam o ldquoEixo Medialrdquo da amostragem (mas esta propriedade natildeo se

estende a 3D) A Figura 17 mostra o Eixo Medial em 3D

Figura 17 [10] Em 3D geralmente o Eixo Medial eacute uma superfiacutecie 2D (em cor mais

clara) Aqui o quadrado eacute o Eixo Medial da superfiacutecie transparente que o contorna

Podemos definir agora a amostragem adequada da seguinte forma

Supondo uma superfiacutecie suave que quer dizer uma 2-manifold duplamente

diferenciaacutevel posicionada no R3 uma ldquoamostragem adequadardquo desta superfiacutecie eacute

aquela na qual a densidade da amostragem eacute (pelo menos) inversamente

proporcional agrave distacircncia ao ldquoEixo Medialrdquo A Figura 18 mostra uma amostragem

adequada

Operaccedilotildees Booleanas com Pontos 46

Figura 18 [10] A figura mostra o diagrama de Voronoi de uma amostragem de pontos S

Da mesma forma que o a amostragem aproxima a curva os veacutertices de Voronoi

aproximam o Eixo Medial

Na praacutetica na reconstruccedilatildeo da superfiacutecie uma aproximaccedilatildeo deste ldquoEixo

Medialrdquo eacute computada (devido agrave dificuldade de computaacute-lo exatamente e em

alguns casos ateacute impossibilidade)

Melhorias Propostas 47

5 Melhorias Propostas

No capiacutetulo 4 apresentamos dois meacutetodos que realizam operaccedilotildees

booleanas em modelos por pontos o meacutetodo de Adams e Dutreacute [2] e o meacutetodo

de Pauly[3] Para esta dissertaccedilatildeo usamos o meacutetodo de Adams e Dutreacute [2] e

propomos as seguintes melhorias

- Alteramos o momento em que eacute feita a classificaccedilatildeo da octree Fazemos

esta classificaccedilatildeo durante a sua criaccedilatildeo Os noacutes filhos de um noacute pai P qualquer

satildeo classificados logo apoacutes a criaccedilatildeo de todos estes filhos de P

independentemente do restante da octree ter sido criada Isso pode ser feito

porque a octree eacute construiacuteda na ordem raiz-esquerda-direita (preorder

traversal) e portanto apoacutes todos os filhos de um noacute pai serem criados a parte

necessaacuteria da octree para a classificaccedilatildeo destes filhos jaacute estaacute criada

- A classificaccedilatildeo da octree eacute otimizada classificando-se os cantos dos seus

noacutes como dentro ou fora do modelo Na classificaccedilatildeo de um noacute n1 a partir de seu

vizinho n2 se os cantos que satildeo comuns a n1 e n2 tiverem a mesma

classificaccedilatildeo esta seraacute dada ao noacute Assim diminuiacutemos o nuacutemero de pesquisas

pelo surfel mais proacuteximo que eacute a parte criacutetica da classificaccedilatildeo dos noacutes da octree

em termos de tempo de processamento

- Acrescentamos um valor miacutenimo (maior que zero) para o nuacutemero de

surfels contidos em um noacute que eacute uma das condiccedilotildees de parada na criaccedilatildeo da

octree Verificamos que desta forma diminui-se a chance de erro na classificaccedilatildeo

de partes criacuteticas como ldquoarestas vivasrdquo

Uma comparaccedilatildeo entre a nossa implementaccedilatildeo e a de Pauly tambeacutem seraacute

feita no capiacutetulo 6

51 Descriccedilatildeo do algoritmo

O algoritmo implementado para esta dissertaccedilatildeo baseado no meacutetodo de

Adams e Dutreacute [2] pode ser dividido nas seguintes partes Criaccedilatildeo e

classificaccedilatildeo de uma octree para cada modelo Teste DentroFora Criaccedilatildeo do

modelo resultado Natildeo foi implementado tratamento especial algum de

interseccedilatildeo para o nosso plugin As proacuteximas seccedilotildees apresentam estas partes

Melhorias Propostas 48

511 Criaccedilatildeo e classificaccedilatildeo de uma octree para cada modelo

As ideacuteias do algoritmo satildeo aqui ilustradas em 2D mas a extensatildeo delas

para 3D eacute feita facilmente

Para cada modelo a octree eacute criada e classificada da seguinte forma

Figura 19-Quadtree classificada Os noacutes mais escuros estatildeo fora do modelo os mais claros dentro e os em tom intermediaacuterio satildeo noacutes de contorno

Gera-se uma ldquocaixa envolventerdquo do modelo contendo todos os surfels e

cria-se o noacute raiz da octree que corresponde a esta ldquocaixa envolventerdquo Este noacute

raiz eacute subdividido em oito filhos e seus surfels satildeo distribuiacutedos entre eles Ao

inveacutes de testarmos os valores de xy e z para cada surfel a fim de determinar

para qual filho ele iraacute utilizamos listas auxiliares Primeiro os surfels satildeo

subdivididos em dois grupos pelos valores de x e armazenados em uma lista

auxiliar Em seguida cada uma das listas eacute subdividida pelo valor de y e as

quatro listas obtidas seratildeo subdivididas pelo valor de z Ao final teremos 8 listas

de surfels cada uma delas pertencente a um filho

Cada noacute seraacute entatildeo novamente subdividido enquanto contiver um nuacutemero

de surfels gt nmin (valor preacute-definido) ou enquanto a profundidade da aacutervore lt pmax

(valor preacute-definido) Na figura 19 pmax = 3 e nmin = 3

Melhorias Propostas 49

Figura 20-O noacute cheio eacute dividido em trecircs partes agrave esquerda a regiatildeo estaacute dentro do modelo agrave direita estaacute fora e entre as duas linhas que dividem o noacute estaacute a regiatildeo que conteacutem os surfels

Os noacutes cheios recebem um tratamento especial Eles satildeo subdivididos em

trecircs partes da seguinte forma uma que estaacute fora do modelo outra que estaacute

dentro e uma que conteacutem os surfels Esta subdivisatildeo eacute feita por meio da criaccedilatildeo

de dois planos paralelos que dividem o noacute Para determinar estes planos

calcula-se o vetor nm igual agrave meacutedia das normais dos surfels do noacute nm = sum ns

sum ns onde ns eacute a normal de cada surfel do noacute Em seguida encontra-se o

surfel com maior produto interno entre a sua normal e a normal meacutedia

d1=Max(nm ٠ ns) Este surfel juntamente com a normal meacutedia define um dos

planos Encontra-se tambeacutem o surfel com menor produto interno entre a sua

normal e a normal meacutedia d2=Min (nm ٠ ns) Este surfel juntamente com a normal

meacutedia define o outro plano (Figura 20) Se o noacute conteacutem surfels de superfiacutecies de

orientaccedilotildees diferentes ele natildeo seraacute subdividido ou seja os planos coincidiratildeo

com os planos que delimitam o proacuteprio noacute Este teste foi implementado da

seguinte forma escolhe-se um surfel qualquer do noacute Calcula-se o produto

interno entre a normal deste surfel e as outras normais dos outros surfels deste

noacute Se algum produto interno for menor que zero este noacute natildeo seraacute subdividido

Apoacutes a etapa de subdivisatildeo classificam-se os oito cantos deste noacute como

dentro ou fora do modelo por meio da classificaccedilatildeo de um ponto que

descreveremos na sub-seccedilatildeo 5111

Melhorias Propostas 50

a b

c d

Figura 21-O noacute a eacute classificado pelo noacute c o noacute d tambeacutem eacute classificado pelo noacute c a classificaccedilatildeo do noacute a eacute propagada para o noacute b

Jaacute os noacutes vazios da octree seratildeo classificados como ldquodentrordquo ou ldquoforardquo do

modelo da seguinte forma cada noacute folha vazio eacute classificado a partir de um de

seus irmatildeos vizinhos adjacentes Se ele possuir um vizinho adjacente cheio ele

seraacute classificado por este vizinho se natildeo possuir os vizinhos adjacentes seratildeo

classificados primeiro e ele teraacute esta mesma classificaccedilatildeo (Figura 21) Como tem

que existir sempre pelo menos um noacute cheio entre os filhos de um noacute pai entatildeo

sempre esta classificaccedilatildeo poderaacute ser feita Com a classificaccedilatildeo de todos os

filhos tem-se tambeacutem a classificaccedilatildeo dos cantos do noacute pai

Mf03c003fmx a b

Figura 22-Os cantos a e b do noacute cheio possuem a mesma classificaccedilatildeo fora do modelo Esta classificaccedilatildeo foi dada ao noacute vazio adjacente

Melhorias Propostas 51

Para classificar um noacute vazio por meio de um noacute cheio verificam-se os

cantos comuns destes dois noacutes se todos os cantos tiverem a mesma

classificaccedilatildeo esta seraacute dada ao noacute vazio (Figura 22) Se houver classificaccedilotildees

diferentes escolhe-se o surfel do noacute cheio mais proacuteximo ao noacute vazio faz-se o

produto interno entre a normal deste surfel e o vetor que liga o centro do noacute

cheio ao centro do noacute vazio (ou o vetor que liga o surfel ao centro do noacute vazio)

Se o produto interno for maior que zero o noacute eacute classificado como ldquoforardquo senatildeo eacute

classificado como ldquodentrordquo Para encontrar o surfel (pertencente a um noacute cheio)

mais proacuteximo ao noacute vazio existem dois casos

- O noacute cheio eacute folha percorre-se toda a lista de surfels e escolhe o surfel

mais proacuteximo da fronteira entre o noacute cheio e o vazio

- O noacute cheio natildeo eacute um noacute folha percorrem-se os filhos do noacute cheio ou seja

esta pesquisa eacute feita descendo na octree a partir do noacute cheio procurando o

surfel mais proacuteximo agrave fronteira do pai com o noacute vazio a ser classificado

Classificando o centro do noacute vazio todo o noacute deve ter a mesma

classificaccedilatildeo pois este noacute natildeo conteacutem surfels Para encontrar o surfel do noacute

vazio mais proacuteximo da fronteira entre o noacute cheio e o vazio basta testar o valor da

coordenada se a fronteira eacute o lado direito do noacute cheio escolhe-se o surfel com

maior coordenada lsquoxrsquo se eacute o lado esquerdo escolhe-se o surfel com menor lsquoxrsquo

se lado superior surfel com maior lsquoyrsquo etc A seguir apresentamos a classificaccedilatildeo

de um ponto qualquer pertencente a um noacute cheio

Figura 23- Quadtree classificada

Melhorias Propostas 52

5111 Classificaccedilatildeo de um ponto de um noacute cheio

Figura 24 [2] A normal n eacute a normal meacutedia e os surfels s1 e s2 juntamente com a normal

n definem as retas que dividem o noacute O ponto a estaacute fora do modelo e o ponto b estaacute

dentro do modelo

Para um ponto localizado dentro do noacute faz-se o seguinte teste se o noacute foi

dividido testa-se de acordo com a divisatildeo do noacute se o ponto estaacute na parte do noacute

que estaacute dentro do modelo ele eacute classificado como ldquodentrordquo se o ponto estaacute na

parte que estaacute fora do modelo ele eacute classificado como ldquoforardquo (Figura 24) se o

ponto estaacute na parte que conteacutem os surfels encontra-se o surfel s pertencente ao

noacute mais proacuteximo do ponto e o classifica de acordo com s seja ns a normal em s

cs a coordenada de s cp a coordenada do ponto Se (cp - cs )٠ ns gt 0 o ponto

seraacute classificado como ldquoforardquo Senatildeo seraacute classificado como ldquodentrordquo

Se o noacute natildeo foi dividido em planos esta classificaccedilatildeo a partir do surfel

mais proacuteximo seraacute sempre feita

512 Teste DentroFora

Melhorias Propostas 53

Figura 25-Duas circunferecircncias e suas quadtrees correspondentes

O Teste DentroFora classifica os surfels de um modelo como dentro ou

fora de outro modelo ou na sua interseccedilatildeo Este teste foi aqui implementado

exatamente como foi proposto em Adams e Dutreacute [2] exceto que natildeo foi

implementado o meacutetodo TINN - Triangle Inequality Nearest Neighbour [19]

Cada octree eacute percorrida verificando-se se os seus noacutes ou surfels estatildeo dentro

fora ou no contorno do outro modelo (Figura 25) Sejam A e B duas octrees e

queremos classificar a octree A As duas octrees (AB) satildeo percorridas partindo

da raiz

Para cada noacute de A existem quatro casos (Figura 26) Para testar estas

situaccedilotildees os boxes dos noacutes satildeo aumentados de rmax o raio do maior surfel do

modelo Isto eacute feito para compensar o fato de que o surfel natildeo eacute apenas um

ponto mas sim considerado como um disco

Os quatro casos satildeo

Se o noacute de A natildeo intersecta B entatildeo todos os surfels deste noacute satildeo

classificados como fora

Se o noacute de A intersecta apenas noacutes de B que estatildeo fora do modelo

todos os surfels deste noacute satildeo fora

Se o noacute de A intersecta apenas noacutes de B que estatildeo dentro do modelo

todos os surfels deste noacute satildeo dentro

Melhorias Propostas 54

Se o noacute de A intersecta noacutes de B que estatildeo dentro e tambeacutem noacutes de B

que estatildeo fora testa-se se este noacute de A eacute ou natildeo folha Se natildeo for folha

percorre-se os filhos deste noacute de A ateacute encontrar um noacute folha cheio que

intersecta B Para cada surfel sa deste noacute folha de A encontra-se o surfel de B

mais proacuteximo e classifica-se a coordenada de sa da forma apresentada na seccedilatildeo

5111 Seja sb o surfel usado na classificaccedilatildeo de sa Se os discos de sb e sa

se intersectam sa eacute classificado como ldquointerseccedilatildeordquo

(a) (b)

(c) (d)

Figura 26- a modelos natildeo se intersectam b modelo intersecta noacutes fora c modelo intersecta apenas noacutes dentro d modelo intersecta noacutes dentro e noacutes fora

513 Criaccedilatildeo do modelo resultado

Um novo modelo eacute criado com os seguintes surfels (de acordo com a

operaccedilatildeo booleana escolhida pelo usuaacuterio - veja Regra 1 da seccedilatildeo 41)

Uniatildeo - surfels de A que estatildeo fora de B + surfels de B que estatildeo fora de A

Melhorias Propostas 55

Interseccedilatildeo - surfels de A que estatildeo dentro de B + surfels de B que estatildeo

dentro de A

Diferenccedila A-B - surfels de A que estatildeo fora de B + surfels de B que estatildeo

dentro de A (com orientaccedilatildeo invertida)

Como natildeo foi implementado tratamento especial algum de interseccedilatildeo para

o nosso plugin os surfels que se intersectam satildeo mantidos no modelo resultado

final sem modificaccedilotildees

Descrito o algoritmo vejamos a seguir a sua implementaccedilatildeo

52 Implementaccedilatildeo

Este algoritmo foi implementado na forma de um plugin para o software

PointShop 3D [11] Este plugin foi desenvolvido na linguagem C e no sistema

operacional Windows

A escolha deste tipo de implementaccedilatildeo permitiu-nos usar o software

PointShop para os testes do algoritmo Estes testes foram feitos com os modelos

disponibilizados para o PointShop [11] Nesta seccedilatildeo apresentaremos o software

PointShop e as principais estruturas de dados usadas em nosso plugin

O Pointshop eacute um software aberto com seu coacutedigo disponiacutevel e preparado

para trabalhar com plugins Eacute um software de ediccedilatildeo de modelos 3D por pontos

Ele permite aleacutem de visualizar o modelo alterar as suas caracteriacutesticas como

cor brilho e fazer mapeamento de textura iluminaccedilatildeo filtragem (Figura 27)

Melhorias Propostas 56

Figura 27-Software PointShop 3D com dois modelos carregados na sua cena

Aleacutem disso pode-se criar uma cena com vaacuterios modelos e visualizaacute-los de

qualquer ponto de vista Implementa o virtual trackball para rotacionaacute-los e

transladaacute-los Usa uma iluminaccedilatildeo simples direcional A sua arquitetura eacute

extensiacutevel permite que o usuaacuterio adicione seus proacuteprios componentes ao

sistema Possui trecircs tipos de componentes

ldquoToolsrdquo fornece funcionalidades para ediccedilatildeo interativa de superfiacutecie Satildeo

disponibilizados na ldquotoolbarrdquo

Plugins fornece funcionalidades para processar em um soacute passo

modelos ou partes deles selecionadas Satildeo disponibilizados no menu ldquoPluginsrdquo

Renderes fornece funcionalidades de display para os modelos

Para esta dissertaccedilatildeo foi escolhida a construccedilatildeo do componente Plugin

por adequar-se agrave nossa proposta e ser a mais simples de ser construiacuteda O

PointShop [11] jaacute conteacutem uma tool que executa operaccedilotildees booleanas e

deformaccedilatildeo free-form sobre os modelos carregados na cena usando o meacutetodo

de Pauly [3] apresentado no capiacutetulo 4 O nosso plugin Operaccedilotildees Booleanas

implementa o algoritmo descrito na seccedilatildeo anterior baseado na proposta de

Melhorias Propostas 57

Adams e Dutreacute [2] Uma comparaccedilatildeo entre o nosso plugin e a tool de Pauly [3] eacute

feita no capiacutetulo 6

Figura 28-Menu do PointShop com o plugin e as opccedilotildees para operaccedilotildees booleanas

Para se executar o plugin o usuaacuterio precisa carregar dois modelos na

cena do PointShop acionar o plugin informando a operaccedilatildeo que seraacute executada

O plugin executaraacute o algoritmo acima proposto e carregaraacute o resultado na cena

do Pointshop retirando os modelos anteriores

521 Estruturas de Dados

Como vimos o software PointShop [11] trabalha com modelos por pontos

Um modelo deste software descrito na seccedilatildeo 42 conteacutem todas as informaccedilotildees

que o algoritmo proposto em Bart [2] necessita Abaixo relacionamos as

Melhorias Propostas 58

principais estruturas de dados do PointShop usadas no plugin e as principais

estruturas de dados do nosso plugin

As principais classes do PointShop usadas no plugin satildeo

Classe Scene

Classe Objects

Classe SurfelColections

Classe Surfel

Classe StatusBar

Classe Transformer

A hierarquia de dados eacute a seguinte a Scene conteacutem vaacuterios Objects os

quais conteacutem SurfelColections Cada SurfelColections conteacutem Surfels que

suportam uma ou mais propriedades tais como cor difusa cor especular

Classe Scene Classe que representa uma cena que conteacutem modelos

Classe Object Um modelo eacute representado pela classe Object que

conteacutem uma SurfelCollection e as matrizes de transformaccedilatildeo para rotaccedilatildeo

escala e translaccedilatildeo Cada Object eacute identificado pelo seu nome que eacute uacutenico na

Scene O meacutetodo getUniqueName retorna um nome uacutenico Cada Object tem sua

proacutepria matriz de transformaccedilatildeo que pode ser modificada com setRotation

rotate setPosition translate setScale e scale Objects podem ser copiados com

copy Objects consiste em um conjunto de surfels os quais podem ser

recuperados pela getSurfelCollection O Object pode ser ativado com

setActiveObject e recuperado com getActiveObject

Objects podem ser adicionados ou removidos com addObject e

removeObject Os Objects podem ser obtidos pela getFirstObject e

getNextObject

Classe SurfelCollection representa o conjunto de surfels de um modelo

Cada surfelcollection consiste em um conjunto de surfels (SurfelInterface) de

tamanho obtido por getNofSurfels Os surfels podem ser recuperados com

getFirstSurfel getCurrentSurfel e getNextSurfel

A SurfelCollection conteacutem um PropertyDescriptor e uma SurfelList

A SurfelList eacute uma lista duplamente encadeada de surfels Possui os

atributos firstSurfel lastSurfel currentSurfel que satildeo ponteiros para uma

SurfelInterface nSurfels que eacute o nuacutemero de Surfels

A SurfelInterface define a API para os surfels que satildeo os menores

elementos que compotildeem um Object Podem ser considerados como pontos com

uma normal que define a orientaccedilatildeo do ciacuterculo (ou elipse) que seraacute desenhado

Melhorias Propostas 59

tatildeo logo o surfel seja renderizado Tem como atributos dois ponteiros (next e

prev) para SurfelInterface

PropertyDescriptor consiste em ateacute 32 valores descrevendo quais as

propriedades a SurfelInterface suporta

Classe Surfel classe que representa o surfel

Classe StatusBar classe que imprime mensagens na tela Os plugins

podem mandar mensagens para o usuaacuterio pela StatusBar

Mensagens texto podem ser impressas com showMessage O progresso

de uma operaccedilatildeo pode ser indicado com setProgress ou resetProgress

Classe Transformer representa a transformaccedilatildeo entre sistemas de

coordenadas Esta classe fornece meacutetodos para transformar pontos e vetores

entre os diferentes sistemas de coordenadas do Pointshop

A seguir apresentamos as principais estruturas de dados do plugin

Operaccedilotildees Booleanas

As principais estruturas de dados do plugin satildeo boundingbox tree no

lista_surfel surfel

Boundingbox conteacutem dois pontos 3D que definem uma caixa que conteacutem

o modelo um ponto com menores coordenadas xy e z e outro ponto com

maiores xyz

Tree representa a octree do modelo Cada registro conteacutem um ponteiro

para um noacute e oito ponteiros para as 8 octrees filhas

No representa um noacute da octree Conteacutem os seguintes dados

- localizaccedilatildeo do noacute que eacute o canto inferior esquerdo do noacute

- lista_surfel (preenchida apenas para noacutes folha cheios)

- quantidade de surfels do noacute

- classificaccedilatildeo do noacute como dentro fora ou contorno

- classificaccedilatildeo do noacute em relaccedilatildeo a outro modelo

- indica se o noacute eacute folha ou natildeo

- vetor que eacute a meacutedia das normais dos surfels do noacute

- ponto que eacute a meacutedia das localizaccedilotildees dos surfels do noacute

- surfel que tem (entre todos os surfels do noacute) o maior produto interno

entre a sua normal e a normal meacutedia

- surfel que tem (entre todos os surfels do noacute) o menor produto interno

entre a sua normal e a normal meacutedia

- produto interno maacuteximo e miacutenimo entre as normais dos surfels do noacute e a

normal meacutedia deste noacute

Melhorias Propostas 60

- indica se o noacute conteacutem surfels com normais em sentido oposto (produto

interno entre elas eacute menor que zero)

- classificaccedilatildeo dos oito cantos do noacute

lista_surfels lista em que cada registro conteacutem um apontador para um

surfel e um apontador para o proacuteximo registro

surfel representa o surfel da octree Conteacutem a classificaccedilatildeo em relaccedilatildeo a

outro modelo e um ponteiro para o surfel do Poinshop

Resultados 61

6 Resultados

Neste capiacutetulo apresentamos os testes realizados com o plugin para o

PointShop implementado para esta dissertaccedilatildeo a comparaccedilatildeo deste plugin com

o plugin de Pauly [3] e a comparaccedilatildeo entre o meacutetodo de Adams e Dutreacute [2] e o

meacutetodo de Pauly [3]

61 Testes

Os testes foram feitos em um PC x86 Family 6 261600 KB de RAM sem

placa graacutefica sistema operacional Windows 2000 O plugin foi implementado na

linguagem C

Os modelos usados para os testes satildeo modelos disponibilizados no

PointShop [11] Vale lembrar que o meacutetodo implementado em nosso plugin eacute

restrito a modelos soacutelidos e portanto foram usados apenas estes modelos

soacutelidos para os testes

O modelo na Figura 29 que eacute um dos modelos disponibilizados no

PointShop [11] foi usado para mostrar o resultado das operaccedilotildees realizadas

pelo plugin implementado nesta dissertaccedilatildeo O modelo Igea eacute um modelo soacutelido

que conteacutem 134345 surfels

Resultados 62

Figura 29-Modelo do PointShop Igea

Para realizar as operaccedilotildees este modelo foi carregado na cena do

PointShop duas vezes e um deles colorido de vermelho As Figuras 30 31 32

mostram o resultado da operaccedilatildeo de uniatildeo interseccedilatildeo e diferenccedila

respectivamente Os nuacutemeros de surfels dos modelos resultantes satildeo mostrados

na Tabela 2

Resultados 63

Figura 30-Resultado da uniatildeo de duas Igeas

Figura 31-Resultado da interseccedilatildeo de duas Igeas

Resultados 64

Figura 32-Resultado da diferenccedila entre duas Igeas

Tabela 2-Nuacutemero de surfels dos modelos resultantes

Observamos que o nuacutemero de surfels dos modelos resultantes estaacute

coerente com as figuras dos seus modelos

Para avaliar o tempo de processamento das operaccedilotildees foram realizados

vaacuterios testes com o objetivo de obter uma meacutedia dos tempos de realizaccedilatildeo de

cada operaccedilatildeo Tambeacutem foram armazenados os tempos da criaccedilatildeo das duas

octrees e da classificaccedilatildeo de todos os surfels dos dois objetos (como dentro ou

fora do outro modelo) Estes testes foram feitos usando o modelo Igea A meacutedia

dos tempos de processamento foi calculada e os resultados satildeo mostrados na

Tabela 3 Verificamos que o maior tempo gasto eacute para criaccedilatildeo das octrees

Verificamos tambeacutem que este resultado apresentado eacute similar ao resultado

verificado empiricamente com o plugin de Pauly [3] Os tempos gastos para

realizar as operaccedilotildees satildeo similares e o maior tempo gasto no plugin de Pauly

tambeacutem eacute para inicializaccedilatildeo de suas estruturas de dados que incluem a kd-tree

Operaccedilatildeo Nuacutemero de surfels do modelo resultado

Uniatildeo 189715

Interseccedilatildeo 72225

Diferenccedila 134552

Resultados 65

Operaccedilatildeo Criaccedilatildeo das

Octrees (seg)

Classificaccedilatildeo

(seg)

Criaccedilatildeo do

resultado (seg)

Total (seg)

Uniatildeo 39375 1324 18925 7154

Interseccedilatildeo 38585 1585 09547 63982

Diferenccedila 399875 1504 1729 729475

Tabela 3- Meacutedia dos tempos de processamento para as operaccedilotildees com duas Igeas

Com o objetivo de expor melhor os resultados deste trabalho

apresentamos abaixo mais um teste das operaccedilotildees booleanas usando o nosso

plugin Os modelos usados para este segundo teste satildeo o Max Planck e o Male

ambos modelos soacutelidos disponibilizados no PointShop Estes modelos satildeo

mostrados nas figura 33 e 34

O primeiro Max Planck conteacutem 52809 surfels

Figura 33-Modelo do PointShop MaxPlanck

O segundo modelo abaixo Male conteacutem 148138 surfels

Resultados 66

Figura 34-Modelo do PointShop Male

As Figuras 353637 mostram o resultado da operaccedilatildeo de uniatildeo interseccedilatildeo

e diferenccedila respectivamente usando os dois modelos acima Podemos observar

pela figura 35 que o resultado da operaccedilatildeo de diferenccedila neste caso gerou um

modelo resultado com trecircs partes desconexas Os nuacutemeros de surfels de cada

modelo resultado satildeo mostrados na Tabela 5

Figura 35- Resultado da Uniatildeo do modelo Male com MaxPlanck

Resultados 67

Figura 36-Resultado da interseccedilatildeo do modelo Male com o MaxPlanck

Figura 37-Resultado da diferenccedila do modelo Male do modelo MaxPlanck

As meacutedias de tempos de processamento foram calculadas da mesma

forma que o primeiro teste com o modelo Igea acima apresentado Os

resultados satildeo mostrados na Tabela 4 Podemos observar que este teste

Resultados 68

apresenta tempos um pouco menores que o teste com o modelo Igea Isto se

deve ao fato de que o modelo MaxPlanck ser significativamente menor que o

modelo Igea MaxPlanck possui 52809 surfels e Igea conteacutem 134345 surfels

Operaccedilatildeo Criaccedilatildeo das

Octrees (seg)

Classificaccedilatildeo

(seg)

Criaccedilatildeo do

resultado (seg)

Total

(seg)

Uniatildeo 3012 1254 102 5285

Interseccedilatildeo 2985 0901 0861 4747

Diferenccedila 2965 0911 0791 4667

Tabela 4-Tempo de processamento das operaccedilotildees com os modelos MaxPlanck e Male

Operaccedilatildeo Nuacutemero de surfels do resultado

Uniatildeo 126532

Interseccedilatildeo 88414

Diferenccedila 77635

Tabela 5-Nuacutemero de surfels dos modelos resultados das operaccedilotildees com os modelos MaxPlanck e Male

Em seguida apresentaremos uma comparaccedilatildeo entre o nosso plugin e o

plugin de Pauly[3] e tambeacutem uma comparaccedilatildeo entre o meacutetodo de Adams e Dutreacute

[2] e o meacutetodo de Pauly [3]

62 Comparaccedilatildeo entre os dois meacutetodos que realizam operaccedilotildees booleanas

A comparaccedilatildeo entre os meacutetodos de Pauly[3] e de Adams e Dutreacute foi feita

em termos de tempo de processamento e em termos conceituais Em termos de

tempo de processamento comparamos o plugin de Pauly[3] com o nosso plugin

Em termos de tempo de processamento verifica-se empiricamente que os

dois meacutetodos apresentam tempos bastante similares Entretanto o tempo de

processamento do algoritmo aqui implementado ainda pode ser melhorado com

Resultados 69

o uso do meacutetodo TINN [19] que foi proposto em Adams[2] - para otimizar a

pesquisa do surfel mais proacuteximo a um ponto que estaacute localizado na regiatildeo de um

noacute que conteacutem surfels - veja seccedilatildeo 42 O uso deste meacutetodo natildeo foi

implementado para este trabalho e a sua implementaccedilatildeo melhoraria o tempo de

resposta do algoritmo Aleacutem disso o trabalho de Sara F Frisken [12] citado no

capiacutetulo 2 apresenta uma otimizaccedilatildeo no uso de octrees que pode ser

incorporada no algoritmo implementado neste trabalho

Em termos conceituais vamos fazer a comparaccedilatildeo do uso do que

chamamos aqui de Regra 2 do tratamento de interseccedilatildeo e do tratamento de

ldquoarestas vivasrdquo

Como vimos na seccedilatildeo 41 tanto o algoritmo implementado nesta

dissertaccedilatildeo baseado no trabalho de Adams e Dutreacute como o meacutetodo de Pauly

[3] parte do que chamamos aqui de Regra 2 para realizar operaccedilotildees booleanas

com pontos Mas cada um destes meacutetodos daacute um tratamento diferente para o

uso desta regra

O meacutetodo de Pauly usa a Regra 2 para classificaccedilatildeo de cada ponto ou de

cada surfel Para classificar um surfel de B sb como dentro ou fora de A eacute

encontrado o surfel de A sa mais proacuteximo a sb e sb eacute classificado a partir de sa

Para encontrar sa Pauly utiliza uma kd-tree Como esta pesquisa para encontrar

sa eacute cara (mesmo usando uma kd-tree) Pauly utiliza uma esfera que conteacutem

pontos com a mesma classificaccedilatildeo (seccedilatildeo 432) e diminui em 90 este nuacutemero

de pesquisas Pauly utiliza tambeacutem a representaccedilatildeo impliacutecita MLS (Moving Least

Squares) para casos em que a Regra 2 poderia falhar e para tratamento de

interseccedilotildees Entretanto o nuacutemero destes casos em que a Regra 2 poderia falhar

eacute muito pequeno E a representaccedilatildeo MLS natildeo eacute uma estrutura simples de ser

implementada Portanto natildeo encontramos vantagens em usar MLS para estes

casos O meacutetodo de Adams e Dutreacute natildeo trata estes casos e na praacutetica

apresenta resultados bastante satisfatoacuterios como foi mostrado Portanto

consideramos que valeria a pena fazer algum tratamento especial para estes

casos se fosse um procedimento simples Para a execuccedilatildeo do algoritmo de

Pauly o uso de MLS natildeo interfere significativamente porque a construccedilatildeo desta

representaccedilatildeo natildeo eacute feita somente para realizar operaccedilotildees booleanas Os testes

empiacutericos que fizemos com o algoritmo de Pauly natildeo incluem a construccedilatildeo desta

representaccedilatildeo

Aparentemente os dois algoritmos satildeo bastante parecidos um usa octrees

e o outro usa kd-tree As duas estruturas de dados satildeo simples e otimizam a

classificaccedilatildeo dos surfels de um modelo como dentro ou fora do outro modelo

Resultados 70

Mas existe uma diferenccedila conceitual entre dois que merece ser destacada O

algoritmo aqui implementado usa a Regra 2 para classificaccedilatildeo dos noacutes de uma

octree e armazena esta octree classificada (ver capiacutetulo 5) Assim na maioria dos

casos natildeo seraacute necessaacuterio encontrar o surfel mais proacuteximo para classificar um

ponto (ou um surfel) como fora ou dentro de um modelo Caso o ponto esteja em

uma aacuterea da octree classificada ele teraacute a classificaccedilatildeo dada agravequela aacuterea A

pesquisa ao surfel mais proacuteximo seraacute feita apenas nos casos em que o ponto a

ser classificado estaacute localizado entre os planos que subdividem um noacute cheio

O uso desta octree classificada levanta uma questatildeo que natildeo foi citada no

trabalho de Adams e Dutreacute que eacute a proximidade desta estrutura (armazenada)

de octree classificada com uma representaccedilatildeo volumeacutetrica do objeto Sendo

assim esta estrutura pode ser aproveitada para outras funccedilotildees aleacutem da

classificaccedilatildeo dos surfels Por exemplo podemos ter uma aproximaccedilatildeo do

volume de uma cena somando os volumes aproximados dos modelos que a

compotildeem Como o enfoque deste trabalho eacute operaccedilatildeo booleana natildeo vamos nos

aprofundar nesta questatildeo

Outra importante diferenccedila entre os dois trabalhos que jaacute foi explicada na

seccedilatildeo 432 eacute que o meacutetodo de Pauly aplica-se a modelos soacutelidos ou natildeo

soacutelidos enquanto que o meacutetodo de Adams e Dutreacute aplica-se somente a modelos

soacutelidos

Quanto ao tratamento de interseccedilatildeo em termos de visualizaccedilatildeo todos os

dois resolvem bem o problema O tratamento de interseccedilatildeo nos dois trabalhos

tambeacutem resolve o problema da validade da Regra 2 (ver seccedilatildeo 44) Entretanto

o tratamento de Adams e Dutreacute natildeo depende da renderizaccedilatildeo sendo portanto

mais portaacutevel Aleacutem disso uma desvantagem do meacutetodo de Pauly eacute o uso da

representaccedilatildeo impliacutecita MLS (ldquoMoving Least Squaresrdquo) do objeto para obter os

pontos exatamente na curva de interseccedilatildeo Esta representaccedilatildeo torna o

tratamento de interseccedilatildeo mais complexo e a vantagem apresentada natildeo eacute tatildeo

significativa para este tratamento de interseccedilatildeo

Conclusatildeo 71

7 Conclusatildeo

Concluiacutemos entatildeo que as escolhas de Adams e Dutreacute por usar uma

octree classificada e pelo tratamento dado agrave interseccedilatildeo satildeo mais abrangentes

que a escolha de Pauly E consideramos que quanto mais abrangente for uma

escolha conceitual mais resultados poderemos tirar dela No caso de Adams e

Dutreacute eles estendem o problema de classificar um ponto para classificar todo o

modelo Como foi citado ele quase fornece uma representaccedilatildeo volumeacutetrica do

modelo Esta aproximada representaccedilatildeo volumeacutetrica pode nos fornecer outras

informaccedilotildees como por exemplo o volume aproximado do modelo

Aleacutem disso o uso da representaccedilatildeo impliacutecita MLS no meacutetodo de Pauly cria

uma complexidade a mais para o meacutetodo sem apresentar vantagens para a

realizaccedilatildeo de operaccedilotildees booleanas que eacute o nosso enfoque

Logo podemos dizer que o meacutetodo de Adams e Dutreacute apresenta as

seguintes vantagens em relaccedilatildeo ao de Pauly

- a estrutura de octree classificada aleacutem de ser usada para classificaccedilatildeo

fornece informaccedilotildees adicionais como volume aproximado do objeto

- o tempo de processamento no meacutetodo de Adams e Dutreacute tende a ser

melhor que no meacutetodo de Pauly se implementadas as melhorias acima citadas e

se colocaacutessemos em consideraccedilatildeo o uso da representaccedilatildeo impliacutecita MLS

(Moving Least Squares)

- o tratamento de interseccedilatildeo de Adams e Dutreacute apresenta a vantagem da

portabilidade ou seja iraacute funcionar independente do algoritmo de renderizaccedilatildeo

utilizado

E as vantagens do meacutetodo de Pauly em relaccedilatildeo ao de Adams e Dutreacute

- a colocaccedilatildeo de surfels exatamente na curva de interseccedilatildeo

- a possibilidade de trabalhar com modelos soacutelidos ou natildeo soacutelidos

E finalizando concluiacutemos que o estudo relatado nesta dissertaccedilatildeo foi

importante por

- fornecer um breve estudo sobre modelagem por pontos uma nova e

promissora aacuterea dentro da computaccedilatildeo graacutefica

Conclusatildeo 72

- por apresentar uma avaliaccedilatildeo dos dois trabalhos existentes sobre

operaccedilotildees booleanas com pontos encontrando as vantagens de cada um

e levantando questotildees que natildeo tinham sido citadas nos trabalhos originais

- por propor e implementar melhorias ao trabalho de Adams e Dutreacute

71 Trabalhos Futuros

Nossa implementaccedilatildeo pode ser ainda evoluiacuteda com as propostas

apresentadas na seccedilatildeo 62 Como observamos o tempo de processamento do

algoritmo aqui implementado ainda pode ser melhorado com o uso do meacutetodo

TINN [19] - que foi proposto em Adams[2] - para otimizar a pesquisa do surfel

mais proacuteximo a um ponto que estaacute localizado na regiatildeo de um noacute que conteacutem

surfels Aleacutem disso o trabalho Simple and Efficient Trasversal Methods for

Quadtrees and Octrees de Sara F Frisken [12] citado no capiacutetulo 2 apresenta

uma otimizaccedilatildeo no uso de octrees Outra proposta para melhorar o tempo de

processamento do algoritmo aqui implementado eacute usar a forma de trabalhar com

octrees apresentada neste trabalho

O trabalho de Adams e Dutreacute [2] eacute aplicado apenas a objetos soacutelidos O

nosso plugin portanto aplica-se somente a este tipo de objeto Jaacute o trabalho de

Pauly[3] eacute aplicado tambeacutem a modelos natildeo soacutelidos Apresentamos como

proposta a um trabalho futuro a extensatildeo do algoritmo aqui implementado para

modelos natildeo soacutelidos O surfel pode conter uma informaccedilatildeo adicional que indica

se ele estaacute delimitando um volume ou natildeo Assim pode-se ter um modelo com

ldquopartes soacutelidasrdquo e ldquopartes natildeo soacutelidasrdquo Por exemplo a uniatildeo de um plano com

uma esfera poderia resultar numa esfera com ldquoabasrdquo (seriam as partes do plano

que estariam fora da esfera) O modelo resultado teria uma parte correspondente

a um espaccedilo 3D (esfera) e outra parte que seria uma superfiacutecie 2D posicionada

no espaccedilo 3D sem delimitar algum volume (abas)

Muitos trabalhos podem ser desenvolvidos aplicando-se o modelo por

pontos em animaccedilatildeo jogos visualizaccedilatildeo de terrenos criaccedilatildeo de protoacutetipos etc

considerando-se a eficiecircncia e simplicidade do modelo E mais especificamente

as operaccedilotildees booleanas com pontos podem ser aplicadas para criaccedilatildeo de

cenaacuterios testes de colisotildees e nestes casos a representaccedilatildeo usando octrees

pode ser mais explorada considerando-se o seu potencial de representaccedilatildeo

volumeacutetrica de um objeto

Referecircncias Bibliograacuteficas 73

8 Referecircncias Bibliograacuteficas

[1] MAumlNTYLAuml M An Introduction to Solid Modeling Computer Science Press 1988

[2] ADAMS B DUTREacute P Interactive Boolean Operations on Surfel-

Bounded Solids Proceedings of SIGGRAPH 2003 San Diego USA 2003

[3] PAULY M KEISER R KOBBELT L GROSS M Shape Modeling

with Point-Sampled Geometry SIGGRAPH 2003 Computer Graphics

Proceedings Annual Conference Series ACM Press ACM SIGGRAPH 2003

[4] LEVOY M WHITTED T The Use of Points as Display Primitives

Technical Report TR 85-022 The University of North Carolina at Chapel Hill

Department of Computer Science 1985

[5] PFISTER H ZWICKER M VAN BAAR J GROSS M 2000 Surfels

Surface Elements as Rendering Primitives SIGGRAPH 2000 pp 335ndash342 New

Orleans LA July 23-28 2000

[6] ZWICKER M PFISTER H VAN BAAR J GROSS M Surface

Splatting SIGGRAPH 2001

[7] PAULY M KOBBELT L GROSS M Multiresolution Modeling of

Point-Sampled Geometry CS Techinical Report 378 September 16 2002

[8] CURLESS B New Methods for Surface Reconstruction from Range Images PhD thesis Stanford University 1997

[9] RUSINKIEWICZ S Real-time Acquisition and Rendering of Large 3D Models PhD thesis Stanford University 2001

Referecircncias Bibliograacuteficas 74

[10] AMENTA N BERN M KAMVYSSELIS M A new Voronoi-Based

Surface Reconstruction Algorithm SIGGRAPH 98 Conference proceedings pp

415-421 New York 1998

[11] ZWICKER M PAULY M KNOLL O GROSS M Pointshop 3D an

Interactive System for Point-Based Surface Editing Proceedings of SIGGRAPH 2002 San Antonio TX July 2002

[12] FRISKEN S PERRY R Simple and Efficient Traversal Methods for

Quadtrees and Octrees Journal of Graphics Tools Vol 7 Issue 3 May 2003

[13] CORREcircA W T OLIVEIRA M M Silva C T Wang J

Modeling and Rendering of Real Environments

Revista de Informaacutetica Teoacuterica e Aplicada (Brazilian Journal of Theoretic and Applied Computing) 9(2)127-156 2002

[14] DAVIS J MARSCHNER S GARR M LEVOY M Filling Holes in

Complex Surfaces Using Volumetric Diffusion First International Symposium on 3D Data Processing Visualization Transmission June 2002

[15] RAumlSAumlNEN J Surface Splatting Theory Extensions and Implementation Masterrsquos Thesis Dept of Computer Science Helsinki

University of Technology May 28 2002

[16] PAULY M Point Primitives for Interactive Modeling and Processing of 3D Geometry PhD thesis Federal Institute of Technology (ETH)

of Zurich 2003

[17] HOPPE H DEROSE T DUCHAMP T MCDONALD J

STUELZLE W Surface Reconstruction from Unorganized Points Computer Graphics 26(2)71ndash78 July 1992

[18] ALEXA M BEHR J COHEN-OR D FLEISHMAN S LEVIN D

SILVA C T Point Set Surfaces IEEE Visualization 2001 pp 21ndash28 October

2001

Referecircncias Bibliograacuteficas 75

[19] GREENSPAN M GODIN G TALBOT J Acceleration of Binning

Nearest Neighbor Methods Proceedings of Vision Interface 2000 pp 337-

344

[20] MENCL R Reconstruction of Surfaces from Unorganized Three-Dimensional Point Clouds Dissertation Dortmund Univ 2001

[21] KRIVANEK J Representing and Rendering Surfaces With Points

httpciteseernjneccomkrivanek03representinghtml Acesso em 30 jul

2003

[22] KRISTJANSSON ET AL Approximate Boolean Operations on Free-

form Solids Proceedings of SIGGRAPH 01 2001

Operaccedilotildees Booleanas com Pontos 37

No item anterior foram criadas duas octrees uma para o modelo S1 e

outra para o modelo S2 Chamemos de A e B as octrees de S1 e S2

respectivamente Para classificar S1 em relaccedilatildeo a S2 inicialmente eacute feita uma

avaliaccedilatildeo da posiccedilatildeo de A em relaccedilatildeo a B A e B podem estar nas seguintes

situaccedilotildees

- A natildeo intersecta B

- A intersecta apenas noacutes ldquoforardquo de B

- A intersecta apenas noacutes ldquodentrordquo de B

- A intersecta noacutes ldquoforardquo e noacutes ldquodentrordquo de B

Para testar estas situaccedilotildees os noacutes satildeo aumentados de rmax o raio do

maior surfel do modelo soacutelido Isto eacute feito para compensar o fato de que o surfel

natildeo eacute apenas um ponto mas sim considerado como um disco

No primeiro e no segundo caso todos os surfels de A satildeo classificados

como ldquoforardquo No terceiro caso todos os surfels de A satildeo classificados como

ldquodentrordquo

No quarto caso temos que percorrer a octree A Comeccedilando pelo noacute raiz

percorre-se os filhos deste noacute Para cada filho os quatro testes acima satildeo feitos

Se o noacute filho encontra-se em um dos trecircs primeiros casos a classificaccedilatildeo eacute dada

como foi citada acima Se um filho estaacute no quarto caso e natildeo eacute um noacute folha

repete-se recursivamente o mesmo procedimento para seus filhos ateacute encontrar-

se um noacute folha Para um noacute que estaacute no quarto caso e eacute folha percorre-se a lista

de surfels que este noacute conteacutem classificando cada um destes surfels Seja sa um

surfel desta lista Para este caso percorre-se a octree B para classificar sa

Primeiramente encontramos o noacute de B que conteacutem sa Se este noacute de B foi

dividido testa-se de acordo com esta divisatildeo do noacute se o surfel sa estaacute na parte

do noacute que estaacute dentro do modelo ele eacute classificado como ldquodentrordquo se sa estaacute na

parte que estaacute fora do modelo ele eacute classificado como ldquoforardquo se sa estaacute na parte

intermediaacuteria ou se o noacute de B natildeo foi subdividido em planos encontra-se sb que

eacute o surfel pertencente a este noacute de B que estaacute mais proacuteximo de sa sa seraacute

entatildeo classificado de acordo com sb Se ( sa - sb )٠ nb gt 0 sa eacute classificado

como ldquoforardquo senatildeo eacute classificado como ldquodentrordquo Se os discos de sb e sa se

intersectam sa eacute marcado como interseccedilatildeo Para encontrar sb o algoritmo

implementa o meacutetodo TINN ndash Triangle Inequality Nearest Neighbour [19]

Operaccedilotildees Booleanas com Pontos 38

4223 Tratamento da interseccedilatildeo

Os surfels de A que intersectam surfels de B satildeo classificados como

ldquointerseccedilatildeordquo Se eles natildeo forem incluiacutedos no modelo resultado o soacutelido resultado

teraacute buracos Se eles forem incluiacutedos sem algum tratamento eles natildeo

representaratildeo adequadamente a regiatildeo Em geral o surfel sa (um surfel

ldquointerseccedilatildeordquo de A) eacute dividido em dois pelo plano que conteacutem o surfel sb (surfel de

B que sa intersecta) uma parte que estaacute fora de B e outra que estaacute dentro de B

Dependendo da operaccedilatildeo que estaacute sendo realizada vamos querer manter uma

destas partes do surfel sa no modelo resultado Seja xa a posiccedilatildeo do surfel sa e o

surfel sa uma circunferecircncia de centro xa e raio ra igual ao raio de alcance de sa

O plano que conteacutem o surfel sb define uma corda desta circunferecircncia como

mostra a Figura 11 O surfel sa seraacute substituiacutedo por um surfel menor que

ultrapassa esta corda de uma distacircncia e definida pelo usuaacuterio Para cobrir

completamente a interseccedilatildeo seratildeo adicionados surfels menores que cruzam a

corda de interseccedilatildeo

Figura 11 -Interseccedilatildeo do surfel s e do plano que passa pelo surfel t o surfel mais proacuteximo a s O surfel s eacute substituiacutedo por trecircs surfels menores

Operaccedilotildees Booleanas com Pontos 39

O tratamento de interseccedilatildeo proposto por Adams e Dutreacute [2] natildeo soacute evita

os buracos mas tambeacutem cria uma forma de renderizaccedilatildeo de arestas vivas A

colocaccedilatildeo de vaacuterios pequenos surfels na regiatildeo da interseccedilatildeo permite esta

correta renderizaccedilatildeo das ldquoarestas vivasrdquo Desta forma o problema das arestas

vivas eacute resolvido na modelagem (Figura 12) A vantagem de se resolver o caso

na modelagem eacute que natildeo eacute necessaacuterio fazer um tratamento especial na

renderizaccedilatildeo para que mostre esta aresta viva Diferente do tratamento feito

em Pauly (seccedilatildeo 431) que resolve esta questatildeo em tempo de renderizaccedilatildeo

Aleacutem disso o tratamento resolve alguns casos onde a Regra 2 poderia falhar

(veja em Validade da Regra 2-seccedilatildeo 44)

Figura 12 [2] -Agrave direita eacute mostrado o resultado do tratamento de interseccedilatildeo para o caso de Arestas Vivas do objeto agrave esquerda

43 Meacutetodo de Pauly

O meacutetodo aplica-se a objetos soacutelidos e natildeo soacutelidos Os modelos podem ser

obtidos a partir de diferentes entradas como nuvem de pontos irregulares ou por

meio de scanners 3D Cria um modelo hiacutebrido destes objetos usa o modelo por

pontos juntamente com a representaccedilatildeo impliacutecita Moving Least Squares - MLS

[18] Realiza operaccedilotildees booleanas com pontos e utiliza adicionalmente MLS

para alguns casos de classificaccedilatildeo de surfels e no tratamento de interseccedilatildeo A

seguir apresentamos as caracteriacutesticas do modelo por pontos deste meacutetodo e o

algoritmo que realiza as operaccedilotildees

Operaccedilotildees Booleanas com Pontos 40

431 Modelo em Pauly

O modelo eacute uma estrutura hiacutebrida de pontos com a representaccedilatildeo impliacutecita

Moving Least Squares - MLS [18] Esta estrutura eacute usada para fazer operaccedilotildees

booleanas e tambeacutem operaccedilotildees de free-form (natildeo abordadas nesta

dissertaccedilatildeo) Para operaccedilotildees booleanas a representaccedilatildeo MLS permite que a

curva de interseccedilatildeo entre os modelos seja reconstruiacuteda e surfels sejam

colocados nesta curva e em alguns casos de classificaccedilatildeo de surfels mostrados

na seccedilatildeo 432 Para este modelo natildeo existem restriccedilotildees quanto agrave forma do

objeto

Os surfels contecircm informaccedilotildees sobre sua posiccedilatildeo e sua normal Aleacutem

disso surfels podem conter informaccedilotildees adicionais como textura cor

propriedades de materiais

A distribuiccedilatildeo dos surfels eacute natildeo-uniforme e a amostragem eacute

aproximadamente adequada (Veja seccedilatildeo 44)

432 Algoritmo de Operaccedilotildees Booleanas

O algoritmo classifica surfels de um modelo como ldquodentrordquo ou ldquoforardquo de

outro modelo Antes de colocarmos como eacute feita esta classificaccedilatildeo devemos

acrescentar que Pauly estende esta classificaccedilatildeo para modelos que natildeo satildeo

soacutelidos Ou seja mesmo um modelo natildeo soacutelido divide o espaccedilo da cena (espaccedilo

em que se encontra o modelo) em dois sub-espaccedilos dentro ou fora do modelo

Pauly faz esta subdivisatildeo da seguinte forma

Como a superfiacutecie que determina o modelo eacute orientada (conteacutem vetores

normais agrave superfiacutecie que apontam para ldquoforardquo do modelo) Pauly considera que

um modelo natildeo soacutelido divide o espaccedilo em dois sub-espaccedilos um ldquoforardquo do

modelo (os vetores normais apontam para este sub-espaccedilo) e um que estaacute

ldquodentrordquo do modelo (os vetores normais apontam para direccedilatildeo oposta a este sub-

espaccedilo) Por exemplo um plano eacute representado como um conjunto de surfels

contidos num determinado espaccedilo geomeacutetrico plano π Cada surfel conteacutem um

vetor normal direcionado Este modelo divide entatildeo o espaccedilo em dois sub-

espaccedilos o sub-espaccedilo que eacute apontado por estes surfels (considerado ldquoforardquo do

modelo) e o sub-espaccedilo que estaacute na direccedilatildeo oposta (considerado ldquodentrordquo do

modelo) Desta forma ele aplica as classificaccedilotildees de ldquodentrordquo e ldquoforardquo de um

modelo tambeacutem a modelos natildeo soacutelidos A partir desta consideraccedilatildeo as

Operaccedilotildees Booleanas com Pontos 41

operaccedilotildees booleanas satildeo realizadas com os modelos natildeo soacutelidos da mesma

forma que com os modelos soacutelidos

Para determinar esta classificaccedilatildeo (dentro ou fora do modelo) Pauly utiliza

a Regra 2 Para pesquisa do surfel mais proacuteximo o meacutetodo usa a estrutura Kd-

tree [16] e tambeacutem o algoritmo ANN [16] No entanto o meacutetodo apresenta uma

restriccedilatildeo da Regra 2 ela soacute deve ser usada para classificaccedilotildees de pontos x se

a distacircncia x-p for maior que o espaccedilamento da amostragem local ηp em p

Este espaccedilamento da amostragem local ηp em p eacute um caacutelculo aproximado da

distacircncia meacutedia entre os surfels vizinhos a p Se x estaacute muito proacuteximo agrave

superfiacutecie a classificaccedilatildeo pode falhar Neste caso ele calcula o ponto exato de

S mais proacuteximo a x usando a projeccedilatildeo MLS (ldquoMoving Least Squaresrdquo)

Por questotildees de melhoria de desempenho utiliza-se o fato de que sendo

Ωp (x) a classificaccedilatildeo do ponto x em relaccedilatildeo agrave amostragem P tem-se que Ωp (x)

= Ωp (xrsquo) para todos os pontos de xrsquo que estatildeo dentro da esfera de centro x e

raio igual a x-p - ηp (onde p eacute o surfel mais proacuteximo e ηp eacute o espaccedilamento

local da amostragem em p acima citado) Ou seja sendo x um ponto qualquer p

o surfel mais proacuteximo a x ηp eacute o espaccedilamento local da amostragem em p se

desenharmos uma esfera com centro x e raio igual a x-p - ηp temos que

todos os pontos xrsquo que estatildeo dentro da esfera teratildeo a mesma classificaccedilatildeo de x

Desta forma o nuacutemero de vezes que a classificaccedilatildeo eacute feita (pesquisando-se o

surfel mais proacuteximo ao ponto e usando a Regra 2) diminui em ateacute 90 Assim

em geral a classificaccedilatildeo de um surfel eacute obtida a partir do seu surfel vizinho

Dados

S1 a superfiacutecie MLS de contorno que define o modelo A

S2 a superfiacutecie MLS de contorno que define o modelo B

P1 o conjunto de surfels que representa a superfiacutecie S1

P2 o conjunto de surfels que representa a superfiacutecie S2

Ωp1 (x) a classificaccedilatildeo do ponto p em relaccedilatildeo a uma amostragem P1

Q1 o subconjunto de P1 que vai compor o resultado

Ωp2 (x) a classificaccedilatildeo do ponto p em relaccedilatildeo a uma amostragem P2

Q2 o subconjunto de P2 que vai compor o resultado

Os conjuntos Q1 e Q2 satildeo obtidos por meio da Tabela 1 mostrada abaixo

Operaccedilotildees Booleanas com Pontos 42

Tabela 1 Classificaccedilatildeo para operaccedilotildees booleanas

Para o tratamento de interseccedilatildeo neste meacutetodo satildeo computados pontos

que caem exatamente na curva de interseccedilatildeo e estes satildeo acrescentados ao

modelo resultado Estes pontos satildeo determinados de forma que a densidade da

amostragem vai crescendo agrave medida que os surfels se aproximam da curva de

interseccedilatildeo e convergem para este ponto de interseccedilatildeo como mostra a Figura

13

(a) (b) (c)

Figura 13 - Os novos surfels satildeo colocados exatamente na curva de interseccedilatildeo

e convergem para o ponto de interseccedilatildeo

A Figura 14 mostra o processo de encontrar os surfels que caem nesta

curva de interseccedilatildeo Inicialmente satildeo encontrados todos os pontos de Q1 e Q2

que estatildeo proacuteximos agrave curva de interseccedilatildeo por meio da funccedilatildeo de distacircncia do

operador de projeccedilatildeo MLS Em seguida procura-se todos os pares mais

proacuteximos (q1 є Q1 q2 є Q2 ) e computa-se o ponto q na curva de interseccedilatildeo da

seguinte forma (veja a Figura 14)Seja r o ponto na linha de interseccedilatildeo dos dois

planos tangentes em q1 e q2 e que estaacute mais proacuteximo a estes dois pontos isto eacute

que minimiza a distacircncia ||r-q1|| + ||r-q2|| r eacute a primeira aproximaccedilatildeo de q e agora

pode ser projetado sobre S1 e S2 para obter dois novos pontos de partida q1rsquo e q2

rsquo

para a iteraccedilatildeo Este procedimento pode ser repetido iterativamente ateacute que os

pontos q1 e q2 convirjam ao ponto q na curva de interseccedilatildeo Normalmente este

processo requer menos de trecircs iteraccedilotildees

Operaccedilotildees Booleanas com Pontos 43

(a) (b)

(c)

Figura 14 (a) Suponhamos a reta que eacute a interseccedilatildeo do plano tangente a S1 em q1 e o

plano tangente a S2 em q2 O ponto r eacute o ponto desta reta que estaacute mais proacuteximo a q1 e

q2 (b) r eacute projetado sobre S1 e S2 obtendo-se q1acute e q2acute dois novos pontos de partida

para nova iteraccedilatildeo (c) A nova iteraccedilatildeo gera r que eacute uma aproximaccedilatildeo melhor de q

Pauly faz o tratamento de arestas vivas em tempo de renderizaccedilatildeo Ele

faz uma alteraccedilatildeo no renderizador Marca os surfels de interseccedilatildeo e ao

renderizaacute-los satildeo cortados para gerar uma aresta viva

44 Validade da Regra 2

Os dois meacutetodos analisados nesta dissertaccedilatildeo utilizam a seguinte regra

para a classificaccedilatildeo de um surfel

Regra 2 dado um volume V determinado por uma superfiacutecie de contorno

S uma amostragem P da superfiacutecie S um ponto x qualquer um ponto p є P que

eacute a amostra mais proacutexima a x um vetor ny normal a S em p e orientado para

fora de S temos que (x ndash p) np gt 0 x notinV

Em [16] eacute colocado que esta regra eacute tirada da seguinte propriedade da

geometria diferencial (aqui chamada Propriedade 1)

Propriedade 1 Dado um volume V determinado por uma superfiacutecie de

contorno S contiacutenua e duplamente diferenciaacutevel um ponto x qualquer um ponto

Operaccedilotildees Booleanas com Pontos 44

y є S que eacute o ponto de S mais proacuteximo a x um vetor ny normal a S em y e

orientado para fora de S temos que (x ndash y) ny gt 0 x notinV

A Figura 15 ilustra esta propriedade

Figura 15 Para verificar se o ponto x estaacute fora de um contorno C encontra-se o ponto y

de C Se o produto interno entre a normal em y e o vetor que liga y a x for maior que

zero entatildeo x estaacute fora de C senatildeo estaacute dentro de C

Pauly assume que tendo uma amostragem P da superfiacutecie S podemos

usar a Propriedade 1 substituindo y por p o surfel mais proacuteximo ao ponto x (x ndash

p) np gt 0 x notinV (Regra 2) Esta amostragem P em seu trabalho eacute

(aproximadamente) uma ldquoamostragem adequadardquo Tambeacutem seu tratamento de

interseccedilatildeo cria uma aproximaccedilatildeo dela (seccedilatildeo 43) Empiricamente a

ldquodiscretizaccedilatildeo da propriedaderdquo eacute vaacutelida a partir desta suposiccedilatildeo Mas isso natildeo foi

demonstrado teoricamente em seu trabalho

Pauly coloca em [16] que natildeo existe ainda uma teoria matemaacutetica rigorosa

de amostragem anaacuteloga a teoria de Fourier para superfiacutecies discretas

A melhor aproximaccedilatildeo teoacuterica para esta aacuterea eacute o uso do Eixo Medial que

foi colocado em [10] Vamos descrever este trabalho brevemente nesta seccedilatildeo

Este trabalho apresenta um algoritmo de reconstruccedilatildeo de superfiacutecie que parte de

uma amostragem adequada (abaixo definida) de pontos e obteacutem uma malha

que eacute topologicamente equivalente agrave superfiacutecie do objeto e agrave medida que a

densidade da amostragem cresce a saiacuteda converge para esta superfiacutecie

Para definir amostragem adequada o trabalho parte do conceito de Eixo

Medial

Operaccedilotildees Booleanas com Pontos 45

ldquoEixo Medialrdquo de uma superfiacutecie 2D posicionada no R3 eacute o conjunto

(fechado) de pontos pi para os quais buscando-se o ponto da superfiacutecie que

estaacute mais proacuteximo a pi mais de um ponto pertencentes a esta superfiacutecie satildeo

encontrados A Figura 16 abaixo ilustra o Eixo Medial em 2D

Figura 16 [10] As curvas de cor mais clara satildeo o Eixo Medial da curva em preto

Em duas dimensotildees os veacutertices de Voronoi de uma amostragem densa

aproximam o ldquoEixo Medialrdquo da amostragem (mas esta propriedade natildeo se

estende a 3D) A Figura 17 mostra o Eixo Medial em 3D

Figura 17 [10] Em 3D geralmente o Eixo Medial eacute uma superfiacutecie 2D (em cor mais

clara) Aqui o quadrado eacute o Eixo Medial da superfiacutecie transparente que o contorna

Podemos definir agora a amostragem adequada da seguinte forma

Supondo uma superfiacutecie suave que quer dizer uma 2-manifold duplamente

diferenciaacutevel posicionada no R3 uma ldquoamostragem adequadardquo desta superfiacutecie eacute

aquela na qual a densidade da amostragem eacute (pelo menos) inversamente

proporcional agrave distacircncia ao ldquoEixo Medialrdquo A Figura 18 mostra uma amostragem

adequada

Operaccedilotildees Booleanas com Pontos 46

Figura 18 [10] A figura mostra o diagrama de Voronoi de uma amostragem de pontos S

Da mesma forma que o a amostragem aproxima a curva os veacutertices de Voronoi

aproximam o Eixo Medial

Na praacutetica na reconstruccedilatildeo da superfiacutecie uma aproximaccedilatildeo deste ldquoEixo

Medialrdquo eacute computada (devido agrave dificuldade de computaacute-lo exatamente e em

alguns casos ateacute impossibilidade)

Melhorias Propostas 47

5 Melhorias Propostas

No capiacutetulo 4 apresentamos dois meacutetodos que realizam operaccedilotildees

booleanas em modelos por pontos o meacutetodo de Adams e Dutreacute [2] e o meacutetodo

de Pauly[3] Para esta dissertaccedilatildeo usamos o meacutetodo de Adams e Dutreacute [2] e

propomos as seguintes melhorias

- Alteramos o momento em que eacute feita a classificaccedilatildeo da octree Fazemos

esta classificaccedilatildeo durante a sua criaccedilatildeo Os noacutes filhos de um noacute pai P qualquer

satildeo classificados logo apoacutes a criaccedilatildeo de todos estes filhos de P

independentemente do restante da octree ter sido criada Isso pode ser feito

porque a octree eacute construiacuteda na ordem raiz-esquerda-direita (preorder

traversal) e portanto apoacutes todos os filhos de um noacute pai serem criados a parte

necessaacuteria da octree para a classificaccedilatildeo destes filhos jaacute estaacute criada

- A classificaccedilatildeo da octree eacute otimizada classificando-se os cantos dos seus

noacutes como dentro ou fora do modelo Na classificaccedilatildeo de um noacute n1 a partir de seu

vizinho n2 se os cantos que satildeo comuns a n1 e n2 tiverem a mesma

classificaccedilatildeo esta seraacute dada ao noacute Assim diminuiacutemos o nuacutemero de pesquisas

pelo surfel mais proacuteximo que eacute a parte criacutetica da classificaccedilatildeo dos noacutes da octree

em termos de tempo de processamento

- Acrescentamos um valor miacutenimo (maior que zero) para o nuacutemero de

surfels contidos em um noacute que eacute uma das condiccedilotildees de parada na criaccedilatildeo da

octree Verificamos que desta forma diminui-se a chance de erro na classificaccedilatildeo

de partes criacuteticas como ldquoarestas vivasrdquo

Uma comparaccedilatildeo entre a nossa implementaccedilatildeo e a de Pauly tambeacutem seraacute

feita no capiacutetulo 6

51 Descriccedilatildeo do algoritmo

O algoritmo implementado para esta dissertaccedilatildeo baseado no meacutetodo de

Adams e Dutreacute [2] pode ser dividido nas seguintes partes Criaccedilatildeo e

classificaccedilatildeo de uma octree para cada modelo Teste DentroFora Criaccedilatildeo do

modelo resultado Natildeo foi implementado tratamento especial algum de

interseccedilatildeo para o nosso plugin As proacuteximas seccedilotildees apresentam estas partes

Melhorias Propostas 48

511 Criaccedilatildeo e classificaccedilatildeo de uma octree para cada modelo

As ideacuteias do algoritmo satildeo aqui ilustradas em 2D mas a extensatildeo delas

para 3D eacute feita facilmente

Para cada modelo a octree eacute criada e classificada da seguinte forma

Figura 19-Quadtree classificada Os noacutes mais escuros estatildeo fora do modelo os mais claros dentro e os em tom intermediaacuterio satildeo noacutes de contorno

Gera-se uma ldquocaixa envolventerdquo do modelo contendo todos os surfels e

cria-se o noacute raiz da octree que corresponde a esta ldquocaixa envolventerdquo Este noacute

raiz eacute subdividido em oito filhos e seus surfels satildeo distribuiacutedos entre eles Ao

inveacutes de testarmos os valores de xy e z para cada surfel a fim de determinar

para qual filho ele iraacute utilizamos listas auxiliares Primeiro os surfels satildeo

subdivididos em dois grupos pelos valores de x e armazenados em uma lista

auxiliar Em seguida cada uma das listas eacute subdividida pelo valor de y e as

quatro listas obtidas seratildeo subdivididas pelo valor de z Ao final teremos 8 listas

de surfels cada uma delas pertencente a um filho

Cada noacute seraacute entatildeo novamente subdividido enquanto contiver um nuacutemero

de surfels gt nmin (valor preacute-definido) ou enquanto a profundidade da aacutervore lt pmax

(valor preacute-definido) Na figura 19 pmax = 3 e nmin = 3

Melhorias Propostas 49

Figura 20-O noacute cheio eacute dividido em trecircs partes agrave esquerda a regiatildeo estaacute dentro do modelo agrave direita estaacute fora e entre as duas linhas que dividem o noacute estaacute a regiatildeo que conteacutem os surfels

Os noacutes cheios recebem um tratamento especial Eles satildeo subdivididos em

trecircs partes da seguinte forma uma que estaacute fora do modelo outra que estaacute

dentro e uma que conteacutem os surfels Esta subdivisatildeo eacute feita por meio da criaccedilatildeo

de dois planos paralelos que dividem o noacute Para determinar estes planos

calcula-se o vetor nm igual agrave meacutedia das normais dos surfels do noacute nm = sum ns

sum ns onde ns eacute a normal de cada surfel do noacute Em seguida encontra-se o

surfel com maior produto interno entre a sua normal e a normal meacutedia

d1=Max(nm ٠ ns) Este surfel juntamente com a normal meacutedia define um dos

planos Encontra-se tambeacutem o surfel com menor produto interno entre a sua

normal e a normal meacutedia d2=Min (nm ٠ ns) Este surfel juntamente com a normal

meacutedia define o outro plano (Figura 20) Se o noacute conteacutem surfels de superfiacutecies de

orientaccedilotildees diferentes ele natildeo seraacute subdividido ou seja os planos coincidiratildeo

com os planos que delimitam o proacuteprio noacute Este teste foi implementado da

seguinte forma escolhe-se um surfel qualquer do noacute Calcula-se o produto

interno entre a normal deste surfel e as outras normais dos outros surfels deste

noacute Se algum produto interno for menor que zero este noacute natildeo seraacute subdividido

Apoacutes a etapa de subdivisatildeo classificam-se os oito cantos deste noacute como

dentro ou fora do modelo por meio da classificaccedilatildeo de um ponto que

descreveremos na sub-seccedilatildeo 5111

Melhorias Propostas 50

a b

c d

Figura 21-O noacute a eacute classificado pelo noacute c o noacute d tambeacutem eacute classificado pelo noacute c a classificaccedilatildeo do noacute a eacute propagada para o noacute b

Jaacute os noacutes vazios da octree seratildeo classificados como ldquodentrordquo ou ldquoforardquo do

modelo da seguinte forma cada noacute folha vazio eacute classificado a partir de um de

seus irmatildeos vizinhos adjacentes Se ele possuir um vizinho adjacente cheio ele

seraacute classificado por este vizinho se natildeo possuir os vizinhos adjacentes seratildeo

classificados primeiro e ele teraacute esta mesma classificaccedilatildeo (Figura 21) Como tem

que existir sempre pelo menos um noacute cheio entre os filhos de um noacute pai entatildeo

sempre esta classificaccedilatildeo poderaacute ser feita Com a classificaccedilatildeo de todos os

filhos tem-se tambeacutem a classificaccedilatildeo dos cantos do noacute pai

Mf03c003fmx a b

Figura 22-Os cantos a e b do noacute cheio possuem a mesma classificaccedilatildeo fora do modelo Esta classificaccedilatildeo foi dada ao noacute vazio adjacente

Melhorias Propostas 51

Para classificar um noacute vazio por meio de um noacute cheio verificam-se os

cantos comuns destes dois noacutes se todos os cantos tiverem a mesma

classificaccedilatildeo esta seraacute dada ao noacute vazio (Figura 22) Se houver classificaccedilotildees

diferentes escolhe-se o surfel do noacute cheio mais proacuteximo ao noacute vazio faz-se o

produto interno entre a normal deste surfel e o vetor que liga o centro do noacute

cheio ao centro do noacute vazio (ou o vetor que liga o surfel ao centro do noacute vazio)

Se o produto interno for maior que zero o noacute eacute classificado como ldquoforardquo senatildeo eacute

classificado como ldquodentrordquo Para encontrar o surfel (pertencente a um noacute cheio)

mais proacuteximo ao noacute vazio existem dois casos

- O noacute cheio eacute folha percorre-se toda a lista de surfels e escolhe o surfel

mais proacuteximo da fronteira entre o noacute cheio e o vazio

- O noacute cheio natildeo eacute um noacute folha percorrem-se os filhos do noacute cheio ou seja

esta pesquisa eacute feita descendo na octree a partir do noacute cheio procurando o

surfel mais proacuteximo agrave fronteira do pai com o noacute vazio a ser classificado

Classificando o centro do noacute vazio todo o noacute deve ter a mesma

classificaccedilatildeo pois este noacute natildeo conteacutem surfels Para encontrar o surfel do noacute

vazio mais proacuteximo da fronteira entre o noacute cheio e o vazio basta testar o valor da

coordenada se a fronteira eacute o lado direito do noacute cheio escolhe-se o surfel com

maior coordenada lsquoxrsquo se eacute o lado esquerdo escolhe-se o surfel com menor lsquoxrsquo

se lado superior surfel com maior lsquoyrsquo etc A seguir apresentamos a classificaccedilatildeo

de um ponto qualquer pertencente a um noacute cheio

Figura 23- Quadtree classificada

Melhorias Propostas 52

5111 Classificaccedilatildeo de um ponto de um noacute cheio

Figura 24 [2] A normal n eacute a normal meacutedia e os surfels s1 e s2 juntamente com a normal

n definem as retas que dividem o noacute O ponto a estaacute fora do modelo e o ponto b estaacute

dentro do modelo

Para um ponto localizado dentro do noacute faz-se o seguinte teste se o noacute foi

dividido testa-se de acordo com a divisatildeo do noacute se o ponto estaacute na parte do noacute

que estaacute dentro do modelo ele eacute classificado como ldquodentrordquo se o ponto estaacute na

parte que estaacute fora do modelo ele eacute classificado como ldquoforardquo (Figura 24) se o

ponto estaacute na parte que conteacutem os surfels encontra-se o surfel s pertencente ao

noacute mais proacuteximo do ponto e o classifica de acordo com s seja ns a normal em s

cs a coordenada de s cp a coordenada do ponto Se (cp - cs )٠ ns gt 0 o ponto

seraacute classificado como ldquoforardquo Senatildeo seraacute classificado como ldquodentrordquo

Se o noacute natildeo foi dividido em planos esta classificaccedilatildeo a partir do surfel

mais proacuteximo seraacute sempre feita

512 Teste DentroFora

Melhorias Propostas 53

Figura 25-Duas circunferecircncias e suas quadtrees correspondentes

O Teste DentroFora classifica os surfels de um modelo como dentro ou

fora de outro modelo ou na sua interseccedilatildeo Este teste foi aqui implementado

exatamente como foi proposto em Adams e Dutreacute [2] exceto que natildeo foi

implementado o meacutetodo TINN - Triangle Inequality Nearest Neighbour [19]

Cada octree eacute percorrida verificando-se se os seus noacutes ou surfels estatildeo dentro

fora ou no contorno do outro modelo (Figura 25) Sejam A e B duas octrees e

queremos classificar a octree A As duas octrees (AB) satildeo percorridas partindo

da raiz

Para cada noacute de A existem quatro casos (Figura 26) Para testar estas

situaccedilotildees os boxes dos noacutes satildeo aumentados de rmax o raio do maior surfel do

modelo Isto eacute feito para compensar o fato de que o surfel natildeo eacute apenas um

ponto mas sim considerado como um disco

Os quatro casos satildeo

Se o noacute de A natildeo intersecta B entatildeo todos os surfels deste noacute satildeo

classificados como fora

Se o noacute de A intersecta apenas noacutes de B que estatildeo fora do modelo

todos os surfels deste noacute satildeo fora

Se o noacute de A intersecta apenas noacutes de B que estatildeo dentro do modelo

todos os surfels deste noacute satildeo dentro

Melhorias Propostas 54

Se o noacute de A intersecta noacutes de B que estatildeo dentro e tambeacutem noacutes de B

que estatildeo fora testa-se se este noacute de A eacute ou natildeo folha Se natildeo for folha

percorre-se os filhos deste noacute de A ateacute encontrar um noacute folha cheio que

intersecta B Para cada surfel sa deste noacute folha de A encontra-se o surfel de B

mais proacuteximo e classifica-se a coordenada de sa da forma apresentada na seccedilatildeo

5111 Seja sb o surfel usado na classificaccedilatildeo de sa Se os discos de sb e sa

se intersectam sa eacute classificado como ldquointerseccedilatildeordquo

(a) (b)

(c) (d)

Figura 26- a modelos natildeo se intersectam b modelo intersecta noacutes fora c modelo intersecta apenas noacutes dentro d modelo intersecta noacutes dentro e noacutes fora

513 Criaccedilatildeo do modelo resultado

Um novo modelo eacute criado com os seguintes surfels (de acordo com a

operaccedilatildeo booleana escolhida pelo usuaacuterio - veja Regra 1 da seccedilatildeo 41)

Uniatildeo - surfels de A que estatildeo fora de B + surfels de B que estatildeo fora de A

Melhorias Propostas 55

Interseccedilatildeo - surfels de A que estatildeo dentro de B + surfels de B que estatildeo

dentro de A

Diferenccedila A-B - surfels de A que estatildeo fora de B + surfels de B que estatildeo

dentro de A (com orientaccedilatildeo invertida)

Como natildeo foi implementado tratamento especial algum de interseccedilatildeo para

o nosso plugin os surfels que se intersectam satildeo mantidos no modelo resultado

final sem modificaccedilotildees

Descrito o algoritmo vejamos a seguir a sua implementaccedilatildeo

52 Implementaccedilatildeo

Este algoritmo foi implementado na forma de um plugin para o software

PointShop 3D [11] Este plugin foi desenvolvido na linguagem C e no sistema

operacional Windows

A escolha deste tipo de implementaccedilatildeo permitiu-nos usar o software

PointShop para os testes do algoritmo Estes testes foram feitos com os modelos

disponibilizados para o PointShop [11] Nesta seccedilatildeo apresentaremos o software

PointShop e as principais estruturas de dados usadas em nosso plugin

O Pointshop eacute um software aberto com seu coacutedigo disponiacutevel e preparado

para trabalhar com plugins Eacute um software de ediccedilatildeo de modelos 3D por pontos

Ele permite aleacutem de visualizar o modelo alterar as suas caracteriacutesticas como

cor brilho e fazer mapeamento de textura iluminaccedilatildeo filtragem (Figura 27)

Melhorias Propostas 56

Figura 27-Software PointShop 3D com dois modelos carregados na sua cena

Aleacutem disso pode-se criar uma cena com vaacuterios modelos e visualizaacute-los de

qualquer ponto de vista Implementa o virtual trackball para rotacionaacute-los e

transladaacute-los Usa uma iluminaccedilatildeo simples direcional A sua arquitetura eacute

extensiacutevel permite que o usuaacuterio adicione seus proacuteprios componentes ao

sistema Possui trecircs tipos de componentes

ldquoToolsrdquo fornece funcionalidades para ediccedilatildeo interativa de superfiacutecie Satildeo

disponibilizados na ldquotoolbarrdquo

Plugins fornece funcionalidades para processar em um soacute passo

modelos ou partes deles selecionadas Satildeo disponibilizados no menu ldquoPluginsrdquo

Renderes fornece funcionalidades de display para os modelos

Para esta dissertaccedilatildeo foi escolhida a construccedilatildeo do componente Plugin

por adequar-se agrave nossa proposta e ser a mais simples de ser construiacuteda O

PointShop [11] jaacute conteacutem uma tool que executa operaccedilotildees booleanas e

deformaccedilatildeo free-form sobre os modelos carregados na cena usando o meacutetodo

de Pauly [3] apresentado no capiacutetulo 4 O nosso plugin Operaccedilotildees Booleanas

implementa o algoritmo descrito na seccedilatildeo anterior baseado na proposta de

Melhorias Propostas 57

Adams e Dutreacute [2] Uma comparaccedilatildeo entre o nosso plugin e a tool de Pauly [3] eacute

feita no capiacutetulo 6

Figura 28-Menu do PointShop com o plugin e as opccedilotildees para operaccedilotildees booleanas

Para se executar o plugin o usuaacuterio precisa carregar dois modelos na

cena do PointShop acionar o plugin informando a operaccedilatildeo que seraacute executada

O plugin executaraacute o algoritmo acima proposto e carregaraacute o resultado na cena

do Pointshop retirando os modelos anteriores

521 Estruturas de Dados

Como vimos o software PointShop [11] trabalha com modelos por pontos

Um modelo deste software descrito na seccedilatildeo 42 conteacutem todas as informaccedilotildees

que o algoritmo proposto em Bart [2] necessita Abaixo relacionamos as

Melhorias Propostas 58

principais estruturas de dados do PointShop usadas no plugin e as principais

estruturas de dados do nosso plugin

As principais classes do PointShop usadas no plugin satildeo

Classe Scene

Classe Objects

Classe SurfelColections

Classe Surfel

Classe StatusBar

Classe Transformer

A hierarquia de dados eacute a seguinte a Scene conteacutem vaacuterios Objects os

quais conteacutem SurfelColections Cada SurfelColections conteacutem Surfels que

suportam uma ou mais propriedades tais como cor difusa cor especular

Classe Scene Classe que representa uma cena que conteacutem modelos

Classe Object Um modelo eacute representado pela classe Object que

conteacutem uma SurfelCollection e as matrizes de transformaccedilatildeo para rotaccedilatildeo

escala e translaccedilatildeo Cada Object eacute identificado pelo seu nome que eacute uacutenico na

Scene O meacutetodo getUniqueName retorna um nome uacutenico Cada Object tem sua

proacutepria matriz de transformaccedilatildeo que pode ser modificada com setRotation

rotate setPosition translate setScale e scale Objects podem ser copiados com

copy Objects consiste em um conjunto de surfels os quais podem ser

recuperados pela getSurfelCollection O Object pode ser ativado com

setActiveObject e recuperado com getActiveObject

Objects podem ser adicionados ou removidos com addObject e

removeObject Os Objects podem ser obtidos pela getFirstObject e

getNextObject

Classe SurfelCollection representa o conjunto de surfels de um modelo

Cada surfelcollection consiste em um conjunto de surfels (SurfelInterface) de

tamanho obtido por getNofSurfels Os surfels podem ser recuperados com

getFirstSurfel getCurrentSurfel e getNextSurfel

A SurfelCollection conteacutem um PropertyDescriptor e uma SurfelList

A SurfelList eacute uma lista duplamente encadeada de surfels Possui os

atributos firstSurfel lastSurfel currentSurfel que satildeo ponteiros para uma

SurfelInterface nSurfels que eacute o nuacutemero de Surfels

A SurfelInterface define a API para os surfels que satildeo os menores

elementos que compotildeem um Object Podem ser considerados como pontos com

uma normal que define a orientaccedilatildeo do ciacuterculo (ou elipse) que seraacute desenhado

Melhorias Propostas 59

tatildeo logo o surfel seja renderizado Tem como atributos dois ponteiros (next e

prev) para SurfelInterface

PropertyDescriptor consiste em ateacute 32 valores descrevendo quais as

propriedades a SurfelInterface suporta

Classe Surfel classe que representa o surfel

Classe StatusBar classe que imprime mensagens na tela Os plugins

podem mandar mensagens para o usuaacuterio pela StatusBar

Mensagens texto podem ser impressas com showMessage O progresso

de uma operaccedilatildeo pode ser indicado com setProgress ou resetProgress

Classe Transformer representa a transformaccedilatildeo entre sistemas de

coordenadas Esta classe fornece meacutetodos para transformar pontos e vetores

entre os diferentes sistemas de coordenadas do Pointshop

A seguir apresentamos as principais estruturas de dados do plugin

Operaccedilotildees Booleanas

As principais estruturas de dados do plugin satildeo boundingbox tree no

lista_surfel surfel

Boundingbox conteacutem dois pontos 3D que definem uma caixa que conteacutem

o modelo um ponto com menores coordenadas xy e z e outro ponto com

maiores xyz

Tree representa a octree do modelo Cada registro conteacutem um ponteiro

para um noacute e oito ponteiros para as 8 octrees filhas

No representa um noacute da octree Conteacutem os seguintes dados

- localizaccedilatildeo do noacute que eacute o canto inferior esquerdo do noacute

- lista_surfel (preenchida apenas para noacutes folha cheios)

- quantidade de surfels do noacute

- classificaccedilatildeo do noacute como dentro fora ou contorno

- classificaccedilatildeo do noacute em relaccedilatildeo a outro modelo

- indica se o noacute eacute folha ou natildeo

- vetor que eacute a meacutedia das normais dos surfels do noacute

- ponto que eacute a meacutedia das localizaccedilotildees dos surfels do noacute

- surfel que tem (entre todos os surfels do noacute) o maior produto interno

entre a sua normal e a normal meacutedia

- surfel que tem (entre todos os surfels do noacute) o menor produto interno

entre a sua normal e a normal meacutedia

- produto interno maacuteximo e miacutenimo entre as normais dos surfels do noacute e a

normal meacutedia deste noacute

Melhorias Propostas 60

- indica se o noacute conteacutem surfels com normais em sentido oposto (produto

interno entre elas eacute menor que zero)

- classificaccedilatildeo dos oito cantos do noacute

lista_surfels lista em que cada registro conteacutem um apontador para um

surfel e um apontador para o proacuteximo registro

surfel representa o surfel da octree Conteacutem a classificaccedilatildeo em relaccedilatildeo a

outro modelo e um ponteiro para o surfel do Poinshop

Resultados 61

6 Resultados

Neste capiacutetulo apresentamos os testes realizados com o plugin para o

PointShop implementado para esta dissertaccedilatildeo a comparaccedilatildeo deste plugin com

o plugin de Pauly [3] e a comparaccedilatildeo entre o meacutetodo de Adams e Dutreacute [2] e o

meacutetodo de Pauly [3]

61 Testes

Os testes foram feitos em um PC x86 Family 6 261600 KB de RAM sem

placa graacutefica sistema operacional Windows 2000 O plugin foi implementado na

linguagem C

Os modelos usados para os testes satildeo modelos disponibilizados no

PointShop [11] Vale lembrar que o meacutetodo implementado em nosso plugin eacute

restrito a modelos soacutelidos e portanto foram usados apenas estes modelos

soacutelidos para os testes

O modelo na Figura 29 que eacute um dos modelos disponibilizados no

PointShop [11] foi usado para mostrar o resultado das operaccedilotildees realizadas

pelo plugin implementado nesta dissertaccedilatildeo O modelo Igea eacute um modelo soacutelido

que conteacutem 134345 surfels

Resultados 62

Figura 29-Modelo do PointShop Igea

Para realizar as operaccedilotildees este modelo foi carregado na cena do

PointShop duas vezes e um deles colorido de vermelho As Figuras 30 31 32

mostram o resultado da operaccedilatildeo de uniatildeo interseccedilatildeo e diferenccedila

respectivamente Os nuacutemeros de surfels dos modelos resultantes satildeo mostrados

na Tabela 2

Resultados 63

Figura 30-Resultado da uniatildeo de duas Igeas

Figura 31-Resultado da interseccedilatildeo de duas Igeas

Resultados 64

Figura 32-Resultado da diferenccedila entre duas Igeas

Tabela 2-Nuacutemero de surfels dos modelos resultantes

Observamos que o nuacutemero de surfels dos modelos resultantes estaacute

coerente com as figuras dos seus modelos

Para avaliar o tempo de processamento das operaccedilotildees foram realizados

vaacuterios testes com o objetivo de obter uma meacutedia dos tempos de realizaccedilatildeo de

cada operaccedilatildeo Tambeacutem foram armazenados os tempos da criaccedilatildeo das duas

octrees e da classificaccedilatildeo de todos os surfels dos dois objetos (como dentro ou

fora do outro modelo) Estes testes foram feitos usando o modelo Igea A meacutedia

dos tempos de processamento foi calculada e os resultados satildeo mostrados na

Tabela 3 Verificamos que o maior tempo gasto eacute para criaccedilatildeo das octrees

Verificamos tambeacutem que este resultado apresentado eacute similar ao resultado

verificado empiricamente com o plugin de Pauly [3] Os tempos gastos para

realizar as operaccedilotildees satildeo similares e o maior tempo gasto no plugin de Pauly

tambeacutem eacute para inicializaccedilatildeo de suas estruturas de dados que incluem a kd-tree

Operaccedilatildeo Nuacutemero de surfels do modelo resultado

Uniatildeo 189715

Interseccedilatildeo 72225

Diferenccedila 134552

Resultados 65

Operaccedilatildeo Criaccedilatildeo das

Octrees (seg)

Classificaccedilatildeo

(seg)

Criaccedilatildeo do

resultado (seg)

Total (seg)

Uniatildeo 39375 1324 18925 7154

Interseccedilatildeo 38585 1585 09547 63982

Diferenccedila 399875 1504 1729 729475

Tabela 3- Meacutedia dos tempos de processamento para as operaccedilotildees com duas Igeas

Com o objetivo de expor melhor os resultados deste trabalho

apresentamos abaixo mais um teste das operaccedilotildees booleanas usando o nosso

plugin Os modelos usados para este segundo teste satildeo o Max Planck e o Male

ambos modelos soacutelidos disponibilizados no PointShop Estes modelos satildeo

mostrados nas figura 33 e 34

O primeiro Max Planck conteacutem 52809 surfels

Figura 33-Modelo do PointShop MaxPlanck

O segundo modelo abaixo Male conteacutem 148138 surfels

Resultados 66

Figura 34-Modelo do PointShop Male

As Figuras 353637 mostram o resultado da operaccedilatildeo de uniatildeo interseccedilatildeo

e diferenccedila respectivamente usando os dois modelos acima Podemos observar

pela figura 35 que o resultado da operaccedilatildeo de diferenccedila neste caso gerou um

modelo resultado com trecircs partes desconexas Os nuacutemeros de surfels de cada

modelo resultado satildeo mostrados na Tabela 5

Figura 35- Resultado da Uniatildeo do modelo Male com MaxPlanck

Resultados 67

Figura 36-Resultado da interseccedilatildeo do modelo Male com o MaxPlanck

Figura 37-Resultado da diferenccedila do modelo Male do modelo MaxPlanck

As meacutedias de tempos de processamento foram calculadas da mesma

forma que o primeiro teste com o modelo Igea acima apresentado Os

resultados satildeo mostrados na Tabela 4 Podemos observar que este teste

Resultados 68

apresenta tempos um pouco menores que o teste com o modelo Igea Isto se

deve ao fato de que o modelo MaxPlanck ser significativamente menor que o

modelo Igea MaxPlanck possui 52809 surfels e Igea conteacutem 134345 surfels

Operaccedilatildeo Criaccedilatildeo das

Octrees (seg)

Classificaccedilatildeo

(seg)

Criaccedilatildeo do

resultado (seg)

Total

(seg)

Uniatildeo 3012 1254 102 5285

Interseccedilatildeo 2985 0901 0861 4747

Diferenccedila 2965 0911 0791 4667

Tabela 4-Tempo de processamento das operaccedilotildees com os modelos MaxPlanck e Male

Operaccedilatildeo Nuacutemero de surfels do resultado

Uniatildeo 126532

Interseccedilatildeo 88414

Diferenccedila 77635

Tabela 5-Nuacutemero de surfels dos modelos resultados das operaccedilotildees com os modelos MaxPlanck e Male

Em seguida apresentaremos uma comparaccedilatildeo entre o nosso plugin e o

plugin de Pauly[3] e tambeacutem uma comparaccedilatildeo entre o meacutetodo de Adams e Dutreacute

[2] e o meacutetodo de Pauly [3]

62 Comparaccedilatildeo entre os dois meacutetodos que realizam operaccedilotildees booleanas

A comparaccedilatildeo entre os meacutetodos de Pauly[3] e de Adams e Dutreacute foi feita

em termos de tempo de processamento e em termos conceituais Em termos de

tempo de processamento comparamos o plugin de Pauly[3] com o nosso plugin

Em termos de tempo de processamento verifica-se empiricamente que os

dois meacutetodos apresentam tempos bastante similares Entretanto o tempo de

processamento do algoritmo aqui implementado ainda pode ser melhorado com

Resultados 69

o uso do meacutetodo TINN [19] que foi proposto em Adams[2] - para otimizar a

pesquisa do surfel mais proacuteximo a um ponto que estaacute localizado na regiatildeo de um

noacute que conteacutem surfels - veja seccedilatildeo 42 O uso deste meacutetodo natildeo foi

implementado para este trabalho e a sua implementaccedilatildeo melhoraria o tempo de

resposta do algoritmo Aleacutem disso o trabalho de Sara F Frisken [12] citado no

capiacutetulo 2 apresenta uma otimizaccedilatildeo no uso de octrees que pode ser

incorporada no algoritmo implementado neste trabalho

Em termos conceituais vamos fazer a comparaccedilatildeo do uso do que

chamamos aqui de Regra 2 do tratamento de interseccedilatildeo e do tratamento de

ldquoarestas vivasrdquo

Como vimos na seccedilatildeo 41 tanto o algoritmo implementado nesta

dissertaccedilatildeo baseado no trabalho de Adams e Dutreacute como o meacutetodo de Pauly

[3] parte do que chamamos aqui de Regra 2 para realizar operaccedilotildees booleanas

com pontos Mas cada um destes meacutetodos daacute um tratamento diferente para o

uso desta regra

O meacutetodo de Pauly usa a Regra 2 para classificaccedilatildeo de cada ponto ou de

cada surfel Para classificar um surfel de B sb como dentro ou fora de A eacute

encontrado o surfel de A sa mais proacuteximo a sb e sb eacute classificado a partir de sa

Para encontrar sa Pauly utiliza uma kd-tree Como esta pesquisa para encontrar

sa eacute cara (mesmo usando uma kd-tree) Pauly utiliza uma esfera que conteacutem

pontos com a mesma classificaccedilatildeo (seccedilatildeo 432) e diminui em 90 este nuacutemero

de pesquisas Pauly utiliza tambeacutem a representaccedilatildeo impliacutecita MLS (Moving Least

Squares) para casos em que a Regra 2 poderia falhar e para tratamento de

interseccedilotildees Entretanto o nuacutemero destes casos em que a Regra 2 poderia falhar

eacute muito pequeno E a representaccedilatildeo MLS natildeo eacute uma estrutura simples de ser

implementada Portanto natildeo encontramos vantagens em usar MLS para estes

casos O meacutetodo de Adams e Dutreacute natildeo trata estes casos e na praacutetica

apresenta resultados bastante satisfatoacuterios como foi mostrado Portanto

consideramos que valeria a pena fazer algum tratamento especial para estes

casos se fosse um procedimento simples Para a execuccedilatildeo do algoritmo de

Pauly o uso de MLS natildeo interfere significativamente porque a construccedilatildeo desta

representaccedilatildeo natildeo eacute feita somente para realizar operaccedilotildees booleanas Os testes

empiacutericos que fizemos com o algoritmo de Pauly natildeo incluem a construccedilatildeo desta

representaccedilatildeo

Aparentemente os dois algoritmos satildeo bastante parecidos um usa octrees

e o outro usa kd-tree As duas estruturas de dados satildeo simples e otimizam a

classificaccedilatildeo dos surfels de um modelo como dentro ou fora do outro modelo

Resultados 70

Mas existe uma diferenccedila conceitual entre dois que merece ser destacada O

algoritmo aqui implementado usa a Regra 2 para classificaccedilatildeo dos noacutes de uma

octree e armazena esta octree classificada (ver capiacutetulo 5) Assim na maioria dos

casos natildeo seraacute necessaacuterio encontrar o surfel mais proacuteximo para classificar um

ponto (ou um surfel) como fora ou dentro de um modelo Caso o ponto esteja em

uma aacuterea da octree classificada ele teraacute a classificaccedilatildeo dada agravequela aacuterea A

pesquisa ao surfel mais proacuteximo seraacute feita apenas nos casos em que o ponto a

ser classificado estaacute localizado entre os planos que subdividem um noacute cheio

O uso desta octree classificada levanta uma questatildeo que natildeo foi citada no

trabalho de Adams e Dutreacute que eacute a proximidade desta estrutura (armazenada)

de octree classificada com uma representaccedilatildeo volumeacutetrica do objeto Sendo

assim esta estrutura pode ser aproveitada para outras funccedilotildees aleacutem da

classificaccedilatildeo dos surfels Por exemplo podemos ter uma aproximaccedilatildeo do

volume de uma cena somando os volumes aproximados dos modelos que a

compotildeem Como o enfoque deste trabalho eacute operaccedilatildeo booleana natildeo vamos nos

aprofundar nesta questatildeo

Outra importante diferenccedila entre os dois trabalhos que jaacute foi explicada na

seccedilatildeo 432 eacute que o meacutetodo de Pauly aplica-se a modelos soacutelidos ou natildeo

soacutelidos enquanto que o meacutetodo de Adams e Dutreacute aplica-se somente a modelos

soacutelidos

Quanto ao tratamento de interseccedilatildeo em termos de visualizaccedilatildeo todos os

dois resolvem bem o problema O tratamento de interseccedilatildeo nos dois trabalhos

tambeacutem resolve o problema da validade da Regra 2 (ver seccedilatildeo 44) Entretanto

o tratamento de Adams e Dutreacute natildeo depende da renderizaccedilatildeo sendo portanto

mais portaacutevel Aleacutem disso uma desvantagem do meacutetodo de Pauly eacute o uso da

representaccedilatildeo impliacutecita MLS (ldquoMoving Least Squaresrdquo) do objeto para obter os

pontos exatamente na curva de interseccedilatildeo Esta representaccedilatildeo torna o

tratamento de interseccedilatildeo mais complexo e a vantagem apresentada natildeo eacute tatildeo

significativa para este tratamento de interseccedilatildeo

Conclusatildeo 71

7 Conclusatildeo

Concluiacutemos entatildeo que as escolhas de Adams e Dutreacute por usar uma

octree classificada e pelo tratamento dado agrave interseccedilatildeo satildeo mais abrangentes

que a escolha de Pauly E consideramos que quanto mais abrangente for uma

escolha conceitual mais resultados poderemos tirar dela No caso de Adams e

Dutreacute eles estendem o problema de classificar um ponto para classificar todo o

modelo Como foi citado ele quase fornece uma representaccedilatildeo volumeacutetrica do

modelo Esta aproximada representaccedilatildeo volumeacutetrica pode nos fornecer outras

informaccedilotildees como por exemplo o volume aproximado do modelo

Aleacutem disso o uso da representaccedilatildeo impliacutecita MLS no meacutetodo de Pauly cria

uma complexidade a mais para o meacutetodo sem apresentar vantagens para a

realizaccedilatildeo de operaccedilotildees booleanas que eacute o nosso enfoque

Logo podemos dizer que o meacutetodo de Adams e Dutreacute apresenta as

seguintes vantagens em relaccedilatildeo ao de Pauly

- a estrutura de octree classificada aleacutem de ser usada para classificaccedilatildeo

fornece informaccedilotildees adicionais como volume aproximado do objeto

- o tempo de processamento no meacutetodo de Adams e Dutreacute tende a ser

melhor que no meacutetodo de Pauly se implementadas as melhorias acima citadas e

se colocaacutessemos em consideraccedilatildeo o uso da representaccedilatildeo impliacutecita MLS

(Moving Least Squares)

- o tratamento de interseccedilatildeo de Adams e Dutreacute apresenta a vantagem da

portabilidade ou seja iraacute funcionar independente do algoritmo de renderizaccedilatildeo

utilizado

E as vantagens do meacutetodo de Pauly em relaccedilatildeo ao de Adams e Dutreacute

- a colocaccedilatildeo de surfels exatamente na curva de interseccedilatildeo

- a possibilidade de trabalhar com modelos soacutelidos ou natildeo soacutelidos

E finalizando concluiacutemos que o estudo relatado nesta dissertaccedilatildeo foi

importante por

- fornecer um breve estudo sobre modelagem por pontos uma nova e

promissora aacuterea dentro da computaccedilatildeo graacutefica

Conclusatildeo 72

- por apresentar uma avaliaccedilatildeo dos dois trabalhos existentes sobre

operaccedilotildees booleanas com pontos encontrando as vantagens de cada um

e levantando questotildees que natildeo tinham sido citadas nos trabalhos originais

- por propor e implementar melhorias ao trabalho de Adams e Dutreacute

71 Trabalhos Futuros

Nossa implementaccedilatildeo pode ser ainda evoluiacuteda com as propostas

apresentadas na seccedilatildeo 62 Como observamos o tempo de processamento do

algoritmo aqui implementado ainda pode ser melhorado com o uso do meacutetodo

TINN [19] - que foi proposto em Adams[2] - para otimizar a pesquisa do surfel

mais proacuteximo a um ponto que estaacute localizado na regiatildeo de um noacute que conteacutem

surfels Aleacutem disso o trabalho Simple and Efficient Trasversal Methods for

Quadtrees and Octrees de Sara F Frisken [12] citado no capiacutetulo 2 apresenta

uma otimizaccedilatildeo no uso de octrees Outra proposta para melhorar o tempo de

processamento do algoritmo aqui implementado eacute usar a forma de trabalhar com

octrees apresentada neste trabalho

O trabalho de Adams e Dutreacute [2] eacute aplicado apenas a objetos soacutelidos O

nosso plugin portanto aplica-se somente a este tipo de objeto Jaacute o trabalho de

Pauly[3] eacute aplicado tambeacutem a modelos natildeo soacutelidos Apresentamos como

proposta a um trabalho futuro a extensatildeo do algoritmo aqui implementado para

modelos natildeo soacutelidos O surfel pode conter uma informaccedilatildeo adicional que indica

se ele estaacute delimitando um volume ou natildeo Assim pode-se ter um modelo com

ldquopartes soacutelidasrdquo e ldquopartes natildeo soacutelidasrdquo Por exemplo a uniatildeo de um plano com

uma esfera poderia resultar numa esfera com ldquoabasrdquo (seriam as partes do plano

que estariam fora da esfera) O modelo resultado teria uma parte correspondente

a um espaccedilo 3D (esfera) e outra parte que seria uma superfiacutecie 2D posicionada

no espaccedilo 3D sem delimitar algum volume (abas)

Muitos trabalhos podem ser desenvolvidos aplicando-se o modelo por

pontos em animaccedilatildeo jogos visualizaccedilatildeo de terrenos criaccedilatildeo de protoacutetipos etc

considerando-se a eficiecircncia e simplicidade do modelo E mais especificamente

as operaccedilotildees booleanas com pontos podem ser aplicadas para criaccedilatildeo de

cenaacuterios testes de colisotildees e nestes casos a representaccedilatildeo usando octrees

pode ser mais explorada considerando-se o seu potencial de representaccedilatildeo

volumeacutetrica de um objeto

Referecircncias Bibliograacuteficas 73

8 Referecircncias Bibliograacuteficas

[1] MAumlNTYLAuml M An Introduction to Solid Modeling Computer Science Press 1988

[2] ADAMS B DUTREacute P Interactive Boolean Operations on Surfel-

Bounded Solids Proceedings of SIGGRAPH 2003 San Diego USA 2003

[3] PAULY M KEISER R KOBBELT L GROSS M Shape Modeling

with Point-Sampled Geometry SIGGRAPH 2003 Computer Graphics

Proceedings Annual Conference Series ACM Press ACM SIGGRAPH 2003

[4] LEVOY M WHITTED T The Use of Points as Display Primitives

Technical Report TR 85-022 The University of North Carolina at Chapel Hill

Department of Computer Science 1985

[5] PFISTER H ZWICKER M VAN BAAR J GROSS M 2000 Surfels

Surface Elements as Rendering Primitives SIGGRAPH 2000 pp 335ndash342 New

Orleans LA July 23-28 2000

[6] ZWICKER M PFISTER H VAN BAAR J GROSS M Surface

Splatting SIGGRAPH 2001

[7] PAULY M KOBBELT L GROSS M Multiresolution Modeling of

Point-Sampled Geometry CS Techinical Report 378 September 16 2002

[8] CURLESS B New Methods for Surface Reconstruction from Range Images PhD thesis Stanford University 1997

[9] RUSINKIEWICZ S Real-time Acquisition and Rendering of Large 3D Models PhD thesis Stanford University 2001

Referecircncias Bibliograacuteficas 74

[10] AMENTA N BERN M KAMVYSSELIS M A new Voronoi-Based

Surface Reconstruction Algorithm SIGGRAPH 98 Conference proceedings pp

415-421 New York 1998

[11] ZWICKER M PAULY M KNOLL O GROSS M Pointshop 3D an

Interactive System for Point-Based Surface Editing Proceedings of SIGGRAPH 2002 San Antonio TX July 2002

[12] FRISKEN S PERRY R Simple and Efficient Traversal Methods for

Quadtrees and Octrees Journal of Graphics Tools Vol 7 Issue 3 May 2003

[13] CORREcircA W T OLIVEIRA M M Silva C T Wang J

Modeling and Rendering of Real Environments

Revista de Informaacutetica Teoacuterica e Aplicada (Brazilian Journal of Theoretic and Applied Computing) 9(2)127-156 2002

[14] DAVIS J MARSCHNER S GARR M LEVOY M Filling Holes in

Complex Surfaces Using Volumetric Diffusion First International Symposium on 3D Data Processing Visualization Transmission June 2002

[15] RAumlSAumlNEN J Surface Splatting Theory Extensions and Implementation Masterrsquos Thesis Dept of Computer Science Helsinki

University of Technology May 28 2002

[16] PAULY M Point Primitives for Interactive Modeling and Processing of 3D Geometry PhD thesis Federal Institute of Technology (ETH)

of Zurich 2003

[17] HOPPE H DEROSE T DUCHAMP T MCDONALD J

STUELZLE W Surface Reconstruction from Unorganized Points Computer Graphics 26(2)71ndash78 July 1992

[18] ALEXA M BEHR J COHEN-OR D FLEISHMAN S LEVIN D

SILVA C T Point Set Surfaces IEEE Visualization 2001 pp 21ndash28 October

2001

Referecircncias Bibliograacuteficas 75

[19] GREENSPAN M GODIN G TALBOT J Acceleration of Binning

Nearest Neighbor Methods Proceedings of Vision Interface 2000 pp 337-

344

[20] MENCL R Reconstruction of Surfaces from Unorganized Three-Dimensional Point Clouds Dissertation Dortmund Univ 2001

[21] KRIVANEK J Representing and Rendering Surfaces With Points

httpciteseernjneccomkrivanek03representinghtml Acesso em 30 jul

2003

[22] KRISTJANSSON ET AL Approximate Boolean Operations on Free-

form Solids Proceedings of SIGGRAPH 01 2001

Operaccedilotildees Booleanas com Pontos 38

4223 Tratamento da interseccedilatildeo

Os surfels de A que intersectam surfels de B satildeo classificados como

ldquointerseccedilatildeordquo Se eles natildeo forem incluiacutedos no modelo resultado o soacutelido resultado

teraacute buracos Se eles forem incluiacutedos sem algum tratamento eles natildeo

representaratildeo adequadamente a regiatildeo Em geral o surfel sa (um surfel

ldquointerseccedilatildeordquo de A) eacute dividido em dois pelo plano que conteacutem o surfel sb (surfel de

B que sa intersecta) uma parte que estaacute fora de B e outra que estaacute dentro de B

Dependendo da operaccedilatildeo que estaacute sendo realizada vamos querer manter uma

destas partes do surfel sa no modelo resultado Seja xa a posiccedilatildeo do surfel sa e o

surfel sa uma circunferecircncia de centro xa e raio ra igual ao raio de alcance de sa

O plano que conteacutem o surfel sb define uma corda desta circunferecircncia como

mostra a Figura 11 O surfel sa seraacute substituiacutedo por um surfel menor que

ultrapassa esta corda de uma distacircncia e definida pelo usuaacuterio Para cobrir

completamente a interseccedilatildeo seratildeo adicionados surfels menores que cruzam a

corda de interseccedilatildeo

Figura 11 -Interseccedilatildeo do surfel s e do plano que passa pelo surfel t o surfel mais proacuteximo a s O surfel s eacute substituiacutedo por trecircs surfels menores

Operaccedilotildees Booleanas com Pontos 39

O tratamento de interseccedilatildeo proposto por Adams e Dutreacute [2] natildeo soacute evita

os buracos mas tambeacutem cria uma forma de renderizaccedilatildeo de arestas vivas A

colocaccedilatildeo de vaacuterios pequenos surfels na regiatildeo da interseccedilatildeo permite esta

correta renderizaccedilatildeo das ldquoarestas vivasrdquo Desta forma o problema das arestas

vivas eacute resolvido na modelagem (Figura 12) A vantagem de se resolver o caso

na modelagem eacute que natildeo eacute necessaacuterio fazer um tratamento especial na

renderizaccedilatildeo para que mostre esta aresta viva Diferente do tratamento feito

em Pauly (seccedilatildeo 431) que resolve esta questatildeo em tempo de renderizaccedilatildeo

Aleacutem disso o tratamento resolve alguns casos onde a Regra 2 poderia falhar

(veja em Validade da Regra 2-seccedilatildeo 44)

Figura 12 [2] -Agrave direita eacute mostrado o resultado do tratamento de interseccedilatildeo para o caso de Arestas Vivas do objeto agrave esquerda

43 Meacutetodo de Pauly

O meacutetodo aplica-se a objetos soacutelidos e natildeo soacutelidos Os modelos podem ser

obtidos a partir de diferentes entradas como nuvem de pontos irregulares ou por

meio de scanners 3D Cria um modelo hiacutebrido destes objetos usa o modelo por

pontos juntamente com a representaccedilatildeo impliacutecita Moving Least Squares - MLS

[18] Realiza operaccedilotildees booleanas com pontos e utiliza adicionalmente MLS

para alguns casos de classificaccedilatildeo de surfels e no tratamento de interseccedilatildeo A

seguir apresentamos as caracteriacutesticas do modelo por pontos deste meacutetodo e o

algoritmo que realiza as operaccedilotildees

Operaccedilotildees Booleanas com Pontos 40

431 Modelo em Pauly

O modelo eacute uma estrutura hiacutebrida de pontos com a representaccedilatildeo impliacutecita

Moving Least Squares - MLS [18] Esta estrutura eacute usada para fazer operaccedilotildees

booleanas e tambeacutem operaccedilotildees de free-form (natildeo abordadas nesta

dissertaccedilatildeo) Para operaccedilotildees booleanas a representaccedilatildeo MLS permite que a

curva de interseccedilatildeo entre os modelos seja reconstruiacuteda e surfels sejam

colocados nesta curva e em alguns casos de classificaccedilatildeo de surfels mostrados

na seccedilatildeo 432 Para este modelo natildeo existem restriccedilotildees quanto agrave forma do

objeto

Os surfels contecircm informaccedilotildees sobre sua posiccedilatildeo e sua normal Aleacutem

disso surfels podem conter informaccedilotildees adicionais como textura cor

propriedades de materiais

A distribuiccedilatildeo dos surfels eacute natildeo-uniforme e a amostragem eacute

aproximadamente adequada (Veja seccedilatildeo 44)

432 Algoritmo de Operaccedilotildees Booleanas

O algoritmo classifica surfels de um modelo como ldquodentrordquo ou ldquoforardquo de

outro modelo Antes de colocarmos como eacute feita esta classificaccedilatildeo devemos

acrescentar que Pauly estende esta classificaccedilatildeo para modelos que natildeo satildeo

soacutelidos Ou seja mesmo um modelo natildeo soacutelido divide o espaccedilo da cena (espaccedilo

em que se encontra o modelo) em dois sub-espaccedilos dentro ou fora do modelo

Pauly faz esta subdivisatildeo da seguinte forma

Como a superfiacutecie que determina o modelo eacute orientada (conteacutem vetores

normais agrave superfiacutecie que apontam para ldquoforardquo do modelo) Pauly considera que

um modelo natildeo soacutelido divide o espaccedilo em dois sub-espaccedilos um ldquoforardquo do

modelo (os vetores normais apontam para este sub-espaccedilo) e um que estaacute

ldquodentrordquo do modelo (os vetores normais apontam para direccedilatildeo oposta a este sub-

espaccedilo) Por exemplo um plano eacute representado como um conjunto de surfels

contidos num determinado espaccedilo geomeacutetrico plano π Cada surfel conteacutem um

vetor normal direcionado Este modelo divide entatildeo o espaccedilo em dois sub-

espaccedilos o sub-espaccedilo que eacute apontado por estes surfels (considerado ldquoforardquo do

modelo) e o sub-espaccedilo que estaacute na direccedilatildeo oposta (considerado ldquodentrordquo do

modelo) Desta forma ele aplica as classificaccedilotildees de ldquodentrordquo e ldquoforardquo de um

modelo tambeacutem a modelos natildeo soacutelidos A partir desta consideraccedilatildeo as

Operaccedilotildees Booleanas com Pontos 41

operaccedilotildees booleanas satildeo realizadas com os modelos natildeo soacutelidos da mesma

forma que com os modelos soacutelidos

Para determinar esta classificaccedilatildeo (dentro ou fora do modelo) Pauly utiliza

a Regra 2 Para pesquisa do surfel mais proacuteximo o meacutetodo usa a estrutura Kd-

tree [16] e tambeacutem o algoritmo ANN [16] No entanto o meacutetodo apresenta uma

restriccedilatildeo da Regra 2 ela soacute deve ser usada para classificaccedilotildees de pontos x se

a distacircncia x-p for maior que o espaccedilamento da amostragem local ηp em p

Este espaccedilamento da amostragem local ηp em p eacute um caacutelculo aproximado da

distacircncia meacutedia entre os surfels vizinhos a p Se x estaacute muito proacuteximo agrave

superfiacutecie a classificaccedilatildeo pode falhar Neste caso ele calcula o ponto exato de

S mais proacuteximo a x usando a projeccedilatildeo MLS (ldquoMoving Least Squaresrdquo)

Por questotildees de melhoria de desempenho utiliza-se o fato de que sendo

Ωp (x) a classificaccedilatildeo do ponto x em relaccedilatildeo agrave amostragem P tem-se que Ωp (x)

= Ωp (xrsquo) para todos os pontos de xrsquo que estatildeo dentro da esfera de centro x e

raio igual a x-p - ηp (onde p eacute o surfel mais proacuteximo e ηp eacute o espaccedilamento

local da amostragem em p acima citado) Ou seja sendo x um ponto qualquer p

o surfel mais proacuteximo a x ηp eacute o espaccedilamento local da amostragem em p se

desenharmos uma esfera com centro x e raio igual a x-p - ηp temos que

todos os pontos xrsquo que estatildeo dentro da esfera teratildeo a mesma classificaccedilatildeo de x

Desta forma o nuacutemero de vezes que a classificaccedilatildeo eacute feita (pesquisando-se o

surfel mais proacuteximo ao ponto e usando a Regra 2) diminui em ateacute 90 Assim

em geral a classificaccedilatildeo de um surfel eacute obtida a partir do seu surfel vizinho

Dados

S1 a superfiacutecie MLS de contorno que define o modelo A

S2 a superfiacutecie MLS de contorno que define o modelo B

P1 o conjunto de surfels que representa a superfiacutecie S1

P2 o conjunto de surfels que representa a superfiacutecie S2

Ωp1 (x) a classificaccedilatildeo do ponto p em relaccedilatildeo a uma amostragem P1

Q1 o subconjunto de P1 que vai compor o resultado

Ωp2 (x) a classificaccedilatildeo do ponto p em relaccedilatildeo a uma amostragem P2

Q2 o subconjunto de P2 que vai compor o resultado

Os conjuntos Q1 e Q2 satildeo obtidos por meio da Tabela 1 mostrada abaixo

Operaccedilotildees Booleanas com Pontos 42

Tabela 1 Classificaccedilatildeo para operaccedilotildees booleanas

Para o tratamento de interseccedilatildeo neste meacutetodo satildeo computados pontos

que caem exatamente na curva de interseccedilatildeo e estes satildeo acrescentados ao

modelo resultado Estes pontos satildeo determinados de forma que a densidade da

amostragem vai crescendo agrave medida que os surfels se aproximam da curva de

interseccedilatildeo e convergem para este ponto de interseccedilatildeo como mostra a Figura

13

(a) (b) (c)

Figura 13 - Os novos surfels satildeo colocados exatamente na curva de interseccedilatildeo

e convergem para o ponto de interseccedilatildeo

A Figura 14 mostra o processo de encontrar os surfels que caem nesta

curva de interseccedilatildeo Inicialmente satildeo encontrados todos os pontos de Q1 e Q2

que estatildeo proacuteximos agrave curva de interseccedilatildeo por meio da funccedilatildeo de distacircncia do

operador de projeccedilatildeo MLS Em seguida procura-se todos os pares mais

proacuteximos (q1 є Q1 q2 є Q2 ) e computa-se o ponto q na curva de interseccedilatildeo da

seguinte forma (veja a Figura 14)Seja r o ponto na linha de interseccedilatildeo dos dois

planos tangentes em q1 e q2 e que estaacute mais proacuteximo a estes dois pontos isto eacute

que minimiza a distacircncia ||r-q1|| + ||r-q2|| r eacute a primeira aproximaccedilatildeo de q e agora

pode ser projetado sobre S1 e S2 para obter dois novos pontos de partida q1rsquo e q2

rsquo

para a iteraccedilatildeo Este procedimento pode ser repetido iterativamente ateacute que os

pontos q1 e q2 convirjam ao ponto q na curva de interseccedilatildeo Normalmente este

processo requer menos de trecircs iteraccedilotildees

Operaccedilotildees Booleanas com Pontos 43

(a) (b)

(c)

Figura 14 (a) Suponhamos a reta que eacute a interseccedilatildeo do plano tangente a S1 em q1 e o

plano tangente a S2 em q2 O ponto r eacute o ponto desta reta que estaacute mais proacuteximo a q1 e

q2 (b) r eacute projetado sobre S1 e S2 obtendo-se q1acute e q2acute dois novos pontos de partida

para nova iteraccedilatildeo (c) A nova iteraccedilatildeo gera r que eacute uma aproximaccedilatildeo melhor de q

Pauly faz o tratamento de arestas vivas em tempo de renderizaccedilatildeo Ele

faz uma alteraccedilatildeo no renderizador Marca os surfels de interseccedilatildeo e ao

renderizaacute-los satildeo cortados para gerar uma aresta viva

44 Validade da Regra 2

Os dois meacutetodos analisados nesta dissertaccedilatildeo utilizam a seguinte regra

para a classificaccedilatildeo de um surfel

Regra 2 dado um volume V determinado por uma superfiacutecie de contorno

S uma amostragem P da superfiacutecie S um ponto x qualquer um ponto p є P que

eacute a amostra mais proacutexima a x um vetor ny normal a S em p e orientado para

fora de S temos que (x ndash p) np gt 0 x notinV

Em [16] eacute colocado que esta regra eacute tirada da seguinte propriedade da

geometria diferencial (aqui chamada Propriedade 1)

Propriedade 1 Dado um volume V determinado por uma superfiacutecie de

contorno S contiacutenua e duplamente diferenciaacutevel um ponto x qualquer um ponto

Operaccedilotildees Booleanas com Pontos 44

y є S que eacute o ponto de S mais proacuteximo a x um vetor ny normal a S em y e

orientado para fora de S temos que (x ndash y) ny gt 0 x notinV

A Figura 15 ilustra esta propriedade

Figura 15 Para verificar se o ponto x estaacute fora de um contorno C encontra-se o ponto y

de C Se o produto interno entre a normal em y e o vetor que liga y a x for maior que

zero entatildeo x estaacute fora de C senatildeo estaacute dentro de C

Pauly assume que tendo uma amostragem P da superfiacutecie S podemos

usar a Propriedade 1 substituindo y por p o surfel mais proacuteximo ao ponto x (x ndash

p) np gt 0 x notinV (Regra 2) Esta amostragem P em seu trabalho eacute

(aproximadamente) uma ldquoamostragem adequadardquo Tambeacutem seu tratamento de

interseccedilatildeo cria uma aproximaccedilatildeo dela (seccedilatildeo 43) Empiricamente a

ldquodiscretizaccedilatildeo da propriedaderdquo eacute vaacutelida a partir desta suposiccedilatildeo Mas isso natildeo foi

demonstrado teoricamente em seu trabalho

Pauly coloca em [16] que natildeo existe ainda uma teoria matemaacutetica rigorosa

de amostragem anaacuteloga a teoria de Fourier para superfiacutecies discretas

A melhor aproximaccedilatildeo teoacuterica para esta aacuterea eacute o uso do Eixo Medial que

foi colocado em [10] Vamos descrever este trabalho brevemente nesta seccedilatildeo

Este trabalho apresenta um algoritmo de reconstruccedilatildeo de superfiacutecie que parte de

uma amostragem adequada (abaixo definida) de pontos e obteacutem uma malha

que eacute topologicamente equivalente agrave superfiacutecie do objeto e agrave medida que a

densidade da amostragem cresce a saiacuteda converge para esta superfiacutecie

Para definir amostragem adequada o trabalho parte do conceito de Eixo

Medial

Operaccedilotildees Booleanas com Pontos 45

ldquoEixo Medialrdquo de uma superfiacutecie 2D posicionada no R3 eacute o conjunto

(fechado) de pontos pi para os quais buscando-se o ponto da superfiacutecie que

estaacute mais proacuteximo a pi mais de um ponto pertencentes a esta superfiacutecie satildeo

encontrados A Figura 16 abaixo ilustra o Eixo Medial em 2D

Figura 16 [10] As curvas de cor mais clara satildeo o Eixo Medial da curva em preto

Em duas dimensotildees os veacutertices de Voronoi de uma amostragem densa

aproximam o ldquoEixo Medialrdquo da amostragem (mas esta propriedade natildeo se

estende a 3D) A Figura 17 mostra o Eixo Medial em 3D

Figura 17 [10] Em 3D geralmente o Eixo Medial eacute uma superfiacutecie 2D (em cor mais

clara) Aqui o quadrado eacute o Eixo Medial da superfiacutecie transparente que o contorna

Podemos definir agora a amostragem adequada da seguinte forma

Supondo uma superfiacutecie suave que quer dizer uma 2-manifold duplamente

diferenciaacutevel posicionada no R3 uma ldquoamostragem adequadardquo desta superfiacutecie eacute

aquela na qual a densidade da amostragem eacute (pelo menos) inversamente

proporcional agrave distacircncia ao ldquoEixo Medialrdquo A Figura 18 mostra uma amostragem

adequada

Operaccedilotildees Booleanas com Pontos 46

Figura 18 [10] A figura mostra o diagrama de Voronoi de uma amostragem de pontos S

Da mesma forma que o a amostragem aproxima a curva os veacutertices de Voronoi

aproximam o Eixo Medial

Na praacutetica na reconstruccedilatildeo da superfiacutecie uma aproximaccedilatildeo deste ldquoEixo

Medialrdquo eacute computada (devido agrave dificuldade de computaacute-lo exatamente e em

alguns casos ateacute impossibilidade)

Melhorias Propostas 47

5 Melhorias Propostas

No capiacutetulo 4 apresentamos dois meacutetodos que realizam operaccedilotildees

booleanas em modelos por pontos o meacutetodo de Adams e Dutreacute [2] e o meacutetodo

de Pauly[3] Para esta dissertaccedilatildeo usamos o meacutetodo de Adams e Dutreacute [2] e

propomos as seguintes melhorias

- Alteramos o momento em que eacute feita a classificaccedilatildeo da octree Fazemos

esta classificaccedilatildeo durante a sua criaccedilatildeo Os noacutes filhos de um noacute pai P qualquer

satildeo classificados logo apoacutes a criaccedilatildeo de todos estes filhos de P

independentemente do restante da octree ter sido criada Isso pode ser feito

porque a octree eacute construiacuteda na ordem raiz-esquerda-direita (preorder

traversal) e portanto apoacutes todos os filhos de um noacute pai serem criados a parte

necessaacuteria da octree para a classificaccedilatildeo destes filhos jaacute estaacute criada

- A classificaccedilatildeo da octree eacute otimizada classificando-se os cantos dos seus

noacutes como dentro ou fora do modelo Na classificaccedilatildeo de um noacute n1 a partir de seu

vizinho n2 se os cantos que satildeo comuns a n1 e n2 tiverem a mesma

classificaccedilatildeo esta seraacute dada ao noacute Assim diminuiacutemos o nuacutemero de pesquisas

pelo surfel mais proacuteximo que eacute a parte criacutetica da classificaccedilatildeo dos noacutes da octree

em termos de tempo de processamento

- Acrescentamos um valor miacutenimo (maior que zero) para o nuacutemero de

surfels contidos em um noacute que eacute uma das condiccedilotildees de parada na criaccedilatildeo da

octree Verificamos que desta forma diminui-se a chance de erro na classificaccedilatildeo

de partes criacuteticas como ldquoarestas vivasrdquo

Uma comparaccedilatildeo entre a nossa implementaccedilatildeo e a de Pauly tambeacutem seraacute

feita no capiacutetulo 6

51 Descriccedilatildeo do algoritmo

O algoritmo implementado para esta dissertaccedilatildeo baseado no meacutetodo de

Adams e Dutreacute [2] pode ser dividido nas seguintes partes Criaccedilatildeo e

classificaccedilatildeo de uma octree para cada modelo Teste DentroFora Criaccedilatildeo do

modelo resultado Natildeo foi implementado tratamento especial algum de

interseccedilatildeo para o nosso plugin As proacuteximas seccedilotildees apresentam estas partes

Melhorias Propostas 48

511 Criaccedilatildeo e classificaccedilatildeo de uma octree para cada modelo

As ideacuteias do algoritmo satildeo aqui ilustradas em 2D mas a extensatildeo delas

para 3D eacute feita facilmente

Para cada modelo a octree eacute criada e classificada da seguinte forma

Figura 19-Quadtree classificada Os noacutes mais escuros estatildeo fora do modelo os mais claros dentro e os em tom intermediaacuterio satildeo noacutes de contorno

Gera-se uma ldquocaixa envolventerdquo do modelo contendo todos os surfels e

cria-se o noacute raiz da octree que corresponde a esta ldquocaixa envolventerdquo Este noacute

raiz eacute subdividido em oito filhos e seus surfels satildeo distribuiacutedos entre eles Ao

inveacutes de testarmos os valores de xy e z para cada surfel a fim de determinar

para qual filho ele iraacute utilizamos listas auxiliares Primeiro os surfels satildeo

subdivididos em dois grupos pelos valores de x e armazenados em uma lista

auxiliar Em seguida cada uma das listas eacute subdividida pelo valor de y e as

quatro listas obtidas seratildeo subdivididas pelo valor de z Ao final teremos 8 listas

de surfels cada uma delas pertencente a um filho

Cada noacute seraacute entatildeo novamente subdividido enquanto contiver um nuacutemero

de surfels gt nmin (valor preacute-definido) ou enquanto a profundidade da aacutervore lt pmax

(valor preacute-definido) Na figura 19 pmax = 3 e nmin = 3

Melhorias Propostas 49

Figura 20-O noacute cheio eacute dividido em trecircs partes agrave esquerda a regiatildeo estaacute dentro do modelo agrave direita estaacute fora e entre as duas linhas que dividem o noacute estaacute a regiatildeo que conteacutem os surfels

Os noacutes cheios recebem um tratamento especial Eles satildeo subdivididos em

trecircs partes da seguinte forma uma que estaacute fora do modelo outra que estaacute

dentro e uma que conteacutem os surfels Esta subdivisatildeo eacute feita por meio da criaccedilatildeo

de dois planos paralelos que dividem o noacute Para determinar estes planos

calcula-se o vetor nm igual agrave meacutedia das normais dos surfels do noacute nm = sum ns

sum ns onde ns eacute a normal de cada surfel do noacute Em seguida encontra-se o

surfel com maior produto interno entre a sua normal e a normal meacutedia

d1=Max(nm ٠ ns) Este surfel juntamente com a normal meacutedia define um dos

planos Encontra-se tambeacutem o surfel com menor produto interno entre a sua

normal e a normal meacutedia d2=Min (nm ٠ ns) Este surfel juntamente com a normal

meacutedia define o outro plano (Figura 20) Se o noacute conteacutem surfels de superfiacutecies de

orientaccedilotildees diferentes ele natildeo seraacute subdividido ou seja os planos coincidiratildeo

com os planos que delimitam o proacuteprio noacute Este teste foi implementado da

seguinte forma escolhe-se um surfel qualquer do noacute Calcula-se o produto

interno entre a normal deste surfel e as outras normais dos outros surfels deste

noacute Se algum produto interno for menor que zero este noacute natildeo seraacute subdividido

Apoacutes a etapa de subdivisatildeo classificam-se os oito cantos deste noacute como

dentro ou fora do modelo por meio da classificaccedilatildeo de um ponto que

descreveremos na sub-seccedilatildeo 5111

Melhorias Propostas 50

a b

c d

Figura 21-O noacute a eacute classificado pelo noacute c o noacute d tambeacutem eacute classificado pelo noacute c a classificaccedilatildeo do noacute a eacute propagada para o noacute b

Jaacute os noacutes vazios da octree seratildeo classificados como ldquodentrordquo ou ldquoforardquo do

modelo da seguinte forma cada noacute folha vazio eacute classificado a partir de um de

seus irmatildeos vizinhos adjacentes Se ele possuir um vizinho adjacente cheio ele

seraacute classificado por este vizinho se natildeo possuir os vizinhos adjacentes seratildeo

classificados primeiro e ele teraacute esta mesma classificaccedilatildeo (Figura 21) Como tem

que existir sempre pelo menos um noacute cheio entre os filhos de um noacute pai entatildeo

sempre esta classificaccedilatildeo poderaacute ser feita Com a classificaccedilatildeo de todos os

filhos tem-se tambeacutem a classificaccedilatildeo dos cantos do noacute pai

Mf03c003fmx a b

Figura 22-Os cantos a e b do noacute cheio possuem a mesma classificaccedilatildeo fora do modelo Esta classificaccedilatildeo foi dada ao noacute vazio adjacente

Melhorias Propostas 51

Para classificar um noacute vazio por meio de um noacute cheio verificam-se os

cantos comuns destes dois noacutes se todos os cantos tiverem a mesma

classificaccedilatildeo esta seraacute dada ao noacute vazio (Figura 22) Se houver classificaccedilotildees

diferentes escolhe-se o surfel do noacute cheio mais proacuteximo ao noacute vazio faz-se o

produto interno entre a normal deste surfel e o vetor que liga o centro do noacute

cheio ao centro do noacute vazio (ou o vetor que liga o surfel ao centro do noacute vazio)

Se o produto interno for maior que zero o noacute eacute classificado como ldquoforardquo senatildeo eacute

classificado como ldquodentrordquo Para encontrar o surfel (pertencente a um noacute cheio)

mais proacuteximo ao noacute vazio existem dois casos

- O noacute cheio eacute folha percorre-se toda a lista de surfels e escolhe o surfel

mais proacuteximo da fronteira entre o noacute cheio e o vazio

- O noacute cheio natildeo eacute um noacute folha percorrem-se os filhos do noacute cheio ou seja

esta pesquisa eacute feita descendo na octree a partir do noacute cheio procurando o

surfel mais proacuteximo agrave fronteira do pai com o noacute vazio a ser classificado

Classificando o centro do noacute vazio todo o noacute deve ter a mesma

classificaccedilatildeo pois este noacute natildeo conteacutem surfels Para encontrar o surfel do noacute

vazio mais proacuteximo da fronteira entre o noacute cheio e o vazio basta testar o valor da

coordenada se a fronteira eacute o lado direito do noacute cheio escolhe-se o surfel com

maior coordenada lsquoxrsquo se eacute o lado esquerdo escolhe-se o surfel com menor lsquoxrsquo

se lado superior surfel com maior lsquoyrsquo etc A seguir apresentamos a classificaccedilatildeo

de um ponto qualquer pertencente a um noacute cheio

Figura 23- Quadtree classificada

Melhorias Propostas 52

5111 Classificaccedilatildeo de um ponto de um noacute cheio

Figura 24 [2] A normal n eacute a normal meacutedia e os surfels s1 e s2 juntamente com a normal

n definem as retas que dividem o noacute O ponto a estaacute fora do modelo e o ponto b estaacute

dentro do modelo

Para um ponto localizado dentro do noacute faz-se o seguinte teste se o noacute foi

dividido testa-se de acordo com a divisatildeo do noacute se o ponto estaacute na parte do noacute

que estaacute dentro do modelo ele eacute classificado como ldquodentrordquo se o ponto estaacute na

parte que estaacute fora do modelo ele eacute classificado como ldquoforardquo (Figura 24) se o

ponto estaacute na parte que conteacutem os surfels encontra-se o surfel s pertencente ao

noacute mais proacuteximo do ponto e o classifica de acordo com s seja ns a normal em s

cs a coordenada de s cp a coordenada do ponto Se (cp - cs )٠ ns gt 0 o ponto

seraacute classificado como ldquoforardquo Senatildeo seraacute classificado como ldquodentrordquo

Se o noacute natildeo foi dividido em planos esta classificaccedilatildeo a partir do surfel

mais proacuteximo seraacute sempre feita

512 Teste DentroFora

Melhorias Propostas 53

Figura 25-Duas circunferecircncias e suas quadtrees correspondentes

O Teste DentroFora classifica os surfels de um modelo como dentro ou

fora de outro modelo ou na sua interseccedilatildeo Este teste foi aqui implementado

exatamente como foi proposto em Adams e Dutreacute [2] exceto que natildeo foi

implementado o meacutetodo TINN - Triangle Inequality Nearest Neighbour [19]

Cada octree eacute percorrida verificando-se se os seus noacutes ou surfels estatildeo dentro

fora ou no contorno do outro modelo (Figura 25) Sejam A e B duas octrees e

queremos classificar a octree A As duas octrees (AB) satildeo percorridas partindo

da raiz

Para cada noacute de A existem quatro casos (Figura 26) Para testar estas

situaccedilotildees os boxes dos noacutes satildeo aumentados de rmax o raio do maior surfel do

modelo Isto eacute feito para compensar o fato de que o surfel natildeo eacute apenas um

ponto mas sim considerado como um disco

Os quatro casos satildeo

Se o noacute de A natildeo intersecta B entatildeo todos os surfels deste noacute satildeo

classificados como fora

Se o noacute de A intersecta apenas noacutes de B que estatildeo fora do modelo

todos os surfels deste noacute satildeo fora

Se o noacute de A intersecta apenas noacutes de B que estatildeo dentro do modelo

todos os surfels deste noacute satildeo dentro

Melhorias Propostas 54

Se o noacute de A intersecta noacutes de B que estatildeo dentro e tambeacutem noacutes de B

que estatildeo fora testa-se se este noacute de A eacute ou natildeo folha Se natildeo for folha

percorre-se os filhos deste noacute de A ateacute encontrar um noacute folha cheio que

intersecta B Para cada surfel sa deste noacute folha de A encontra-se o surfel de B

mais proacuteximo e classifica-se a coordenada de sa da forma apresentada na seccedilatildeo

5111 Seja sb o surfel usado na classificaccedilatildeo de sa Se os discos de sb e sa

se intersectam sa eacute classificado como ldquointerseccedilatildeordquo

(a) (b)

(c) (d)

Figura 26- a modelos natildeo se intersectam b modelo intersecta noacutes fora c modelo intersecta apenas noacutes dentro d modelo intersecta noacutes dentro e noacutes fora

513 Criaccedilatildeo do modelo resultado

Um novo modelo eacute criado com os seguintes surfels (de acordo com a

operaccedilatildeo booleana escolhida pelo usuaacuterio - veja Regra 1 da seccedilatildeo 41)

Uniatildeo - surfels de A que estatildeo fora de B + surfels de B que estatildeo fora de A

Melhorias Propostas 55

Interseccedilatildeo - surfels de A que estatildeo dentro de B + surfels de B que estatildeo

dentro de A

Diferenccedila A-B - surfels de A que estatildeo fora de B + surfels de B que estatildeo

dentro de A (com orientaccedilatildeo invertida)

Como natildeo foi implementado tratamento especial algum de interseccedilatildeo para

o nosso plugin os surfels que se intersectam satildeo mantidos no modelo resultado

final sem modificaccedilotildees

Descrito o algoritmo vejamos a seguir a sua implementaccedilatildeo

52 Implementaccedilatildeo

Este algoritmo foi implementado na forma de um plugin para o software

PointShop 3D [11] Este plugin foi desenvolvido na linguagem C e no sistema

operacional Windows

A escolha deste tipo de implementaccedilatildeo permitiu-nos usar o software

PointShop para os testes do algoritmo Estes testes foram feitos com os modelos

disponibilizados para o PointShop [11] Nesta seccedilatildeo apresentaremos o software

PointShop e as principais estruturas de dados usadas em nosso plugin

O Pointshop eacute um software aberto com seu coacutedigo disponiacutevel e preparado

para trabalhar com plugins Eacute um software de ediccedilatildeo de modelos 3D por pontos

Ele permite aleacutem de visualizar o modelo alterar as suas caracteriacutesticas como

cor brilho e fazer mapeamento de textura iluminaccedilatildeo filtragem (Figura 27)

Melhorias Propostas 56

Figura 27-Software PointShop 3D com dois modelos carregados na sua cena

Aleacutem disso pode-se criar uma cena com vaacuterios modelos e visualizaacute-los de

qualquer ponto de vista Implementa o virtual trackball para rotacionaacute-los e

transladaacute-los Usa uma iluminaccedilatildeo simples direcional A sua arquitetura eacute

extensiacutevel permite que o usuaacuterio adicione seus proacuteprios componentes ao

sistema Possui trecircs tipos de componentes

ldquoToolsrdquo fornece funcionalidades para ediccedilatildeo interativa de superfiacutecie Satildeo

disponibilizados na ldquotoolbarrdquo

Plugins fornece funcionalidades para processar em um soacute passo

modelos ou partes deles selecionadas Satildeo disponibilizados no menu ldquoPluginsrdquo

Renderes fornece funcionalidades de display para os modelos

Para esta dissertaccedilatildeo foi escolhida a construccedilatildeo do componente Plugin

por adequar-se agrave nossa proposta e ser a mais simples de ser construiacuteda O

PointShop [11] jaacute conteacutem uma tool que executa operaccedilotildees booleanas e

deformaccedilatildeo free-form sobre os modelos carregados na cena usando o meacutetodo

de Pauly [3] apresentado no capiacutetulo 4 O nosso plugin Operaccedilotildees Booleanas

implementa o algoritmo descrito na seccedilatildeo anterior baseado na proposta de

Melhorias Propostas 57

Adams e Dutreacute [2] Uma comparaccedilatildeo entre o nosso plugin e a tool de Pauly [3] eacute

feita no capiacutetulo 6

Figura 28-Menu do PointShop com o plugin e as opccedilotildees para operaccedilotildees booleanas

Para se executar o plugin o usuaacuterio precisa carregar dois modelos na

cena do PointShop acionar o plugin informando a operaccedilatildeo que seraacute executada

O plugin executaraacute o algoritmo acima proposto e carregaraacute o resultado na cena

do Pointshop retirando os modelos anteriores

521 Estruturas de Dados

Como vimos o software PointShop [11] trabalha com modelos por pontos

Um modelo deste software descrito na seccedilatildeo 42 conteacutem todas as informaccedilotildees

que o algoritmo proposto em Bart [2] necessita Abaixo relacionamos as

Melhorias Propostas 58

principais estruturas de dados do PointShop usadas no plugin e as principais

estruturas de dados do nosso plugin

As principais classes do PointShop usadas no plugin satildeo

Classe Scene

Classe Objects

Classe SurfelColections

Classe Surfel

Classe StatusBar

Classe Transformer

A hierarquia de dados eacute a seguinte a Scene conteacutem vaacuterios Objects os

quais conteacutem SurfelColections Cada SurfelColections conteacutem Surfels que

suportam uma ou mais propriedades tais como cor difusa cor especular

Classe Scene Classe que representa uma cena que conteacutem modelos

Classe Object Um modelo eacute representado pela classe Object que

conteacutem uma SurfelCollection e as matrizes de transformaccedilatildeo para rotaccedilatildeo

escala e translaccedilatildeo Cada Object eacute identificado pelo seu nome que eacute uacutenico na

Scene O meacutetodo getUniqueName retorna um nome uacutenico Cada Object tem sua

proacutepria matriz de transformaccedilatildeo que pode ser modificada com setRotation

rotate setPosition translate setScale e scale Objects podem ser copiados com

copy Objects consiste em um conjunto de surfels os quais podem ser

recuperados pela getSurfelCollection O Object pode ser ativado com

setActiveObject e recuperado com getActiveObject

Objects podem ser adicionados ou removidos com addObject e

removeObject Os Objects podem ser obtidos pela getFirstObject e

getNextObject

Classe SurfelCollection representa o conjunto de surfels de um modelo

Cada surfelcollection consiste em um conjunto de surfels (SurfelInterface) de

tamanho obtido por getNofSurfels Os surfels podem ser recuperados com

getFirstSurfel getCurrentSurfel e getNextSurfel

A SurfelCollection conteacutem um PropertyDescriptor e uma SurfelList

A SurfelList eacute uma lista duplamente encadeada de surfels Possui os

atributos firstSurfel lastSurfel currentSurfel que satildeo ponteiros para uma

SurfelInterface nSurfels que eacute o nuacutemero de Surfels

A SurfelInterface define a API para os surfels que satildeo os menores

elementos que compotildeem um Object Podem ser considerados como pontos com

uma normal que define a orientaccedilatildeo do ciacuterculo (ou elipse) que seraacute desenhado

Melhorias Propostas 59

tatildeo logo o surfel seja renderizado Tem como atributos dois ponteiros (next e

prev) para SurfelInterface

PropertyDescriptor consiste em ateacute 32 valores descrevendo quais as

propriedades a SurfelInterface suporta

Classe Surfel classe que representa o surfel

Classe StatusBar classe que imprime mensagens na tela Os plugins

podem mandar mensagens para o usuaacuterio pela StatusBar

Mensagens texto podem ser impressas com showMessage O progresso

de uma operaccedilatildeo pode ser indicado com setProgress ou resetProgress

Classe Transformer representa a transformaccedilatildeo entre sistemas de

coordenadas Esta classe fornece meacutetodos para transformar pontos e vetores

entre os diferentes sistemas de coordenadas do Pointshop

A seguir apresentamos as principais estruturas de dados do plugin

Operaccedilotildees Booleanas

As principais estruturas de dados do plugin satildeo boundingbox tree no

lista_surfel surfel

Boundingbox conteacutem dois pontos 3D que definem uma caixa que conteacutem

o modelo um ponto com menores coordenadas xy e z e outro ponto com

maiores xyz

Tree representa a octree do modelo Cada registro conteacutem um ponteiro

para um noacute e oito ponteiros para as 8 octrees filhas

No representa um noacute da octree Conteacutem os seguintes dados

- localizaccedilatildeo do noacute que eacute o canto inferior esquerdo do noacute

- lista_surfel (preenchida apenas para noacutes folha cheios)

- quantidade de surfels do noacute

- classificaccedilatildeo do noacute como dentro fora ou contorno

- classificaccedilatildeo do noacute em relaccedilatildeo a outro modelo

- indica se o noacute eacute folha ou natildeo

- vetor que eacute a meacutedia das normais dos surfels do noacute

- ponto que eacute a meacutedia das localizaccedilotildees dos surfels do noacute

- surfel que tem (entre todos os surfels do noacute) o maior produto interno

entre a sua normal e a normal meacutedia

- surfel que tem (entre todos os surfels do noacute) o menor produto interno

entre a sua normal e a normal meacutedia

- produto interno maacuteximo e miacutenimo entre as normais dos surfels do noacute e a

normal meacutedia deste noacute

Melhorias Propostas 60

- indica se o noacute conteacutem surfels com normais em sentido oposto (produto

interno entre elas eacute menor que zero)

- classificaccedilatildeo dos oito cantos do noacute

lista_surfels lista em que cada registro conteacutem um apontador para um

surfel e um apontador para o proacuteximo registro

surfel representa o surfel da octree Conteacutem a classificaccedilatildeo em relaccedilatildeo a

outro modelo e um ponteiro para o surfel do Poinshop

Resultados 61

6 Resultados

Neste capiacutetulo apresentamos os testes realizados com o plugin para o

PointShop implementado para esta dissertaccedilatildeo a comparaccedilatildeo deste plugin com

o plugin de Pauly [3] e a comparaccedilatildeo entre o meacutetodo de Adams e Dutreacute [2] e o

meacutetodo de Pauly [3]

61 Testes

Os testes foram feitos em um PC x86 Family 6 261600 KB de RAM sem

placa graacutefica sistema operacional Windows 2000 O plugin foi implementado na

linguagem C

Os modelos usados para os testes satildeo modelos disponibilizados no

PointShop [11] Vale lembrar que o meacutetodo implementado em nosso plugin eacute

restrito a modelos soacutelidos e portanto foram usados apenas estes modelos

soacutelidos para os testes

O modelo na Figura 29 que eacute um dos modelos disponibilizados no

PointShop [11] foi usado para mostrar o resultado das operaccedilotildees realizadas

pelo plugin implementado nesta dissertaccedilatildeo O modelo Igea eacute um modelo soacutelido

que conteacutem 134345 surfels

Resultados 62

Figura 29-Modelo do PointShop Igea

Para realizar as operaccedilotildees este modelo foi carregado na cena do

PointShop duas vezes e um deles colorido de vermelho As Figuras 30 31 32

mostram o resultado da operaccedilatildeo de uniatildeo interseccedilatildeo e diferenccedila

respectivamente Os nuacutemeros de surfels dos modelos resultantes satildeo mostrados

na Tabela 2

Resultados 63

Figura 30-Resultado da uniatildeo de duas Igeas

Figura 31-Resultado da interseccedilatildeo de duas Igeas

Resultados 64

Figura 32-Resultado da diferenccedila entre duas Igeas

Tabela 2-Nuacutemero de surfels dos modelos resultantes

Observamos que o nuacutemero de surfels dos modelos resultantes estaacute

coerente com as figuras dos seus modelos

Para avaliar o tempo de processamento das operaccedilotildees foram realizados

vaacuterios testes com o objetivo de obter uma meacutedia dos tempos de realizaccedilatildeo de

cada operaccedilatildeo Tambeacutem foram armazenados os tempos da criaccedilatildeo das duas

octrees e da classificaccedilatildeo de todos os surfels dos dois objetos (como dentro ou

fora do outro modelo) Estes testes foram feitos usando o modelo Igea A meacutedia

dos tempos de processamento foi calculada e os resultados satildeo mostrados na

Tabela 3 Verificamos que o maior tempo gasto eacute para criaccedilatildeo das octrees

Verificamos tambeacutem que este resultado apresentado eacute similar ao resultado

verificado empiricamente com o plugin de Pauly [3] Os tempos gastos para

realizar as operaccedilotildees satildeo similares e o maior tempo gasto no plugin de Pauly

tambeacutem eacute para inicializaccedilatildeo de suas estruturas de dados que incluem a kd-tree

Operaccedilatildeo Nuacutemero de surfels do modelo resultado

Uniatildeo 189715

Interseccedilatildeo 72225

Diferenccedila 134552

Resultados 65

Operaccedilatildeo Criaccedilatildeo das

Octrees (seg)

Classificaccedilatildeo

(seg)

Criaccedilatildeo do

resultado (seg)

Total (seg)

Uniatildeo 39375 1324 18925 7154

Interseccedilatildeo 38585 1585 09547 63982

Diferenccedila 399875 1504 1729 729475

Tabela 3- Meacutedia dos tempos de processamento para as operaccedilotildees com duas Igeas

Com o objetivo de expor melhor os resultados deste trabalho

apresentamos abaixo mais um teste das operaccedilotildees booleanas usando o nosso

plugin Os modelos usados para este segundo teste satildeo o Max Planck e o Male

ambos modelos soacutelidos disponibilizados no PointShop Estes modelos satildeo

mostrados nas figura 33 e 34

O primeiro Max Planck conteacutem 52809 surfels

Figura 33-Modelo do PointShop MaxPlanck

O segundo modelo abaixo Male conteacutem 148138 surfels

Resultados 66

Figura 34-Modelo do PointShop Male

As Figuras 353637 mostram o resultado da operaccedilatildeo de uniatildeo interseccedilatildeo

e diferenccedila respectivamente usando os dois modelos acima Podemos observar

pela figura 35 que o resultado da operaccedilatildeo de diferenccedila neste caso gerou um

modelo resultado com trecircs partes desconexas Os nuacutemeros de surfels de cada

modelo resultado satildeo mostrados na Tabela 5

Figura 35- Resultado da Uniatildeo do modelo Male com MaxPlanck

Resultados 67

Figura 36-Resultado da interseccedilatildeo do modelo Male com o MaxPlanck

Figura 37-Resultado da diferenccedila do modelo Male do modelo MaxPlanck

As meacutedias de tempos de processamento foram calculadas da mesma

forma que o primeiro teste com o modelo Igea acima apresentado Os

resultados satildeo mostrados na Tabela 4 Podemos observar que este teste

Resultados 68

apresenta tempos um pouco menores que o teste com o modelo Igea Isto se

deve ao fato de que o modelo MaxPlanck ser significativamente menor que o

modelo Igea MaxPlanck possui 52809 surfels e Igea conteacutem 134345 surfels

Operaccedilatildeo Criaccedilatildeo das

Octrees (seg)

Classificaccedilatildeo

(seg)

Criaccedilatildeo do

resultado (seg)

Total

(seg)

Uniatildeo 3012 1254 102 5285

Interseccedilatildeo 2985 0901 0861 4747

Diferenccedila 2965 0911 0791 4667

Tabela 4-Tempo de processamento das operaccedilotildees com os modelos MaxPlanck e Male

Operaccedilatildeo Nuacutemero de surfels do resultado

Uniatildeo 126532

Interseccedilatildeo 88414

Diferenccedila 77635

Tabela 5-Nuacutemero de surfels dos modelos resultados das operaccedilotildees com os modelos MaxPlanck e Male

Em seguida apresentaremos uma comparaccedilatildeo entre o nosso plugin e o

plugin de Pauly[3] e tambeacutem uma comparaccedilatildeo entre o meacutetodo de Adams e Dutreacute

[2] e o meacutetodo de Pauly [3]

62 Comparaccedilatildeo entre os dois meacutetodos que realizam operaccedilotildees booleanas

A comparaccedilatildeo entre os meacutetodos de Pauly[3] e de Adams e Dutreacute foi feita

em termos de tempo de processamento e em termos conceituais Em termos de

tempo de processamento comparamos o plugin de Pauly[3] com o nosso plugin

Em termos de tempo de processamento verifica-se empiricamente que os

dois meacutetodos apresentam tempos bastante similares Entretanto o tempo de

processamento do algoritmo aqui implementado ainda pode ser melhorado com

Resultados 69

o uso do meacutetodo TINN [19] que foi proposto em Adams[2] - para otimizar a

pesquisa do surfel mais proacuteximo a um ponto que estaacute localizado na regiatildeo de um

noacute que conteacutem surfels - veja seccedilatildeo 42 O uso deste meacutetodo natildeo foi

implementado para este trabalho e a sua implementaccedilatildeo melhoraria o tempo de

resposta do algoritmo Aleacutem disso o trabalho de Sara F Frisken [12] citado no

capiacutetulo 2 apresenta uma otimizaccedilatildeo no uso de octrees que pode ser

incorporada no algoritmo implementado neste trabalho

Em termos conceituais vamos fazer a comparaccedilatildeo do uso do que

chamamos aqui de Regra 2 do tratamento de interseccedilatildeo e do tratamento de

ldquoarestas vivasrdquo

Como vimos na seccedilatildeo 41 tanto o algoritmo implementado nesta

dissertaccedilatildeo baseado no trabalho de Adams e Dutreacute como o meacutetodo de Pauly

[3] parte do que chamamos aqui de Regra 2 para realizar operaccedilotildees booleanas

com pontos Mas cada um destes meacutetodos daacute um tratamento diferente para o

uso desta regra

O meacutetodo de Pauly usa a Regra 2 para classificaccedilatildeo de cada ponto ou de

cada surfel Para classificar um surfel de B sb como dentro ou fora de A eacute

encontrado o surfel de A sa mais proacuteximo a sb e sb eacute classificado a partir de sa

Para encontrar sa Pauly utiliza uma kd-tree Como esta pesquisa para encontrar

sa eacute cara (mesmo usando uma kd-tree) Pauly utiliza uma esfera que conteacutem

pontos com a mesma classificaccedilatildeo (seccedilatildeo 432) e diminui em 90 este nuacutemero

de pesquisas Pauly utiliza tambeacutem a representaccedilatildeo impliacutecita MLS (Moving Least

Squares) para casos em que a Regra 2 poderia falhar e para tratamento de

interseccedilotildees Entretanto o nuacutemero destes casos em que a Regra 2 poderia falhar

eacute muito pequeno E a representaccedilatildeo MLS natildeo eacute uma estrutura simples de ser

implementada Portanto natildeo encontramos vantagens em usar MLS para estes

casos O meacutetodo de Adams e Dutreacute natildeo trata estes casos e na praacutetica

apresenta resultados bastante satisfatoacuterios como foi mostrado Portanto

consideramos que valeria a pena fazer algum tratamento especial para estes

casos se fosse um procedimento simples Para a execuccedilatildeo do algoritmo de

Pauly o uso de MLS natildeo interfere significativamente porque a construccedilatildeo desta

representaccedilatildeo natildeo eacute feita somente para realizar operaccedilotildees booleanas Os testes

empiacutericos que fizemos com o algoritmo de Pauly natildeo incluem a construccedilatildeo desta

representaccedilatildeo

Aparentemente os dois algoritmos satildeo bastante parecidos um usa octrees

e o outro usa kd-tree As duas estruturas de dados satildeo simples e otimizam a

classificaccedilatildeo dos surfels de um modelo como dentro ou fora do outro modelo

Resultados 70

Mas existe uma diferenccedila conceitual entre dois que merece ser destacada O

algoritmo aqui implementado usa a Regra 2 para classificaccedilatildeo dos noacutes de uma

octree e armazena esta octree classificada (ver capiacutetulo 5) Assim na maioria dos

casos natildeo seraacute necessaacuterio encontrar o surfel mais proacuteximo para classificar um

ponto (ou um surfel) como fora ou dentro de um modelo Caso o ponto esteja em

uma aacuterea da octree classificada ele teraacute a classificaccedilatildeo dada agravequela aacuterea A

pesquisa ao surfel mais proacuteximo seraacute feita apenas nos casos em que o ponto a

ser classificado estaacute localizado entre os planos que subdividem um noacute cheio

O uso desta octree classificada levanta uma questatildeo que natildeo foi citada no

trabalho de Adams e Dutreacute que eacute a proximidade desta estrutura (armazenada)

de octree classificada com uma representaccedilatildeo volumeacutetrica do objeto Sendo

assim esta estrutura pode ser aproveitada para outras funccedilotildees aleacutem da

classificaccedilatildeo dos surfels Por exemplo podemos ter uma aproximaccedilatildeo do

volume de uma cena somando os volumes aproximados dos modelos que a

compotildeem Como o enfoque deste trabalho eacute operaccedilatildeo booleana natildeo vamos nos

aprofundar nesta questatildeo

Outra importante diferenccedila entre os dois trabalhos que jaacute foi explicada na

seccedilatildeo 432 eacute que o meacutetodo de Pauly aplica-se a modelos soacutelidos ou natildeo

soacutelidos enquanto que o meacutetodo de Adams e Dutreacute aplica-se somente a modelos

soacutelidos

Quanto ao tratamento de interseccedilatildeo em termos de visualizaccedilatildeo todos os

dois resolvem bem o problema O tratamento de interseccedilatildeo nos dois trabalhos

tambeacutem resolve o problema da validade da Regra 2 (ver seccedilatildeo 44) Entretanto

o tratamento de Adams e Dutreacute natildeo depende da renderizaccedilatildeo sendo portanto

mais portaacutevel Aleacutem disso uma desvantagem do meacutetodo de Pauly eacute o uso da

representaccedilatildeo impliacutecita MLS (ldquoMoving Least Squaresrdquo) do objeto para obter os

pontos exatamente na curva de interseccedilatildeo Esta representaccedilatildeo torna o

tratamento de interseccedilatildeo mais complexo e a vantagem apresentada natildeo eacute tatildeo

significativa para este tratamento de interseccedilatildeo

Conclusatildeo 71

7 Conclusatildeo

Concluiacutemos entatildeo que as escolhas de Adams e Dutreacute por usar uma

octree classificada e pelo tratamento dado agrave interseccedilatildeo satildeo mais abrangentes

que a escolha de Pauly E consideramos que quanto mais abrangente for uma

escolha conceitual mais resultados poderemos tirar dela No caso de Adams e

Dutreacute eles estendem o problema de classificar um ponto para classificar todo o

modelo Como foi citado ele quase fornece uma representaccedilatildeo volumeacutetrica do

modelo Esta aproximada representaccedilatildeo volumeacutetrica pode nos fornecer outras

informaccedilotildees como por exemplo o volume aproximado do modelo

Aleacutem disso o uso da representaccedilatildeo impliacutecita MLS no meacutetodo de Pauly cria

uma complexidade a mais para o meacutetodo sem apresentar vantagens para a

realizaccedilatildeo de operaccedilotildees booleanas que eacute o nosso enfoque

Logo podemos dizer que o meacutetodo de Adams e Dutreacute apresenta as

seguintes vantagens em relaccedilatildeo ao de Pauly

- a estrutura de octree classificada aleacutem de ser usada para classificaccedilatildeo

fornece informaccedilotildees adicionais como volume aproximado do objeto

- o tempo de processamento no meacutetodo de Adams e Dutreacute tende a ser

melhor que no meacutetodo de Pauly se implementadas as melhorias acima citadas e

se colocaacutessemos em consideraccedilatildeo o uso da representaccedilatildeo impliacutecita MLS

(Moving Least Squares)

- o tratamento de interseccedilatildeo de Adams e Dutreacute apresenta a vantagem da

portabilidade ou seja iraacute funcionar independente do algoritmo de renderizaccedilatildeo

utilizado

E as vantagens do meacutetodo de Pauly em relaccedilatildeo ao de Adams e Dutreacute

- a colocaccedilatildeo de surfels exatamente na curva de interseccedilatildeo

- a possibilidade de trabalhar com modelos soacutelidos ou natildeo soacutelidos

E finalizando concluiacutemos que o estudo relatado nesta dissertaccedilatildeo foi

importante por

- fornecer um breve estudo sobre modelagem por pontos uma nova e

promissora aacuterea dentro da computaccedilatildeo graacutefica

Conclusatildeo 72

- por apresentar uma avaliaccedilatildeo dos dois trabalhos existentes sobre

operaccedilotildees booleanas com pontos encontrando as vantagens de cada um

e levantando questotildees que natildeo tinham sido citadas nos trabalhos originais

- por propor e implementar melhorias ao trabalho de Adams e Dutreacute

71 Trabalhos Futuros

Nossa implementaccedilatildeo pode ser ainda evoluiacuteda com as propostas

apresentadas na seccedilatildeo 62 Como observamos o tempo de processamento do

algoritmo aqui implementado ainda pode ser melhorado com o uso do meacutetodo

TINN [19] - que foi proposto em Adams[2] - para otimizar a pesquisa do surfel

mais proacuteximo a um ponto que estaacute localizado na regiatildeo de um noacute que conteacutem

surfels Aleacutem disso o trabalho Simple and Efficient Trasversal Methods for

Quadtrees and Octrees de Sara F Frisken [12] citado no capiacutetulo 2 apresenta

uma otimizaccedilatildeo no uso de octrees Outra proposta para melhorar o tempo de

processamento do algoritmo aqui implementado eacute usar a forma de trabalhar com

octrees apresentada neste trabalho

O trabalho de Adams e Dutreacute [2] eacute aplicado apenas a objetos soacutelidos O

nosso plugin portanto aplica-se somente a este tipo de objeto Jaacute o trabalho de

Pauly[3] eacute aplicado tambeacutem a modelos natildeo soacutelidos Apresentamos como

proposta a um trabalho futuro a extensatildeo do algoritmo aqui implementado para

modelos natildeo soacutelidos O surfel pode conter uma informaccedilatildeo adicional que indica

se ele estaacute delimitando um volume ou natildeo Assim pode-se ter um modelo com

ldquopartes soacutelidasrdquo e ldquopartes natildeo soacutelidasrdquo Por exemplo a uniatildeo de um plano com

uma esfera poderia resultar numa esfera com ldquoabasrdquo (seriam as partes do plano

que estariam fora da esfera) O modelo resultado teria uma parte correspondente

a um espaccedilo 3D (esfera) e outra parte que seria uma superfiacutecie 2D posicionada

no espaccedilo 3D sem delimitar algum volume (abas)

Muitos trabalhos podem ser desenvolvidos aplicando-se o modelo por

pontos em animaccedilatildeo jogos visualizaccedilatildeo de terrenos criaccedilatildeo de protoacutetipos etc

considerando-se a eficiecircncia e simplicidade do modelo E mais especificamente

as operaccedilotildees booleanas com pontos podem ser aplicadas para criaccedilatildeo de

cenaacuterios testes de colisotildees e nestes casos a representaccedilatildeo usando octrees

pode ser mais explorada considerando-se o seu potencial de representaccedilatildeo

volumeacutetrica de um objeto

Referecircncias Bibliograacuteficas 73

8 Referecircncias Bibliograacuteficas

[1] MAumlNTYLAuml M An Introduction to Solid Modeling Computer Science Press 1988

[2] ADAMS B DUTREacute P Interactive Boolean Operations on Surfel-

Bounded Solids Proceedings of SIGGRAPH 2003 San Diego USA 2003

[3] PAULY M KEISER R KOBBELT L GROSS M Shape Modeling

with Point-Sampled Geometry SIGGRAPH 2003 Computer Graphics

Proceedings Annual Conference Series ACM Press ACM SIGGRAPH 2003

[4] LEVOY M WHITTED T The Use of Points as Display Primitives

Technical Report TR 85-022 The University of North Carolina at Chapel Hill

Department of Computer Science 1985

[5] PFISTER H ZWICKER M VAN BAAR J GROSS M 2000 Surfels

Surface Elements as Rendering Primitives SIGGRAPH 2000 pp 335ndash342 New

Orleans LA July 23-28 2000

[6] ZWICKER M PFISTER H VAN BAAR J GROSS M Surface

Splatting SIGGRAPH 2001

[7] PAULY M KOBBELT L GROSS M Multiresolution Modeling of

Point-Sampled Geometry CS Techinical Report 378 September 16 2002

[8] CURLESS B New Methods for Surface Reconstruction from Range Images PhD thesis Stanford University 1997

[9] RUSINKIEWICZ S Real-time Acquisition and Rendering of Large 3D Models PhD thesis Stanford University 2001

Referecircncias Bibliograacuteficas 74

[10] AMENTA N BERN M KAMVYSSELIS M A new Voronoi-Based

Surface Reconstruction Algorithm SIGGRAPH 98 Conference proceedings pp

415-421 New York 1998

[11] ZWICKER M PAULY M KNOLL O GROSS M Pointshop 3D an

Interactive System for Point-Based Surface Editing Proceedings of SIGGRAPH 2002 San Antonio TX July 2002

[12] FRISKEN S PERRY R Simple and Efficient Traversal Methods for

Quadtrees and Octrees Journal of Graphics Tools Vol 7 Issue 3 May 2003

[13] CORREcircA W T OLIVEIRA M M Silva C T Wang J

Modeling and Rendering of Real Environments

Revista de Informaacutetica Teoacuterica e Aplicada (Brazilian Journal of Theoretic and Applied Computing) 9(2)127-156 2002

[14] DAVIS J MARSCHNER S GARR M LEVOY M Filling Holes in

Complex Surfaces Using Volumetric Diffusion First International Symposium on 3D Data Processing Visualization Transmission June 2002

[15] RAumlSAumlNEN J Surface Splatting Theory Extensions and Implementation Masterrsquos Thesis Dept of Computer Science Helsinki

University of Technology May 28 2002

[16] PAULY M Point Primitives for Interactive Modeling and Processing of 3D Geometry PhD thesis Federal Institute of Technology (ETH)

of Zurich 2003

[17] HOPPE H DEROSE T DUCHAMP T MCDONALD J

STUELZLE W Surface Reconstruction from Unorganized Points Computer Graphics 26(2)71ndash78 July 1992

[18] ALEXA M BEHR J COHEN-OR D FLEISHMAN S LEVIN D

SILVA C T Point Set Surfaces IEEE Visualization 2001 pp 21ndash28 October

2001

Referecircncias Bibliograacuteficas 75

[19] GREENSPAN M GODIN G TALBOT J Acceleration of Binning

Nearest Neighbor Methods Proceedings of Vision Interface 2000 pp 337-

344

[20] MENCL R Reconstruction of Surfaces from Unorganized Three-Dimensional Point Clouds Dissertation Dortmund Univ 2001

[21] KRIVANEK J Representing and Rendering Surfaces With Points

httpciteseernjneccomkrivanek03representinghtml Acesso em 30 jul

2003

[22] KRISTJANSSON ET AL Approximate Boolean Operations on Free-

form Solids Proceedings of SIGGRAPH 01 2001

Operaccedilotildees Booleanas com Pontos 39

O tratamento de interseccedilatildeo proposto por Adams e Dutreacute [2] natildeo soacute evita

os buracos mas tambeacutem cria uma forma de renderizaccedilatildeo de arestas vivas A

colocaccedilatildeo de vaacuterios pequenos surfels na regiatildeo da interseccedilatildeo permite esta

correta renderizaccedilatildeo das ldquoarestas vivasrdquo Desta forma o problema das arestas

vivas eacute resolvido na modelagem (Figura 12) A vantagem de se resolver o caso

na modelagem eacute que natildeo eacute necessaacuterio fazer um tratamento especial na

renderizaccedilatildeo para que mostre esta aresta viva Diferente do tratamento feito

em Pauly (seccedilatildeo 431) que resolve esta questatildeo em tempo de renderizaccedilatildeo

Aleacutem disso o tratamento resolve alguns casos onde a Regra 2 poderia falhar

(veja em Validade da Regra 2-seccedilatildeo 44)

Figura 12 [2] -Agrave direita eacute mostrado o resultado do tratamento de interseccedilatildeo para o caso de Arestas Vivas do objeto agrave esquerda

43 Meacutetodo de Pauly

O meacutetodo aplica-se a objetos soacutelidos e natildeo soacutelidos Os modelos podem ser

obtidos a partir de diferentes entradas como nuvem de pontos irregulares ou por

meio de scanners 3D Cria um modelo hiacutebrido destes objetos usa o modelo por

pontos juntamente com a representaccedilatildeo impliacutecita Moving Least Squares - MLS

[18] Realiza operaccedilotildees booleanas com pontos e utiliza adicionalmente MLS

para alguns casos de classificaccedilatildeo de surfels e no tratamento de interseccedilatildeo A

seguir apresentamos as caracteriacutesticas do modelo por pontos deste meacutetodo e o

algoritmo que realiza as operaccedilotildees

Operaccedilotildees Booleanas com Pontos 40

431 Modelo em Pauly

O modelo eacute uma estrutura hiacutebrida de pontos com a representaccedilatildeo impliacutecita

Moving Least Squares - MLS [18] Esta estrutura eacute usada para fazer operaccedilotildees

booleanas e tambeacutem operaccedilotildees de free-form (natildeo abordadas nesta

dissertaccedilatildeo) Para operaccedilotildees booleanas a representaccedilatildeo MLS permite que a

curva de interseccedilatildeo entre os modelos seja reconstruiacuteda e surfels sejam

colocados nesta curva e em alguns casos de classificaccedilatildeo de surfels mostrados

na seccedilatildeo 432 Para este modelo natildeo existem restriccedilotildees quanto agrave forma do

objeto

Os surfels contecircm informaccedilotildees sobre sua posiccedilatildeo e sua normal Aleacutem

disso surfels podem conter informaccedilotildees adicionais como textura cor

propriedades de materiais

A distribuiccedilatildeo dos surfels eacute natildeo-uniforme e a amostragem eacute

aproximadamente adequada (Veja seccedilatildeo 44)

432 Algoritmo de Operaccedilotildees Booleanas

O algoritmo classifica surfels de um modelo como ldquodentrordquo ou ldquoforardquo de

outro modelo Antes de colocarmos como eacute feita esta classificaccedilatildeo devemos

acrescentar que Pauly estende esta classificaccedilatildeo para modelos que natildeo satildeo

soacutelidos Ou seja mesmo um modelo natildeo soacutelido divide o espaccedilo da cena (espaccedilo

em que se encontra o modelo) em dois sub-espaccedilos dentro ou fora do modelo

Pauly faz esta subdivisatildeo da seguinte forma

Como a superfiacutecie que determina o modelo eacute orientada (conteacutem vetores

normais agrave superfiacutecie que apontam para ldquoforardquo do modelo) Pauly considera que

um modelo natildeo soacutelido divide o espaccedilo em dois sub-espaccedilos um ldquoforardquo do

modelo (os vetores normais apontam para este sub-espaccedilo) e um que estaacute

ldquodentrordquo do modelo (os vetores normais apontam para direccedilatildeo oposta a este sub-

espaccedilo) Por exemplo um plano eacute representado como um conjunto de surfels

contidos num determinado espaccedilo geomeacutetrico plano π Cada surfel conteacutem um

vetor normal direcionado Este modelo divide entatildeo o espaccedilo em dois sub-

espaccedilos o sub-espaccedilo que eacute apontado por estes surfels (considerado ldquoforardquo do

modelo) e o sub-espaccedilo que estaacute na direccedilatildeo oposta (considerado ldquodentrordquo do

modelo) Desta forma ele aplica as classificaccedilotildees de ldquodentrordquo e ldquoforardquo de um

modelo tambeacutem a modelos natildeo soacutelidos A partir desta consideraccedilatildeo as

Operaccedilotildees Booleanas com Pontos 41

operaccedilotildees booleanas satildeo realizadas com os modelos natildeo soacutelidos da mesma

forma que com os modelos soacutelidos

Para determinar esta classificaccedilatildeo (dentro ou fora do modelo) Pauly utiliza

a Regra 2 Para pesquisa do surfel mais proacuteximo o meacutetodo usa a estrutura Kd-

tree [16] e tambeacutem o algoritmo ANN [16] No entanto o meacutetodo apresenta uma

restriccedilatildeo da Regra 2 ela soacute deve ser usada para classificaccedilotildees de pontos x se

a distacircncia x-p for maior que o espaccedilamento da amostragem local ηp em p

Este espaccedilamento da amostragem local ηp em p eacute um caacutelculo aproximado da

distacircncia meacutedia entre os surfels vizinhos a p Se x estaacute muito proacuteximo agrave

superfiacutecie a classificaccedilatildeo pode falhar Neste caso ele calcula o ponto exato de

S mais proacuteximo a x usando a projeccedilatildeo MLS (ldquoMoving Least Squaresrdquo)

Por questotildees de melhoria de desempenho utiliza-se o fato de que sendo

Ωp (x) a classificaccedilatildeo do ponto x em relaccedilatildeo agrave amostragem P tem-se que Ωp (x)

= Ωp (xrsquo) para todos os pontos de xrsquo que estatildeo dentro da esfera de centro x e

raio igual a x-p - ηp (onde p eacute o surfel mais proacuteximo e ηp eacute o espaccedilamento

local da amostragem em p acima citado) Ou seja sendo x um ponto qualquer p

o surfel mais proacuteximo a x ηp eacute o espaccedilamento local da amostragem em p se

desenharmos uma esfera com centro x e raio igual a x-p - ηp temos que

todos os pontos xrsquo que estatildeo dentro da esfera teratildeo a mesma classificaccedilatildeo de x

Desta forma o nuacutemero de vezes que a classificaccedilatildeo eacute feita (pesquisando-se o

surfel mais proacuteximo ao ponto e usando a Regra 2) diminui em ateacute 90 Assim

em geral a classificaccedilatildeo de um surfel eacute obtida a partir do seu surfel vizinho

Dados

S1 a superfiacutecie MLS de contorno que define o modelo A

S2 a superfiacutecie MLS de contorno que define o modelo B

P1 o conjunto de surfels que representa a superfiacutecie S1

P2 o conjunto de surfels que representa a superfiacutecie S2

Ωp1 (x) a classificaccedilatildeo do ponto p em relaccedilatildeo a uma amostragem P1

Q1 o subconjunto de P1 que vai compor o resultado

Ωp2 (x) a classificaccedilatildeo do ponto p em relaccedilatildeo a uma amostragem P2

Q2 o subconjunto de P2 que vai compor o resultado

Os conjuntos Q1 e Q2 satildeo obtidos por meio da Tabela 1 mostrada abaixo

Operaccedilotildees Booleanas com Pontos 42

Tabela 1 Classificaccedilatildeo para operaccedilotildees booleanas

Para o tratamento de interseccedilatildeo neste meacutetodo satildeo computados pontos

que caem exatamente na curva de interseccedilatildeo e estes satildeo acrescentados ao

modelo resultado Estes pontos satildeo determinados de forma que a densidade da

amostragem vai crescendo agrave medida que os surfels se aproximam da curva de

interseccedilatildeo e convergem para este ponto de interseccedilatildeo como mostra a Figura

13

(a) (b) (c)

Figura 13 - Os novos surfels satildeo colocados exatamente na curva de interseccedilatildeo

e convergem para o ponto de interseccedilatildeo

A Figura 14 mostra o processo de encontrar os surfels que caem nesta

curva de interseccedilatildeo Inicialmente satildeo encontrados todos os pontos de Q1 e Q2

que estatildeo proacuteximos agrave curva de interseccedilatildeo por meio da funccedilatildeo de distacircncia do

operador de projeccedilatildeo MLS Em seguida procura-se todos os pares mais

proacuteximos (q1 є Q1 q2 є Q2 ) e computa-se o ponto q na curva de interseccedilatildeo da

seguinte forma (veja a Figura 14)Seja r o ponto na linha de interseccedilatildeo dos dois

planos tangentes em q1 e q2 e que estaacute mais proacuteximo a estes dois pontos isto eacute

que minimiza a distacircncia ||r-q1|| + ||r-q2|| r eacute a primeira aproximaccedilatildeo de q e agora

pode ser projetado sobre S1 e S2 para obter dois novos pontos de partida q1rsquo e q2

rsquo

para a iteraccedilatildeo Este procedimento pode ser repetido iterativamente ateacute que os

pontos q1 e q2 convirjam ao ponto q na curva de interseccedilatildeo Normalmente este

processo requer menos de trecircs iteraccedilotildees

Operaccedilotildees Booleanas com Pontos 43

(a) (b)

(c)

Figura 14 (a) Suponhamos a reta que eacute a interseccedilatildeo do plano tangente a S1 em q1 e o

plano tangente a S2 em q2 O ponto r eacute o ponto desta reta que estaacute mais proacuteximo a q1 e

q2 (b) r eacute projetado sobre S1 e S2 obtendo-se q1acute e q2acute dois novos pontos de partida

para nova iteraccedilatildeo (c) A nova iteraccedilatildeo gera r que eacute uma aproximaccedilatildeo melhor de q

Pauly faz o tratamento de arestas vivas em tempo de renderizaccedilatildeo Ele

faz uma alteraccedilatildeo no renderizador Marca os surfels de interseccedilatildeo e ao

renderizaacute-los satildeo cortados para gerar uma aresta viva

44 Validade da Regra 2

Os dois meacutetodos analisados nesta dissertaccedilatildeo utilizam a seguinte regra

para a classificaccedilatildeo de um surfel

Regra 2 dado um volume V determinado por uma superfiacutecie de contorno

S uma amostragem P da superfiacutecie S um ponto x qualquer um ponto p є P que

eacute a amostra mais proacutexima a x um vetor ny normal a S em p e orientado para

fora de S temos que (x ndash p) np gt 0 x notinV

Em [16] eacute colocado que esta regra eacute tirada da seguinte propriedade da

geometria diferencial (aqui chamada Propriedade 1)

Propriedade 1 Dado um volume V determinado por uma superfiacutecie de

contorno S contiacutenua e duplamente diferenciaacutevel um ponto x qualquer um ponto

Operaccedilotildees Booleanas com Pontos 44

y є S que eacute o ponto de S mais proacuteximo a x um vetor ny normal a S em y e

orientado para fora de S temos que (x ndash y) ny gt 0 x notinV

A Figura 15 ilustra esta propriedade

Figura 15 Para verificar se o ponto x estaacute fora de um contorno C encontra-se o ponto y

de C Se o produto interno entre a normal em y e o vetor que liga y a x for maior que

zero entatildeo x estaacute fora de C senatildeo estaacute dentro de C

Pauly assume que tendo uma amostragem P da superfiacutecie S podemos

usar a Propriedade 1 substituindo y por p o surfel mais proacuteximo ao ponto x (x ndash

p) np gt 0 x notinV (Regra 2) Esta amostragem P em seu trabalho eacute

(aproximadamente) uma ldquoamostragem adequadardquo Tambeacutem seu tratamento de

interseccedilatildeo cria uma aproximaccedilatildeo dela (seccedilatildeo 43) Empiricamente a

ldquodiscretizaccedilatildeo da propriedaderdquo eacute vaacutelida a partir desta suposiccedilatildeo Mas isso natildeo foi

demonstrado teoricamente em seu trabalho

Pauly coloca em [16] que natildeo existe ainda uma teoria matemaacutetica rigorosa

de amostragem anaacuteloga a teoria de Fourier para superfiacutecies discretas

A melhor aproximaccedilatildeo teoacuterica para esta aacuterea eacute o uso do Eixo Medial que

foi colocado em [10] Vamos descrever este trabalho brevemente nesta seccedilatildeo

Este trabalho apresenta um algoritmo de reconstruccedilatildeo de superfiacutecie que parte de

uma amostragem adequada (abaixo definida) de pontos e obteacutem uma malha

que eacute topologicamente equivalente agrave superfiacutecie do objeto e agrave medida que a

densidade da amostragem cresce a saiacuteda converge para esta superfiacutecie

Para definir amostragem adequada o trabalho parte do conceito de Eixo

Medial

Operaccedilotildees Booleanas com Pontos 45

ldquoEixo Medialrdquo de uma superfiacutecie 2D posicionada no R3 eacute o conjunto

(fechado) de pontos pi para os quais buscando-se o ponto da superfiacutecie que

estaacute mais proacuteximo a pi mais de um ponto pertencentes a esta superfiacutecie satildeo

encontrados A Figura 16 abaixo ilustra o Eixo Medial em 2D

Figura 16 [10] As curvas de cor mais clara satildeo o Eixo Medial da curva em preto

Em duas dimensotildees os veacutertices de Voronoi de uma amostragem densa

aproximam o ldquoEixo Medialrdquo da amostragem (mas esta propriedade natildeo se

estende a 3D) A Figura 17 mostra o Eixo Medial em 3D

Figura 17 [10] Em 3D geralmente o Eixo Medial eacute uma superfiacutecie 2D (em cor mais

clara) Aqui o quadrado eacute o Eixo Medial da superfiacutecie transparente que o contorna

Podemos definir agora a amostragem adequada da seguinte forma

Supondo uma superfiacutecie suave que quer dizer uma 2-manifold duplamente

diferenciaacutevel posicionada no R3 uma ldquoamostragem adequadardquo desta superfiacutecie eacute

aquela na qual a densidade da amostragem eacute (pelo menos) inversamente

proporcional agrave distacircncia ao ldquoEixo Medialrdquo A Figura 18 mostra uma amostragem

adequada

Operaccedilotildees Booleanas com Pontos 46

Figura 18 [10] A figura mostra o diagrama de Voronoi de uma amostragem de pontos S

Da mesma forma que o a amostragem aproxima a curva os veacutertices de Voronoi

aproximam o Eixo Medial

Na praacutetica na reconstruccedilatildeo da superfiacutecie uma aproximaccedilatildeo deste ldquoEixo

Medialrdquo eacute computada (devido agrave dificuldade de computaacute-lo exatamente e em

alguns casos ateacute impossibilidade)

Melhorias Propostas 47

5 Melhorias Propostas

No capiacutetulo 4 apresentamos dois meacutetodos que realizam operaccedilotildees

booleanas em modelos por pontos o meacutetodo de Adams e Dutreacute [2] e o meacutetodo

de Pauly[3] Para esta dissertaccedilatildeo usamos o meacutetodo de Adams e Dutreacute [2] e

propomos as seguintes melhorias

- Alteramos o momento em que eacute feita a classificaccedilatildeo da octree Fazemos

esta classificaccedilatildeo durante a sua criaccedilatildeo Os noacutes filhos de um noacute pai P qualquer

satildeo classificados logo apoacutes a criaccedilatildeo de todos estes filhos de P

independentemente do restante da octree ter sido criada Isso pode ser feito

porque a octree eacute construiacuteda na ordem raiz-esquerda-direita (preorder

traversal) e portanto apoacutes todos os filhos de um noacute pai serem criados a parte

necessaacuteria da octree para a classificaccedilatildeo destes filhos jaacute estaacute criada

- A classificaccedilatildeo da octree eacute otimizada classificando-se os cantos dos seus

noacutes como dentro ou fora do modelo Na classificaccedilatildeo de um noacute n1 a partir de seu

vizinho n2 se os cantos que satildeo comuns a n1 e n2 tiverem a mesma

classificaccedilatildeo esta seraacute dada ao noacute Assim diminuiacutemos o nuacutemero de pesquisas

pelo surfel mais proacuteximo que eacute a parte criacutetica da classificaccedilatildeo dos noacutes da octree

em termos de tempo de processamento

- Acrescentamos um valor miacutenimo (maior que zero) para o nuacutemero de

surfels contidos em um noacute que eacute uma das condiccedilotildees de parada na criaccedilatildeo da

octree Verificamos que desta forma diminui-se a chance de erro na classificaccedilatildeo

de partes criacuteticas como ldquoarestas vivasrdquo

Uma comparaccedilatildeo entre a nossa implementaccedilatildeo e a de Pauly tambeacutem seraacute

feita no capiacutetulo 6

51 Descriccedilatildeo do algoritmo

O algoritmo implementado para esta dissertaccedilatildeo baseado no meacutetodo de

Adams e Dutreacute [2] pode ser dividido nas seguintes partes Criaccedilatildeo e

classificaccedilatildeo de uma octree para cada modelo Teste DentroFora Criaccedilatildeo do

modelo resultado Natildeo foi implementado tratamento especial algum de

interseccedilatildeo para o nosso plugin As proacuteximas seccedilotildees apresentam estas partes

Melhorias Propostas 48

511 Criaccedilatildeo e classificaccedilatildeo de uma octree para cada modelo

As ideacuteias do algoritmo satildeo aqui ilustradas em 2D mas a extensatildeo delas

para 3D eacute feita facilmente

Para cada modelo a octree eacute criada e classificada da seguinte forma

Figura 19-Quadtree classificada Os noacutes mais escuros estatildeo fora do modelo os mais claros dentro e os em tom intermediaacuterio satildeo noacutes de contorno

Gera-se uma ldquocaixa envolventerdquo do modelo contendo todos os surfels e

cria-se o noacute raiz da octree que corresponde a esta ldquocaixa envolventerdquo Este noacute

raiz eacute subdividido em oito filhos e seus surfels satildeo distribuiacutedos entre eles Ao

inveacutes de testarmos os valores de xy e z para cada surfel a fim de determinar

para qual filho ele iraacute utilizamos listas auxiliares Primeiro os surfels satildeo

subdivididos em dois grupos pelos valores de x e armazenados em uma lista

auxiliar Em seguida cada uma das listas eacute subdividida pelo valor de y e as

quatro listas obtidas seratildeo subdivididas pelo valor de z Ao final teremos 8 listas

de surfels cada uma delas pertencente a um filho

Cada noacute seraacute entatildeo novamente subdividido enquanto contiver um nuacutemero

de surfels gt nmin (valor preacute-definido) ou enquanto a profundidade da aacutervore lt pmax

(valor preacute-definido) Na figura 19 pmax = 3 e nmin = 3

Melhorias Propostas 49

Figura 20-O noacute cheio eacute dividido em trecircs partes agrave esquerda a regiatildeo estaacute dentro do modelo agrave direita estaacute fora e entre as duas linhas que dividem o noacute estaacute a regiatildeo que conteacutem os surfels

Os noacutes cheios recebem um tratamento especial Eles satildeo subdivididos em

trecircs partes da seguinte forma uma que estaacute fora do modelo outra que estaacute

dentro e uma que conteacutem os surfels Esta subdivisatildeo eacute feita por meio da criaccedilatildeo

de dois planos paralelos que dividem o noacute Para determinar estes planos

calcula-se o vetor nm igual agrave meacutedia das normais dos surfels do noacute nm = sum ns

sum ns onde ns eacute a normal de cada surfel do noacute Em seguida encontra-se o

surfel com maior produto interno entre a sua normal e a normal meacutedia

d1=Max(nm ٠ ns) Este surfel juntamente com a normal meacutedia define um dos

planos Encontra-se tambeacutem o surfel com menor produto interno entre a sua

normal e a normal meacutedia d2=Min (nm ٠ ns) Este surfel juntamente com a normal

meacutedia define o outro plano (Figura 20) Se o noacute conteacutem surfels de superfiacutecies de

orientaccedilotildees diferentes ele natildeo seraacute subdividido ou seja os planos coincidiratildeo

com os planos que delimitam o proacuteprio noacute Este teste foi implementado da

seguinte forma escolhe-se um surfel qualquer do noacute Calcula-se o produto

interno entre a normal deste surfel e as outras normais dos outros surfels deste

noacute Se algum produto interno for menor que zero este noacute natildeo seraacute subdividido

Apoacutes a etapa de subdivisatildeo classificam-se os oito cantos deste noacute como

dentro ou fora do modelo por meio da classificaccedilatildeo de um ponto que

descreveremos na sub-seccedilatildeo 5111

Melhorias Propostas 50

a b

c d

Figura 21-O noacute a eacute classificado pelo noacute c o noacute d tambeacutem eacute classificado pelo noacute c a classificaccedilatildeo do noacute a eacute propagada para o noacute b

Jaacute os noacutes vazios da octree seratildeo classificados como ldquodentrordquo ou ldquoforardquo do

modelo da seguinte forma cada noacute folha vazio eacute classificado a partir de um de

seus irmatildeos vizinhos adjacentes Se ele possuir um vizinho adjacente cheio ele

seraacute classificado por este vizinho se natildeo possuir os vizinhos adjacentes seratildeo

classificados primeiro e ele teraacute esta mesma classificaccedilatildeo (Figura 21) Como tem

que existir sempre pelo menos um noacute cheio entre os filhos de um noacute pai entatildeo

sempre esta classificaccedilatildeo poderaacute ser feita Com a classificaccedilatildeo de todos os

filhos tem-se tambeacutem a classificaccedilatildeo dos cantos do noacute pai

Mf03c003fmx a b

Figura 22-Os cantos a e b do noacute cheio possuem a mesma classificaccedilatildeo fora do modelo Esta classificaccedilatildeo foi dada ao noacute vazio adjacente

Melhorias Propostas 51

Para classificar um noacute vazio por meio de um noacute cheio verificam-se os

cantos comuns destes dois noacutes se todos os cantos tiverem a mesma

classificaccedilatildeo esta seraacute dada ao noacute vazio (Figura 22) Se houver classificaccedilotildees

diferentes escolhe-se o surfel do noacute cheio mais proacuteximo ao noacute vazio faz-se o

produto interno entre a normal deste surfel e o vetor que liga o centro do noacute

cheio ao centro do noacute vazio (ou o vetor que liga o surfel ao centro do noacute vazio)

Se o produto interno for maior que zero o noacute eacute classificado como ldquoforardquo senatildeo eacute

classificado como ldquodentrordquo Para encontrar o surfel (pertencente a um noacute cheio)

mais proacuteximo ao noacute vazio existem dois casos

- O noacute cheio eacute folha percorre-se toda a lista de surfels e escolhe o surfel

mais proacuteximo da fronteira entre o noacute cheio e o vazio

- O noacute cheio natildeo eacute um noacute folha percorrem-se os filhos do noacute cheio ou seja

esta pesquisa eacute feita descendo na octree a partir do noacute cheio procurando o

surfel mais proacuteximo agrave fronteira do pai com o noacute vazio a ser classificado

Classificando o centro do noacute vazio todo o noacute deve ter a mesma

classificaccedilatildeo pois este noacute natildeo conteacutem surfels Para encontrar o surfel do noacute

vazio mais proacuteximo da fronteira entre o noacute cheio e o vazio basta testar o valor da

coordenada se a fronteira eacute o lado direito do noacute cheio escolhe-se o surfel com

maior coordenada lsquoxrsquo se eacute o lado esquerdo escolhe-se o surfel com menor lsquoxrsquo

se lado superior surfel com maior lsquoyrsquo etc A seguir apresentamos a classificaccedilatildeo

de um ponto qualquer pertencente a um noacute cheio

Figura 23- Quadtree classificada

Melhorias Propostas 52

5111 Classificaccedilatildeo de um ponto de um noacute cheio

Figura 24 [2] A normal n eacute a normal meacutedia e os surfels s1 e s2 juntamente com a normal

n definem as retas que dividem o noacute O ponto a estaacute fora do modelo e o ponto b estaacute

dentro do modelo

Para um ponto localizado dentro do noacute faz-se o seguinte teste se o noacute foi

dividido testa-se de acordo com a divisatildeo do noacute se o ponto estaacute na parte do noacute

que estaacute dentro do modelo ele eacute classificado como ldquodentrordquo se o ponto estaacute na

parte que estaacute fora do modelo ele eacute classificado como ldquoforardquo (Figura 24) se o

ponto estaacute na parte que conteacutem os surfels encontra-se o surfel s pertencente ao

noacute mais proacuteximo do ponto e o classifica de acordo com s seja ns a normal em s

cs a coordenada de s cp a coordenada do ponto Se (cp - cs )٠ ns gt 0 o ponto

seraacute classificado como ldquoforardquo Senatildeo seraacute classificado como ldquodentrordquo

Se o noacute natildeo foi dividido em planos esta classificaccedilatildeo a partir do surfel

mais proacuteximo seraacute sempre feita

512 Teste DentroFora

Melhorias Propostas 53

Figura 25-Duas circunferecircncias e suas quadtrees correspondentes

O Teste DentroFora classifica os surfels de um modelo como dentro ou

fora de outro modelo ou na sua interseccedilatildeo Este teste foi aqui implementado

exatamente como foi proposto em Adams e Dutreacute [2] exceto que natildeo foi

implementado o meacutetodo TINN - Triangle Inequality Nearest Neighbour [19]

Cada octree eacute percorrida verificando-se se os seus noacutes ou surfels estatildeo dentro

fora ou no contorno do outro modelo (Figura 25) Sejam A e B duas octrees e

queremos classificar a octree A As duas octrees (AB) satildeo percorridas partindo

da raiz

Para cada noacute de A existem quatro casos (Figura 26) Para testar estas

situaccedilotildees os boxes dos noacutes satildeo aumentados de rmax o raio do maior surfel do

modelo Isto eacute feito para compensar o fato de que o surfel natildeo eacute apenas um

ponto mas sim considerado como um disco

Os quatro casos satildeo

Se o noacute de A natildeo intersecta B entatildeo todos os surfels deste noacute satildeo

classificados como fora

Se o noacute de A intersecta apenas noacutes de B que estatildeo fora do modelo

todos os surfels deste noacute satildeo fora

Se o noacute de A intersecta apenas noacutes de B que estatildeo dentro do modelo

todos os surfels deste noacute satildeo dentro

Melhorias Propostas 54

Se o noacute de A intersecta noacutes de B que estatildeo dentro e tambeacutem noacutes de B

que estatildeo fora testa-se se este noacute de A eacute ou natildeo folha Se natildeo for folha

percorre-se os filhos deste noacute de A ateacute encontrar um noacute folha cheio que

intersecta B Para cada surfel sa deste noacute folha de A encontra-se o surfel de B

mais proacuteximo e classifica-se a coordenada de sa da forma apresentada na seccedilatildeo

5111 Seja sb o surfel usado na classificaccedilatildeo de sa Se os discos de sb e sa

se intersectam sa eacute classificado como ldquointerseccedilatildeordquo

(a) (b)

(c) (d)

Figura 26- a modelos natildeo se intersectam b modelo intersecta noacutes fora c modelo intersecta apenas noacutes dentro d modelo intersecta noacutes dentro e noacutes fora

513 Criaccedilatildeo do modelo resultado

Um novo modelo eacute criado com os seguintes surfels (de acordo com a

operaccedilatildeo booleana escolhida pelo usuaacuterio - veja Regra 1 da seccedilatildeo 41)

Uniatildeo - surfels de A que estatildeo fora de B + surfels de B que estatildeo fora de A

Melhorias Propostas 55

Interseccedilatildeo - surfels de A que estatildeo dentro de B + surfels de B que estatildeo

dentro de A

Diferenccedila A-B - surfels de A que estatildeo fora de B + surfels de B que estatildeo

dentro de A (com orientaccedilatildeo invertida)

Como natildeo foi implementado tratamento especial algum de interseccedilatildeo para

o nosso plugin os surfels que se intersectam satildeo mantidos no modelo resultado

final sem modificaccedilotildees

Descrito o algoritmo vejamos a seguir a sua implementaccedilatildeo

52 Implementaccedilatildeo

Este algoritmo foi implementado na forma de um plugin para o software

PointShop 3D [11] Este plugin foi desenvolvido na linguagem C e no sistema

operacional Windows

A escolha deste tipo de implementaccedilatildeo permitiu-nos usar o software

PointShop para os testes do algoritmo Estes testes foram feitos com os modelos

disponibilizados para o PointShop [11] Nesta seccedilatildeo apresentaremos o software

PointShop e as principais estruturas de dados usadas em nosso plugin

O Pointshop eacute um software aberto com seu coacutedigo disponiacutevel e preparado

para trabalhar com plugins Eacute um software de ediccedilatildeo de modelos 3D por pontos

Ele permite aleacutem de visualizar o modelo alterar as suas caracteriacutesticas como

cor brilho e fazer mapeamento de textura iluminaccedilatildeo filtragem (Figura 27)

Melhorias Propostas 56

Figura 27-Software PointShop 3D com dois modelos carregados na sua cena

Aleacutem disso pode-se criar uma cena com vaacuterios modelos e visualizaacute-los de

qualquer ponto de vista Implementa o virtual trackball para rotacionaacute-los e

transladaacute-los Usa uma iluminaccedilatildeo simples direcional A sua arquitetura eacute

extensiacutevel permite que o usuaacuterio adicione seus proacuteprios componentes ao

sistema Possui trecircs tipos de componentes

ldquoToolsrdquo fornece funcionalidades para ediccedilatildeo interativa de superfiacutecie Satildeo

disponibilizados na ldquotoolbarrdquo

Plugins fornece funcionalidades para processar em um soacute passo

modelos ou partes deles selecionadas Satildeo disponibilizados no menu ldquoPluginsrdquo

Renderes fornece funcionalidades de display para os modelos

Para esta dissertaccedilatildeo foi escolhida a construccedilatildeo do componente Plugin

por adequar-se agrave nossa proposta e ser a mais simples de ser construiacuteda O

PointShop [11] jaacute conteacutem uma tool que executa operaccedilotildees booleanas e

deformaccedilatildeo free-form sobre os modelos carregados na cena usando o meacutetodo

de Pauly [3] apresentado no capiacutetulo 4 O nosso plugin Operaccedilotildees Booleanas

implementa o algoritmo descrito na seccedilatildeo anterior baseado na proposta de

Melhorias Propostas 57

Adams e Dutreacute [2] Uma comparaccedilatildeo entre o nosso plugin e a tool de Pauly [3] eacute

feita no capiacutetulo 6

Figura 28-Menu do PointShop com o plugin e as opccedilotildees para operaccedilotildees booleanas

Para se executar o plugin o usuaacuterio precisa carregar dois modelos na

cena do PointShop acionar o plugin informando a operaccedilatildeo que seraacute executada

O plugin executaraacute o algoritmo acima proposto e carregaraacute o resultado na cena

do Pointshop retirando os modelos anteriores

521 Estruturas de Dados

Como vimos o software PointShop [11] trabalha com modelos por pontos

Um modelo deste software descrito na seccedilatildeo 42 conteacutem todas as informaccedilotildees

que o algoritmo proposto em Bart [2] necessita Abaixo relacionamos as

Melhorias Propostas 58

principais estruturas de dados do PointShop usadas no plugin e as principais

estruturas de dados do nosso plugin

As principais classes do PointShop usadas no plugin satildeo

Classe Scene

Classe Objects

Classe SurfelColections

Classe Surfel

Classe StatusBar

Classe Transformer

A hierarquia de dados eacute a seguinte a Scene conteacutem vaacuterios Objects os

quais conteacutem SurfelColections Cada SurfelColections conteacutem Surfels que

suportam uma ou mais propriedades tais como cor difusa cor especular

Classe Scene Classe que representa uma cena que conteacutem modelos

Classe Object Um modelo eacute representado pela classe Object que

conteacutem uma SurfelCollection e as matrizes de transformaccedilatildeo para rotaccedilatildeo

escala e translaccedilatildeo Cada Object eacute identificado pelo seu nome que eacute uacutenico na

Scene O meacutetodo getUniqueName retorna um nome uacutenico Cada Object tem sua

proacutepria matriz de transformaccedilatildeo que pode ser modificada com setRotation

rotate setPosition translate setScale e scale Objects podem ser copiados com

copy Objects consiste em um conjunto de surfels os quais podem ser

recuperados pela getSurfelCollection O Object pode ser ativado com

setActiveObject e recuperado com getActiveObject

Objects podem ser adicionados ou removidos com addObject e

removeObject Os Objects podem ser obtidos pela getFirstObject e

getNextObject

Classe SurfelCollection representa o conjunto de surfels de um modelo

Cada surfelcollection consiste em um conjunto de surfels (SurfelInterface) de

tamanho obtido por getNofSurfels Os surfels podem ser recuperados com

getFirstSurfel getCurrentSurfel e getNextSurfel

A SurfelCollection conteacutem um PropertyDescriptor e uma SurfelList

A SurfelList eacute uma lista duplamente encadeada de surfels Possui os

atributos firstSurfel lastSurfel currentSurfel que satildeo ponteiros para uma

SurfelInterface nSurfels que eacute o nuacutemero de Surfels

A SurfelInterface define a API para os surfels que satildeo os menores

elementos que compotildeem um Object Podem ser considerados como pontos com

uma normal que define a orientaccedilatildeo do ciacuterculo (ou elipse) que seraacute desenhado

Melhorias Propostas 59

tatildeo logo o surfel seja renderizado Tem como atributos dois ponteiros (next e

prev) para SurfelInterface

PropertyDescriptor consiste em ateacute 32 valores descrevendo quais as

propriedades a SurfelInterface suporta

Classe Surfel classe que representa o surfel

Classe StatusBar classe que imprime mensagens na tela Os plugins

podem mandar mensagens para o usuaacuterio pela StatusBar

Mensagens texto podem ser impressas com showMessage O progresso

de uma operaccedilatildeo pode ser indicado com setProgress ou resetProgress

Classe Transformer representa a transformaccedilatildeo entre sistemas de

coordenadas Esta classe fornece meacutetodos para transformar pontos e vetores

entre os diferentes sistemas de coordenadas do Pointshop

A seguir apresentamos as principais estruturas de dados do plugin

Operaccedilotildees Booleanas

As principais estruturas de dados do plugin satildeo boundingbox tree no

lista_surfel surfel

Boundingbox conteacutem dois pontos 3D que definem uma caixa que conteacutem

o modelo um ponto com menores coordenadas xy e z e outro ponto com

maiores xyz

Tree representa a octree do modelo Cada registro conteacutem um ponteiro

para um noacute e oito ponteiros para as 8 octrees filhas

No representa um noacute da octree Conteacutem os seguintes dados

- localizaccedilatildeo do noacute que eacute o canto inferior esquerdo do noacute

- lista_surfel (preenchida apenas para noacutes folha cheios)

- quantidade de surfels do noacute

- classificaccedilatildeo do noacute como dentro fora ou contorno

- classificaccedilatildeo do noacute em relaccedilatildeo a outro modelo

- indica se o noacute eacute folha ou natildeo

- vetor que eacute a meacutedia das normais dos surfels do noacute

- ponto que eacute a meacutedia das localizaccedilotildees dos surfels do noacute

- surfel que tem (entre todos os surfels do noacute) o maior produto interno

entre a sua normal e a normal meacutedia

- surfel que tem (entre todos os surfels do noacute) o menor produto interno

entre a sua normal e a normal meacutedia

- produto interno maacuteximo e miacutenimo entre as normais dos surfels do noacute e a

normal meacutedia deste noacute

Melhorias Propostas 60

- indica se o noacute conteacutem surfels com normais em sentido oposto (produto

interno entre elas eacute menor que zero)

- classificaccedilatildeo dos oito cantos do noacute

lista_surfels lista em que cada registro conteacutem um apontador para um

surfel e um apontador para o proacuteximo registro

surfel representa o surfel da octree Conteacutem a classificaccedilatildeo em relaccedilatildeo a

outro modelo e um ponteiro para o surfel do Poinshop

Resultados 61

6 Resultados

Neste capiacutetulo apresentamos os testes realizados com o plugin para o

PointShop implementado para esta dissertaccedilatildeo a comparaccedilatildeo deste plugin com

o plugin de Pauly [3] e a comparaccedilatildeo entre o meacutetodo de Adams e Dutreacute [2] e o

meacutetodo de Pauly [3]

61 Testes

Os testes foram feitos em um PC x86 Family 6 261600 KB de RAM sem

placa graacutefica sistema operacional Windows 2000 O plugin foi implementado na

linguagem C

Os modelos usados para os testes satildeo modelos disponibilizados no

PointShop [11] Vale lembrar que o meacutetodo implementado em nosso plugin eacute

restrito a modelos soacutelidos e portanto foram usados apenas estes modelos

soacutelidos para os testes

O modelo na Figura 29 que eacute um dos modelos disponibilizados no

PointShop [11] foi usado para mostrar o resultado das operaccedilotildees realizadas

pelo plugin implementado nesta dissertaccedilatildeo O modelo Igea eacute um modelo soacutelido

que conteacutem 134345 surfels

Resultados 62

Figura 29-Modelo do PointShop Igea

Para realizar as operaccedilotildees este modelo foi carregado na cena do

PointShop duas vezes e um deles colorido de vermelho As Figuras 30 31 32

mostram o resultado da operaccedilatildeo de uniatildeo interseccedilatildeo e diferenccedila

respectivamente Os nuacutemeros de surfels dos modelos resultantes satildeo mostrados

na Tabela 2

Resultados 63

Figura 30-Resultado da uniatildeo de duas Igeas

Figura 31-Resultado da interseccedilatildeo de duas Igeas

Resultados 64

Figura 32-Resultado da diferenccedila entre duas Igeas

Tabela 2-Nuacutemero de surfels dos modelos resultantes

Observamos que o nuacutemero de surfels dos modelos resultantes estaacute

coerente com as figuras dos seus modelos

Para avaliar o tempo de processamento das operaccedilotildees foram realizados

vaacuterios testes com o objetivo de obter uma meacutedia dos tempos de realizaccedilatildeo de

cada operaccedilatildeo Tambeacutem foram armazenados os tempos da criaccedilatildeo das duas

octrees e da classificaccedilatildeo de todos os surfels dos dois objetos (como dentro ou

fora do outro modelo) Estes testes foram feitos usando o modelo Igea A meacutedia

dos tempos de processamento foi calculada e os resultados satildeo mostrados na

Tabela 3 Verificamos que o maior tempo gasto eacute para criaccedilatildeo das octrees

Verificamos tambeacutem que este resultado apresentado eacute similar ao resultado

verificado empiricamente com o plugin de Pauly [3] Os tempos gastos para

realizar as operaccedilotildees satildeo similares e o maior tempo gasto no plugin de Pauly

tambeacutem eacute para inicializaccedilatildeo de suas estruturas de dados que incluem a kd-tree

Operaccedilatildeo Nuacutemero de surfels do modelo resultado

Uniatildeo 189715

Interseccedilatildeo 72225

Diferenccedila 134552

Resultados 65

Operaccedilatildeo Criaccedilatildeo das

Octrees (seg)

Classificaccedilatildeo

(seg)

Criaccedilatildeo do

resultado (seg)

Total (seg)

Uniatildeo 39375 1324 18925 7154

Interseccedilatildeo 38585 1585 09547 63982

Diferenccedila 399875 1504 1729 729475

Tabela 3- Meacutedia dos tempos de processamento para as operaccedilotildees com duas Igeas

Com o objetivo de expor melhor os resultados deste trabalho

apresentamos abaixo mais um teste das operaccedilotildees booleanas usando o nosso

plugin Os modelos usados para este segundo teste satildeo o Max Planck e o Male

ambos modelos soacutelidos disponibilizados no PointShop Estes modelos satildeo

mostrados nas figura 33 e 34

O primeiro Max Planck conteacutem 52809 surfels

Figura 33-Modelo do PointShop MaxPlanck

O segundo modelo abaixo Male conteacutem 148138 surfels

Resultados 66

Figura 34-Modelo do PointShop Male

As Figuras 353637 mostram o resultado da operaccedilatildeo de uniatildeo interseccedilatildeo

e diferenccedila respectivamente usando os dois modelos acima Podemos observar

pela figura 35 que o resultado da operaccedilatildeo de diferenccedila neste caso gerou um

modelo resultado com trecircs partes desconexas Os nuacutemeros de surfels de cada

modelo resultado satildeo mostrados na Tabela 5

Figura 35- Resultado da Uniatildeo do modelo Male com MaxPlanck

Resultados 67

Figura 36-Resultado da interseccedilatildeo do modelo Male com o MaxPlanck

Figura 37-Resultado da diferenccedila do modelo Male do modelo MaxPlanck

As meacutedias de tempos de processamento foram calculadas da mesma

forma que o primeiro teste com o modelo Igea acima apresentado Os

resultados satildeo mostrados na Tabela 4 Podemos observar que este teste

Resultados 68

apresenta tempos um pouco menores que o teste com o modelo Igea Isto se

deve ao fato de que o modelo MaxPlanck ser significativamente menor que o

modelo Igea MaxPlanck possui 52809 surfels e Igea conteacutem 134345 surfels

Operaccedilatildeo Criaccedilatildeo das

Octrees (seg)

Classificaccedilatildeo

(seg)

Criaccedilatildeo do

resultado (seg)

Total

(seg)

Uniatildeo 3012 1254 102 5285

Interseccedilatildeo 2985 0901 0861 4747

Diferenccedila 2965 0911 0791 4667

Tabela 4-Tempo de processamento das operaccedilotildees com os modelos MaxPlanck e Male

Operaccedilatildeo Nuacutemero de surfels do resultado

Uniatildeo 126532

Interseccedilatildeo 88414

Diferenccedila 77635

Tabela 5-Nuacutemero de surfels dos modelos resultados das operaccedilotildees com os modelos MaxPlanck e Male

Em seguida apresentaremos uma comparaccedilatildeo entre o nosso plugin e o

plugin de Pauly[3] e tambeacutem uma comparaccedilatildeo entre o meacutetodo de Adams e Dutreacute

[2] e o meacutetodo de Pauly [3]

62 Comparaccedilatildeo entre os dois meacutetodos que realizam operaccedilotildees booleanas

A comparaccedilatildeo entre os meacutetodos de Pauly[3] e de Adams e Dutreacute foi feita

em termos de tempo de processamento e em termos conceituais Em termos de

tempo de processamento comparamos o plugin de Pauly[3] com o nosso plugin

Em termos de tempo de processamento verifica-se empiricamente que os

dois meacutetodos apresentam tempos bastante similares Entretanto o tempo de

processamento do algoritmo aqui implementado ainda pode ser melhorado com

Resultados 69

o uso do meacutetodo TINN [19] que foi proposto em Adams[2] - para otimizar a

pesquisa do surfel mais proacuteximo a um ponto que estaacute localizado na regiatildeo de um

noacute que conteacutem surfels - veja seccedilatildeo 42 O uso deste meacutetodo natildeo foi

implementado para este trabalho e a sua implementaccedilatildeo melhoraria o tempo de

resposta do algoritmo Aleacutem disso o trabalho de Sara F Frisken [12] citado no

capiacutetulo 2 apresenta uma otimizaccedilatildeo no uso de octrees que pode ser

incorporada no algoritmo implementado neste trabalho

Em termos conceituais vamos fazer a comparaccedilatildeo do uso do que

chamamos aqui de Regra 2 do tratamento de interseccedilatildeo e do tratamento de

ldquoarestas vivasrdquo

Como vimos na seccedilatildeo 41 tanto o algoritmo implementado nesta

dissertaccedilatildeo baseado no trabalho de Adams e Dutreacute como o meacutetodo de Pauly

[3] parte do que chamamos aqui de Regra 2 para realizar operaccedilotildees booleanas

com pontos Mas cada um destes meacutetodos daacute um tratamento diferente para o

uso desta regra

O meacutetodo de Pauly usa a Regra 2 para classificaccedilatildeo de cada ponto ou de

cada surfel Para classificar um surfel de B sb como dentro ou fora de A eacute

encontrado o surfel de A sa mais proacuteximo a sb e sb eacute classificado a partir de sa

Para encontrar sa Pauly utiliza uma kd-tree Como esta pesquisa para encontrar

sa eacute cara (mesmo usando uma kd-tree) Pauly utiliza uma esfera que conteacutem

pontos com a mesma classificaccedilatildeo (seccedilatildeo 432) e diminui em 90 este nuacutemero

de pesquisas Pauly utiliza tambeacutem a representaccedilatildeo impliacutecita MLS (Moving Least

Squares) para casos em que a Regra 2 poderia falhar e para tratamento de

interseccedilotildees Entretanto o nuacutemero destes casos em que a Regra 2 poderia falhar

eacute muito pequeno E a representaccedilatildeo MLS natildeo eacute uma estrutura simples de ser

implementada Portanto natildeo encontramos vantagens em usar MLS para estes

casos O meacutetodo de Adams e Dutreacute natildeo trata estes casos e na praacutetica

apresenta resultados bastante satisfatoacuterios como foi mostrado Portanto

consideramos que valeria a pena fazer algum tratamento especial para estes

casos se fosse um procedimento simples Para a execuccedilatildeo do algoritmo de

Pauly o uso de MLS natildeo interfere significativamente porque a construccedilatildeo desta

representaccedilatildeo natildeo eacute feita somente para realizar operaccedilotildees booleanas Os testes

empiacutericos que fizemos com o algoritmo de Pauly natildeo incluem a construccedilatildeo desta

representaccedilatildeo

Aparentemente os dois algoritmos satildeo bastante parecidos um usa octrees

e o outro usa kd-tree As duas estruturas de dados satildeo simples e otimizam a

classificaccedilatildeo dos surfels de um modelo como dentro ou fora do outro modelo

Resultados 70

Mas existe uma diferenccedila conceitual entre dois que merece ser destacada O

algoritmo aqui implementado usa a Regra 2 para classificaccedilatildeo dos noacutes de uma

octree e armazena esta octree classificada (ver capiacutetulo 5) Assim na maioria dos

casos natildeo seraacute necessaacuterio encontrar o surfel mais proacuteximo para classificar um

ponto (ou um surfel) como fora ou dentro de um modelo Caso o ponto esteja em

uma aacuterea da octree classificada ele teraacute a classificaccedilatildeo dada agravequela aacuterea A

pesquisa ao surfel mais proacuteximo seraacute feita apenas nos casos em que o ponto a

ser classificado estaacute localizado entre os planos que subdividem um noacute cheio

O uso desta octree classificada levanta uma questatildeo que natildeo foi citada no

trabalho de Adams e Dutreacute que eacute a proximidade desta estrutura (armazenada)

de octree classificada com uma representaccedilatildeo volumeacutetrica do objeto Sendo

assim esta estrutura pode ser aproveitada para outras funccedilotildees aleacutem da

classificaccedilatildeo dos surfels Por exemplo podemos ter uma aproximaccedilatildeo do

volume de uma cena somando os volumes aproximados dos modelos que a

compotildeem Como o enfoque deste trabalho eacute operaccedilatildeo booleana natildeo vamos nos

aprofundar nesta questatildeo

Outra importante diferenccedila entre os dois trabalhos que jaacute foi explicada na

seccedilatildeo 432 eacute que o meacutetodo de Pauly aplica-se a modelos soacutelidos ou natildeo

soacutelidos enquanto que o meacutetodo de Adams e Dutreacute aplica-se somente a modelos

soacutelidos

Quanto ao tratamento de interseccedilatildeo em termos de visualizaccedilatildeo todos os

dois resolvem bem o problema O tratamento de interseccedilatildeo nos dois trabalhos

tambeacutem resolve o problema da validade da Regra 2 (ver seccedilatildeo 44) Entretanto

o tratamento de Adams e Dutreacute natildeo depende da renderizaccedilatildeo sendo portanto

mais portaacutevel Aleacutem disso uma desvantagem do meacutetodo de Pauly eacute o uso da

representaccedilatildeo impliacutecita MLS (ldquoMoving Least Squaresrdquo) do objeto para obter os

pontos exatamente na curva de interseccedilatildeo Esta representaccedilatildeo torna o

tratamento de interseccedilatildeo mais complexo e a vantagem apresentada natildeo eacute tatildeo

significativa para este tratamento de interseccedilatildeo

Conclusatildeo 71

7 Conclusatildeo

Concluiacutemos entatildeo que as escolhas de Adams e Dutreacute por usar uma

octree classificada e pelo tratamento dado agrave interseccedilatildeo satildeo mais abrangentes

que a escolha de Pauly E consideramos que quanto mais abrangente for uma

escolha conceitual mais resultados poderemos tirar dela No caso de Adams e

Dutreacute eles estendem o problema de classificar um ponto para classificar todo o

modelo Como foi citado ele quase fornece uma representaccedilatildeo volumeacutetrica do

modelo Esta aproximada representaccedilatildeo volumeacutetrica pode nos fornecer outras

informaccedilotildees como por exemplo o volume aproximado do modelo

Aleacutem disso o uso da representaccedilatildeo impliacutecita MLS no meacutetodo de Pauly cria

uma complexidade a mais para o meacutetodo sem apresentar vantagens para a

realizaccedilatildeo de operaccedilotildees booleanas que eacute o nosso enfoque

Logo podemos dizer que o meacutetodo de Adams e Dutreacute apresenta as

seguintes vantagens em relaccedilatildeo ao de Pauly

- a estrutura de octree classificada aleacutem de ser usada para classificaccedilatildeo

fornece informaccedilotildees adicionais como volume aproximado do objeto

- o tempo de processamento no meacutetodo de Adams e Dutreacute tende a ser

melhor que no meacutetodo de Pauly se implementadas as melhorias acima citadas e

se colocaacutessemos em consideraccedilatildeo o uso da representaccedilatildeo impliacutecita MLS

(Moving Least Squares)

- o tratamento de interseccedilatildeo de Adams e Dutreacute apresenta a vantagem da

portabilidade ou seja iraacute funcionar independente do algoritmo de renderizaccedilatildeo

utilizado

E as vantagens do meacutetodo de Pauly em relaccedilatildeo ao de Adams e Dutreacute

- a colocaccedilatildeo de surfels exatamente na curva de interseccedilatildeo

- a possibilidade de trabalhar com modelos soacutelidos ou natildeo soacutelidos

E finalizando concluiacutemos que o estudo relatado nesta dissertaccedilatildeo foi

importante por

- fornecer um breve estudo sobre modelagem por pontos uma nova e

promissora aacuterea dentro da computaccedilatildeo graacutefica

Conclusatildeo 72

- por apresentar uma avaliaccedilatildeo dos dois trabalhos existentes sobre

operaccedilotildees booleanas com pontos encontrando as vantagens de cada um

e levantando questotildees que natildeo tinham sido citadas nos trabalhos originais

- por propor e implementar melhorias ao trabalho de Adams e Dutreacute

71 Trabalhos Futuros

Nossa implementaccedilatildeo pode ser ainda evoluiacuteda com as propostas

apresentadas na seccedilatildeo 62 Como observamos o tempo de processamento do

algoritmo aqui implementado ainda pode ser melhorado com o uso do meacutetodo

TINN [19] - que foi proposto em Adams[2] - para otimizar a pesquisa do surfel

mais proacuteximo a um ponto que estaacute localizado na regiatildeo de um noacute que conteacutem

surfels Aleacutem disso o trabalho Simple and Efficient Trasversal Methods for

Quadtrees and Octrees de Sara F Frisken [12] citado no capiacutetulo 2 apresenta

uma otimizaccedilatildeo no uso de octrees Outra proposta para melhorar o tempo de

processamento do algoritmo aqui implementado eacute usar a forma de trabalhar com

octrees apresentada neste trabalho

O trabalho de Adams e Dutreacute [2] eacute aplicado apenas a objetos soacutelidos O

nosso plugin portanto aplica-se somente a este tipo de objeto Jaacute o trabalho de

Pauly[3] eacute aplicado tambeacutem a modelos natildeo soacutelidos Apresentamos como

proposta a um trabalho futuro a extensatildeo do algoritmo aqui implementado para

modelos natildeo soacutelidos O surfel pode conter uma informaccedilatildeo adicional que indica

se ele estaacute delimitando um volume ou natildeo Assim pode-se ter um modelo com

ldquopartes soacutelidasrdquo e ldquopartes natildeo soacutelidasrdquo Por exemplo a uniatildeo de um plano com

uma esfera poderia resultar numa esfera com ldquoabasrdquo (seriam as partes do plano

que estariam fora da esfera) O modelo resultado teria uma parte correspondente

a um espaccedilo 3D (esfera) e outra parte que seria uma superfiacutecie 2D posicionada

no espaccedilo 3D sem delimitar algum volume (abas)

Muitos trabalhos podem ser desenvolvidos aplicando-se o modelo por

pontos em animaccedilatildeo jogos visualizaccedilatildeo de terrenos criaccedilatildeo de protoacutetipos etc

considerando-se a eficiecircncia e simplicidade do modelo E mais especificamente

as operaccedilotildees booleanas com pontos podem ser aplicadas para criaccedilatildeo de

cenaacuterios testes de colisotildees e nestes casos a representaccedilatildeo usando octrees

pode ser mais explorada considerando-se o seu potencial de representaccedilatildeo

volumeacutetrica de um objeto

Referecircncias Bibliograacuteficas 73

8 Referecircncias Bibliograacuteficas

[1] MAumlNTYLAuml M An Introduction to Solid Modeling Computer Science Press 1988

[2] ADAMS B DUTREacute P Interactive Boolean Operations on Surfel-

Bounded Solids Proceedings of SIGGRAPH 2003 San Diego USA 2003

[3] PAULY M KEISER R KOBBELT L GROSS M Shape Modeling

with Point-Sampled Geometry SIGGRAPH 2003 Computer Graphics

Proceedings Annual Conference Series ACM Press ACM SIGGRAPH 2003

[4] LEVOY M WHITTED T The Use of Points as Display Primitives

Technical Report TR 85-022 The University of North Carolina at Chapel Hill

Department of Computer Science 1985

[5] PFISTER H ZWICKER M VAN BAAR J GROSS M 2000 Surfels

Surface Elements as Rendering Primitives SIGGRAPH 2000 pp 335ndash342 New

Orleans LA July 23-28 2000

[6] ZWICKER M PFISTER H VAN BAAR J GROSS M Surface

Splatting SIGGRAPH 2001

[7] PAULY M KOBBELT L GROSS M Multiresolution Modeling of

Point-Sampled Geometry CS Techinical Report 378 September 16 2002

[8] CURLESS B New Methods for Surface Reconstruction from Range Images PhD thesis Stanford University 1997

[9] RUSINKIEWICZ S Real-time Acquisition and Rendering of Large 3D Models PhD thesis Stanford University 2001

Referecircncias Bibliograacuteficas 74

[10] AMENTA N BERN M KAMVYSSELIS M A new Voronoi-Based

Surface Reconstruction Algorithm SIGGRAPH 98 Conference proceedings pp

415-421 New York 1998

[11] ZWICKER M PAULY M KNOLL O GROSS M Pointshop 3D an

Interactive System for Point-Based Surface Editing Proceedings of SIGGRAPH 2002 San Antonio TX July 2002

[12] FRISKEN S PERRY R Simple and Efficient Traversal Methods for

Quadtrees and Octrees Journal of Graphics Tools Vol 7 Issue 3 May 2003

[13] CORREcircA W T OLIVEIRA M M Silva C T Wang J

Modeling and Rendering of Real Environments

Revista de Informaacutetica Teoacuterica e Aplicada (Brazilian Journal of Theoretic and Applied Computing) 9(2)127-156 2002

[14] DAVIS J MARSCHNER S GARR M LEVOY M Filling Holes in

Complex Surfaces Using Volumetric Diffusion First International Symposium on 3D Data Processing Visualization Transmission June 2002

[15] RAumlSAumlNEN J Surface Splatting Theory Extensions and Implementation Masterrsquos Thesis Dept of Computer Science Helsinki

University of Technology May 28 2002

[16] PAULY M Point Primitives for Interactive Modeling and Processing of 3D Geometry PhD thesis Federal Institute of Technology (ETH)

of Zurich 2003

[17] HOPPE H DEROSE T DUCHAMP T MCDONALD J

STUELZLE W Surface Reconstruction from Unorganized Points Computer Graphics 26(2)71ndash78 July 1992

[18] ALEXA M BEHR J COHEN-OR D FLEISHMAN S LEVIN D

SILVA C T Point Set Surfaces IEEE Visualization 2001 pp 21ndash28 October

2001

Referecircncias Bibliograacuteficas 75

[19] GREENSPAN M GODIN G TALBOT J Acceleration of Binning

Nearest Neighbor Methods Proceedings of Vision Interface 2000 pp 337-

344

[20] MENCL R Reconstruction of Surfaces from Unorganized Three-Dimensional Point Clouds Dissertation Dortmund Univ 2001

[21] KRIVANEK J Representing and Rendering Surfaces With Points

httpciteseernjneccomkrivanek03representinghtml Acesso em 30 jul

2003

[22] KRISTJANSSON ET AL Approximate Boolean Operations on Free-

form Solids Proceedings of SIGGRAPH 01 2001

Operaccedilotildees Booleanas com Pontos 40

431 Modelo em Pauly

O modelo eacute uma estrutura hiacutebrida de pontos com a representaccedilatildeo impliacutecita

Moving Least Squares - MLS [18] Esta estrutura eacute usada para fazer operaccedilotildees

booleanas e tambeacutem operaccedilotildees de free-form (natildeo abordadas nesta

dissertaccedilatildeo) Para operaccedilotildees booleanas a representaccedilatildeo MLS permite que a

curva de interseccedilatildeo entre os modelos seja reconstruiacuteda e surfels sejam

colocados nesta curva e em alguns casos de classificaccedilatildeo de surfels mostrados

na seccedilatildeo 432 Para este modelo natildeo existem restriccedilotildees quanto agrave forma do

objeto

Os surfels contecircm informaccedilotildees sobre sua posiccedilatildeo e sua normal Aleacutem

disso surfels podem conter informaccedilotildees adicionais como textura cor

propriedades de materiais

A distribuiccedilatildeo dos surfels eacute natildeo-uniforme e a amostragem eacute

aproximadamente adequada (Veja seccedilatildeo 44)

432 Algoritmo de Operaccedilotildees Booleanas

O algoritmo classifica surfels de um modelo como ldquodentrordquo ou ldquoforardquo de

outro modelo Antes de colocarmos como eacute feita esta classificaccedilatildeo devemos

acrescentar que Pauly estende esta classificaccedilatildeo para modelos que natildeo satildeo

soacutelidos Ou seja mesmo um modelo natildeo soacutelido divide o espaccedilo da cena (espaccedilo

em que se encontra o modelo) em dois sub-espaccedilos dentro ou fora do modelo

Pauly faz esta subdivisatildeo da seguinte forma

Como a superfiacutecie que determina o modelo eacute orientada (conteacutem vetores

normais agrave superfiacutecie que apontam para ldquoforardquo do modelo) Pauly considera que

um modelo natildeo soacutelido divide o espaccedilo em dois sub-espaccedilos um ldquoforardquo do

modelo (os vetores normais apontam para este sub-espaccedilo) e um que estaacute

ldquodentrordquo do modelo (os vetores normais apontam para direccedilatildeo oposta a este sub-

espaccedilo) Por exemplo um plano eacute representado como um conjunto de surfels

contidos num determinado espaccedilo geomeacutetrico plano π Cada surfel conteacutem um

vetor normal direcionado Este modelo divide entatildeo o espaccedilo em dois sub-

espaccedilos o sub-espaccedilo que eacute apontado por estes surfels (considerado ldquoforardquo do

modelo) e o sub-espaccedilo que estaacute na direccedilatildeo oposta (considerado ldquodentrordquo do

modelo) Desta forma ele aplica as classificaccedilotildees de ldquodentrordquo e ldquoforardquo de um

modelo tambeacutem a modelos natildeo soacutelidos A partir desta consideraccedilatildeo as

Operaccedilotildees Booleanas com Pontos 41

operaccedilotildees booleanas satildeo realizadas com os modelos natildeo soacutelidos da mesma

forma que com os modelos soacutelidos

Para determinar esta classificaccedilatildeo (dentro ou fora do modelo) Pauly utiliza

a Regra 2 Para pesquisa do surfel mais proacuteximo o meacutetodo usa a estrutura Kd-

tree [16] e tambeacutem o algoritmo ANN [16] No entanto o meacutetodo apresenta uma

restriccedilatildeo da Regra 2 ela soacute deve ser usada para classificaccedilotildees de pontos x se

a distacircncia x-p for maior que o espaccedilamento da amostragem local ηp em p

Este espaccedilamento da amostragem local ηp em p eacute um caacutelculo aproximado da

distacircncia meacutedia entre os surfels vizinhos a p Se x estaacute muito proacuteximo agrave

superfiacutecie a classificaccedilatildeo pode falhar Neste caso ele calcula o ponto exato de

S mais proacuteximo a x usando a projeccedilatildeo MLS (ldquoMoving Least Squaresrdquo)

Por questotildees de melhoria de desempenho utiliza-se o fato de que sendo

Ωp (x) a classificaccedilatildeo do ponto x em relaccedilatildeo agrave amostragem P tem-se que Ωp (x)

= Ωp (xrsquo) para todos os pontos de xrsquo que estatildeo dentro da esfera de centro x e

raio igual a x-p - ηp (onde p eacute o surfel mais proacuteximo e ηp eacute o espaccedilamento

local da amostragem em p acima citado) Ou seja sendo x um ponto qualquer p

o surfel mais proacuteximo a x ηp eacute o espaccedilamento local da amostragem em p se

desenharmos uma esfera com centro x e raio igual a x-p - ηp temos que

todos os pontos xrsquo que estatildeo dentro da esfera teratildeo a mesma classificaccedilatildeo de x

Desta forma o nuacutemero de vezes que a classificaccedilatildeo eacute feita (pesquisando-se o

surfel mais proacuteximo ao ponto e usando a Regra 2) diminui em ateacute 90 Assim

em geral a classificaccedilatildeo de um surfel eacute obtida a partir do seu surfel vizinho

Dados

S1 a superfiacutecie MLS de contorno que define o modelo A

S2 a superfiacutecie MLS de contorno que define o modelo B

P1 o conjunto de surfels que representa a superfiacutecie S1

P2 o conjunto de surfels que representa a superfiacutecie S2

Ωp1 (x) a classificaccedilatildeo do ponto p em relaccedilatildeo a uma amostragem P1

Q1 o subconjunto de P1 que vai compor o resultado

Ωp2 (x) a classificaccedilatildeo do ponto p em relaccedilatildeo a uma amostragem P2

Q2 o subconjunto de P2 que vai compor o resultado

Os conjuntos Q1 e Q2 satildeo obtidos por meio da Tabela 1 mostrada abaixo

Operaccedilotildees Booleanas com Pontos 42

Tabela 1 Classificaccedilatildeo para operaccedilotildees booleanas

Para o tratamento de interseccedilatildeo neste meacutetodo satildeo computados pontos

que caem exatamente na curva de interseccedilatildeo e estes satildeo acrescentados ao

modelo resultado Estes pontos satildeo determinados de forma que a densidade da

amostragem vai crescendo agrave medida que os surfels se aproximam da curva de

interseccedilatildeo e convergem para este ponto de interseccedilatildeo como mostra a Figura

13

(a) (b) (c)

Figura 13 - Os novos surfels satildeo colocados exatamente na curva de interseccedilatildeo

e convergem para o ponto de interseccedilatildeo

A Figura 14 mostra o processo de encontrar os surfels que caem nesta

curva de interseccedilatildeo Inicialmente satildeo encontrados todos os pontos de Q1 e Q2

que estatildeo proacuteximos agrave curva de interseccedilatildeo por meio da funccedilatildeo de distacircncia do

operador de projeccedilatildeo MLS Em seguida procura-se todos os pares mais

proacuteximos (q1 є Q1 q2 є Q2 ) e computa-se o ponto q na curva de interseccedilatildeo da

seguinte forma (veja a Figura 14)Seja r o ponto na linha de interseccedilatildeo dos dois

planos tangentes em q1 e q2 e que estaacute mais proacuteximo a estes dois pontos isto eacute

que minimiza a distacircncia ||r-q1|| + ||r-q2|| r eacute a primeira aproximaccedilatildeo de q e agora

pode ser projetado sobre S1 e S2 para obter dois novos pontos de partida q1rsquo e q2

rsquo

para a iteraccedilatildeo Este procedimento pode ser repetido iterativamente ateacute que os

pontos q1 e q2 convirjam ao ponto q na curva de interseccedilatildeo Normalmente este

processo requer menos de trecircs iteraccedilotildees

Operaccedilotildees Booleanas com Pontos 43

(a) (b)

(c)

Figura 14 (a) Suponhamos a reta que eacute a interseccedilatildeo do plano tangente a S1 em q1 e o

plano tangente a S2 em q2 O ponto r eacute o ponto desta reta que estaacute mais proacuteximo a q1 e

q2 (b) r eacute projetado sobre S1 e S2 obtendo-se q1acute e q2acute dois novos pontos de partida

para nova iteraccedilatildeo (c) A nova iteraccedilatildeo gera r que eacute uma aproximaccedilatildeo melhor de q

Pauly faz o tratamento de arestas vivas em tempo de renderizaccedilatildeo Ele

faz uma alteraccedilatildeo no renderizador Marca os surfels de interseccedilatildeo e ao

renderizaacute-los satildeo cortados para gerar uma aresta viva

44 Validade da Regra 2

Os dois meacutetodos analisados nesta dissertaccedilatildeo utilizam a seguinte regra

para a classificaccedilatildeo de um surfel

Regra 2 dado um volume V determinado por uma superfiacutecie de contorno

S uma amostragem P da superfiacutecie S um ponto x qualquer um ponto p є P que

eacute a amostra mais proacutexima a x um vetor ny normal a S em p e orientado para

fora de S temos que (x ndash p) np gt 0 x notinV

Em [16] eacute colocado que esta regra eacute tirada da seguinte propriedade da

geometria diferencial (aqui chamada Propriedade 1)

Propriedade 1 Dado um volume V determinado por uma superfiacutecie de

contorno S contiacutenua e duplamente diferenciaacutevel um ponto x qualquer um ponto

Operaccedilotildees Booleanas com Pontos 44

y є S que eacute o ponto de S mais proacuteximo a x um vetor ny normal a S em y e

orientado para fora de S temos que (x ndash y) ny gt 0 x notinV

A Figura 15 ilustra esta propriedade

Figura 15 Para verificar se o ponto x estaacute fora de um contorno C encontra-se o ponto y

de C Se o produto interno entre a normal em y e o vetor que liga y a x for maior que

zero entatildeo x estaacute fora de C senatildeo estaacute dentro de C

Pauly assume que tendo uma amostragem P da superfiacutecie S podemos

usar a Propriedade 1 substituindo y por p o surfel mais proacuteximo ao ponto x (x ndash

p) np gt 0 x notinV (Regra 2) Esta amostragem P em seu trabalho eacute

(aproximadamente) uma ldquoamostragem adequadardquo Tambeacutem seu tratamento de

interseccedilatildeo cria uma aproximaccedilatildeo dela (seccedilatildeo 43) Empiricamente a

ldquodiscretizaccedilatildeo da propriedaderdquo eacute vaacutelida a partir desta suposiccedilatildeo Mas isso natildeo foi

demonstrado teoricamente em seu trabalho

Pauly coloca em [16] que natildeo existe ainda uma teoria matemaacutetica rigorosa

de amostragem anaacuteloga a teoria de Fourier para superfiacutecies discretas

A melhor aproximaccedilatildeo teoacuterica para esta aacuterea eacute o uso do Eixo Medial que

foi colocado em [10] Vamos descrever este trabalho brevemente nesta seccedilatildeo

Este trabalho apresenta um algoritmo de reconstruccedilatildeo de superfiacutecie que parte de

uma amostragem adequada (abaixo definida) de pontos e obteacutem uma malha

que eacute topologicamente equivalente agrave superfiacutecie do objeto e agrave medida que a

densidade da amostragem cresce a saiacuteda converge para esta superfiacutecie

Para definir amostragem adequada o trabalho parte do conceito de Eixo

Medial

Operaccedilotildees Booleanas com Pontos 45

ldquoEixo Medialrdquo de uma superfiacutecie 2D posicionada no R3 eacute o conjunto

(fechado) de pontos pi para os quais buscando-se o ponto da superfiacutecie que

estaacute mais proacuteximo a pi mais de um ponto pertencentes a esta superfiacutecie satildeo

encontrados A Figura 16 abaixo ilustra o Eixo Medial em 2D

Figura 16 [10] As curvas de cor mais clara satildeo o Eixo Medial da curva em preto

Em duas dimensotildees os veacutertices de Voronoi de uma amostragem densa

aproximam o ldquoEixo Medialrdquo da amostragem (mas esta propriedade natildeo se

estende a 3D) A Figura 17 mostra o Eixo Medial em 3D

Figura 17 [10] Em 3D geralmente o Eixo Medial eacute uma superfiacutecie 2D (em cor mais

clara) Aqui o quadrado eacute o Eixo Medial da superfiacutecie transparente que o contorna

Podemos definir agora a amostragem adequada da seguinte forma

Supondo uma superfiacutecie suave que quer dizer uma 2-manifold duplamente

diferenciaacutevel posicionada no R3 uma ldquoamostragem adequadardquo desta superfiacutecie eacute

aquela na qual a densidade da amostragem eacute (pelo menos) inversamente

proporcional agrave distacircncia ao ldquoEixo Medialrdquo A Figura 18 mostra uma amostragem

adequada

Operaccedilotildees Booleanas com Pontos 46

Figura 18 [10] A figura mostra o diagrama de Voronoi de uma amostragem de pontos S

Da mesma forma que o a amostragem aproxima a curva os veacutertices de Voronoi

aproximam o Eixo Medial

Na praacutetica na reconstruccedilatildeo da superfiacutecie uma aproximaccedilatildeo deste ldquoEixo

Medialrdquo eacute computada (devido agrave dificuldade de computaacute-lo exatamente e em

alguns casos ateacute impossibilidade)

Melhorias Propostas 47

5 Melhorias Propostas

No capiacutetulo 4 apresentamos dois meacutetodos que realizam operaccedilotildees

booleanas em modelos por pontos o meacutetodo de Adams e Dutreacute [2] e o meacutetodo

de Pauly[3] Para esta dissertaccedilatildeo usamos o meacutetodo de Adams e Dutreacute [2] e

propomos as seguintes melhorias

- Alteramos o momento em que eacute feita a classificaccedilatildeo da octree Fazemos

esta classificaccedilatildeo durante a sua criaccedilatildeo Os noacutes filhos de um noacute pai P qualquer

satildeo classificados logo apoacutes a criaccedilatildeo de todos estes filhos de P

independentemente do restante da octree ter sido criada Isso pode ser feito

porque a octree eacute construiacuteda na ordem raiz-esquerda-direita (preorder

traversal) e portanto apoacutes todos os filhos de um noacute pai serem criados a parte

necessaacuteria da octree para a classificaccedilatildeo destes filhos jaacute estaacute criada

- A classificaccedilatildeo da octree eacute otimizada classificando-se os cantos dos seus

noacutes como dentro ou fora do modelo Na classificaccedilatildeo de um noacute n1 a partir de seu

vizinho n2 se os cantos que satildeo comuns a n1 e n2 tiverem a mesma

classificaccedilatildeo esta seraacute dada ao noacute Assim diminuiacutemos o nuacutemero de pesquisas

pelo surfel mais proacuteximo que eacute a parte criacutetica da classificaccedilatildeo dos noacutes da octree

em termos de tempo de processamento

- Acrescentamos um valor miacutenimo (maior que zero) para o nuacutemero de

surfels contidos em um noacute que eacute uma das condiccedilotildees de parada na criaccedilatildeo da

octree Verificamos que desta forma diminui-se a chance de erro na classificaccedilatildeo

de partes criacuteticas como ldquoarestas vivasrdquo

Uma comparaccedilatildeo entre a nossa implementaccedilatildeo e a de Pauly tambeacutem seraacute

feita no capiacutetulo 6

51 Descriccedilatildeo do algoritmo

O algoritmo implementado para esta dissertaccedilatildeo baseado no meacutetodo de

Adams e Dutreacute [2] pode ser dividido nas seguintes partes Criaccedilatildeo e

classificaccedilatildeo de uma octree para cada modelo Teste DentroFora Criaccedilatildeo do

modelo resultado Natildeo foi implementado tratamento especial algum de

interseccedilatildeo para o nosso plugin As proacuteximas seccedilotildees apresentam estas partes

Melhorias Propostas 48

511 Criaccedilatildeo e classificaccedilatildeo de uma octree para cada modelo

As ideacuteias do algoritmo satildeo aqui ilustradas em 2D mas a extensatildeo delas

para 3D eacute feita facilmente

Para cada modelo a octree eacute criada e classificada da seguinte forma

Figura 19-Quadtree classificada Os noacutes mais escuros estatildeo fora do modelo os mais claros dentro e os em tom intermediaacuterio satildeo noacutes de contorno

Gera-se uma ldquocaixa envolventerdquo do modelo contendo todos os surfels e

cria-se o noacute raiz da octree que corresponde a esta ldquocaixa envolventerdquo Este noacute

raiz eacute subdividido em oito filhos e seus surfels satildeo distribuiacutedos entre eles Ao

inveacutes de testarmos os valores de xy e z para cada surfel a fim de determinar

para qual filho ele iraacute utilizamos listas auxiliares Primeiro os surfels satildeo

subdivididos em dois grupos pelos valores de x e armazenados em uma lista

auxiliar Em seguida cada uma das listas eacute subdividida pelo valor de y e as

quatro listas obtidas seratildeo subdivididas pelo valor de z Ao final teremos 8 listas

de surfels cada uma delas pertencente a um filho

Cada noacute seraacute entatildeo novamente subdividido enquanto contiver um nuacutemero

de surfels gt nmin (valor preacute-definido) ou enquanto a profundidade da aacutervore lt pmax

(valor preacute-definido) Na figura 19 pmax = 3 e nmin = 3

Melhorias Propostas 49

Figura 20-O noacute cheio eacute dividido em trecircs partes agrave esquerda a regiatildeo estaacute dentro do modelo agrave direita estaacute fora e entre as duas linhas que dividem o noacute estaacute a regiatildeo que conteacutem os surfels

Os noacutes cheios recebem um tratamento especial Eles satildeo subdivididos em

trecircs partes da seguinte forma uma que estaacute fora do modelo outra que estaacute

dentro e uma que conteacutem os surfels Esta subdivisatildeo eacute feita por meio da criaccedilatildeo

de dois planos paralelos que dividem o noacute Para determinar estes planos

calcula-se o vetor nm igual agrave meacutedia das normais dos surfels do noacute nm = sum ns

sum ns onde ns eacute a normal de cada surfel do noacute Em seguida encontra-se o

surfel com maior produto interno entre a sua normal e a normal meacutedia

d1=Max(nm ٠ ns) Este surfel juntamente com a normal meacutedia define um dos

planos Encontra-se tambeacutem o surfel com menor produto interno entre a sua

normal e a normal meacutedia d2=Min (nm ٠ ns) Este surfel juntamente com a normal

meacutedia define o outro plano (Figura 20) Se o noacute conteacutem surfels de superfiacutecies de

orientaccedilotildees diferentes ele natildeo seraacute subdividido ou seja os planos coincidiratildeo

com os planos que delimitam o proacuteprio noacute Este teste foi implementado da

seguinte forma escolhe-se um surfel qualquer do noacute Calcula-se o produto

interno entre a normal deste surfel e as outras normais dos outros surfels deste

noacute Se algum produto interno for menor que zero este noacute natildeo seraacute subdividido

Apoacutes a etapa de subdivisatildeo classificam-se os oito cantos deste noacute como

dentro ou fora do modelo por meio da classificaccedilatildeo de um ponto que

descreveremos na sub-seccedilatildeo 5111

Melhorias Propostas 50

a b

c d

Figura 21-O noacute a eacute classificado pelo noacute c o noacute d tambeacutem eacute classificado pelo noacute c a classificaccedilatildeo do noacute a eacute propagada para o noacute b

Jaacute os noacutes vazios da octree seratildeo classificados como ldquodentrordquo ou ldquoforardquo do

modelo da seguinte forma cada noacute folha vazio eacute classificado a partir de um de

seus irmatildeos vizinhos adjacentes Se ele possuir um vizinho adjacente cheio ele

seraacute classificado por este vizinho se natildeo possuir os vizinhos adjacentes seratildeo

classificados primeiro e ele teraacute esta mesma classificaccedilatildeo (Figura 21) Como tem

que existir sempre pelo menos um noacute cheio entre os filhos de um noacute pai entatildeo

sempre esta classificaccedilatildeo poderaacute ser feita Com a classificaccedilatildeo de todos os

filhos tem-se tambeacutem a classificaccedilatildeo dos cantos do noacute pai

Mf03c003fmx a b

Figura 22-Os cantos a e b do noacute cheio possuem a mesma classificaccedilatildeo fora do modelo Esta classificaccedilatildeo foi dada ao noacute vazio adjacente

Melhorias Propostas 51

Para classificar um noacute vazio por meio de um noacute cheio verificam-se os

cantos comuns destes dois noacutes se todos os cantos tiverem a mesma

classificaccedilatildeo esta seraacute dada ao noacute vazio (Figura 22) Se houver classificaccedilotildees

diferentes escolhe-se o surfel do noacute cheio mais proacuteximo ao noacute vazio faz-se o

produto interno entre a normal deste surfel e o vetor que liga o centro do noacute

cheio ao centro do noacute vazio (ou o vetor que liga o surfel ao centro do noacute vazio)

Se o produto interno for maior que zero o noacute eacute classificado como ldquoforardquo senatildeo eacute

classificado como ldquodentrordquo Para encontrar o surfel (pertencente a um noacute cheio)

mais proacuteximo ao noacute vazio existem dois casos

- O noacute cheio eacute folha percorre-se toda a lista de surfels e escolhe o surfel

mais proacuteximo da fronteira entre o noacute cheio e o vazio

- O noacute cheio natildeo eacute um noacute folha percorrem-se os filhos do noacute cheio ou seja

esta pesquisa eacute feita descendo na octree a partir do noacute cheio procurando o

surfel mais proacuteximo agrave fronteira do pai com o noacute vazio a ser classificado

Classificando o centro do noacute vazio todo o noacute deve ter a mesma

classificaccedilatildeo pois este noacute natildeo conteacutem surfels Para encontrar o surfel do noacute

vazio mais proacuteximo da fronteira entre o noacute cheio e o vazio basta testar o valor da

coordenada se a fronteira eacute o lado direito do noacute cheio escolhe-se o surfel com

maior coordenada lsquoxrsquo se eacute o lado esquerdo escolhe-se o surfel com menor lsquoxrsquo

se lado superior surfel com maior lsquoyrsquo etc A seguir apresentamos a classificaccedilatildeo

de um ponto qualquer pertencente a um noacute cheio

Figura 23- Quadtree classificada

Melhorias Propostas 52

5111 Classificaccedilatildeo de um ponto de um noacute cheio

Figura 24 [2] A normal n eacute a normal meacutedia e os surfels s1 e s2 juntamente com a normal

n definem as retas que dividem o noacute O ponto a estaacute fora do modelo e o ponto b estaacute

dentro do modelo

Para um ponto localizado dentro do noacute faz-se o seguinte teste se o noacute foi

dividido testa-se de acordo com a divisatildeo do noacute se o ponto estaacute na parte do noacute

que estaacute dentro do modelo ele eacute classificado como ldquodentrordquo se o ponto estaacute na

parte que estaacute fora do modelo ele eacute classificado como ldquoforardquo (Figura 24) se o

ponto estaacute na parte que conteacutem os surfels encontra-se o surfel s pertencente ao

noacute mais proacuteximo do ponto e o classifica de acordo com s seja ns a normal em s

cs a coordenada de s cp a coordenada do ponto Se (cp - cs )٠ ns gt 0 o ponto

seraacute classificado como ldquoforardquo Senatildeo seraacute classificado como ldquodentrordquo

Se o noacute natildeo foi dividido em planos esta classificaccedilatildeo a partir do surfel

mais proacuteximo seraacute sempre feita

512 Teste DentroFora

Melhorias Propostas 53

Figura 25-Duas circunferecircncias e suas quadtrees correspondentes

O Teste DentroFora classifica os surfels de um modelo como dentro ou

fora de outro modelo ou na sua interseccedilatildeo Este teste foi aqui implementado

exatamente como foi proposto em Adams e Dutreacute [2] exceto que natildeo foi

implementado o meacutetodo TINN - Triangle Inequality Nearest Neighbour [19]

Cada octree eacute percorrida verificando-se se os seus noacutes ou surfels estatildeo dentro

fora ou no contorno do outro modelo (Figura 25) Sejam A e B duas octrees e

queremos classificar a octree A As duas octrees (AB) satildeo percorridas partindo

da raiz

Para cada noacute de A existem quatro casos (Figura 26) Para testar estas

situaccedilotildees os boxes dos noacutes satildeo aumentados de rmax o raio do maior surfel do

modelo Isto eacute feito para compensar o fato de que o surfel natildeo eacute apenas um

ponto mas sim considerado como um disco

Os quatro casos satildeo

Se o noacute de A natildeo intersecta B entatildeo todos os surfels deste noacute satildeo

classificados como fora

Se o noacute de A intersecta apenas noacutes de B que estatildeo fora do modelo

todos os surfels deste noacute satildeo fora

Se o noacute de A intersecta apenas noacutes de B que estatildeo dentro do modelo

todos os surfels deste noacute satildeo dentro

Melhorias Propostas 54

Se o noacute de A intersecta noacutes de B que estatildeo dentro e tambeacutem noacutes de B

que estatildeo fora testa-se se este noacute de A eacute ou natildeo folha Se natildeo for folha

percorre-se os filhos deste noacute de A ateacute encontrar um noacute folha cheio que

intersecta B Para cada surfel sa deste noacute folha de A encontra-se o surfel de B

mais proacuteximo e classifica-se a coordenada de sa da forma apresentada na seccedilatildeo

5111 Seja sb o surfel usado na classificaccedilatildeo de sa Se os discos de sb e sa

se intersectam sa eacute classificado como ldquointerseccedilatildeordquo

(a) (b)

(c) (d)

Figura 26- a modelos natildeo se intersectam b modelo intersecta noacutes fora c modelo intersecta apenas noacutes dentro d modelo intersecta noacutes dentro e noacutes fora

513 Criaccedilatildeo do modelo resultado

Um novo modelo eacute criado com os seguintes surfels (de acordo com a

operaccedilatildeo booleana escolhida pelo usuaacuterio - veja Regra 1 da seccedilatildeo 41)

Uniatildeo - surfels de A que estatildeo fora de B + surfels de B que estatildeo fora de A

Melhorias Propostas 55

Interseccedilatildeo - surfels de A que estatildeo dentro de B + surfels de B que estatildeo

dentro de A

Diferenccedila A-B - surfels de A que estatildeo fora de B + surfels de B que estatildeo

dentro de A (com orientaccedilatildeo invertida)

Como natildeo foi implementado tratamento especial algum de interseccedilatildeo para

o nosso plugin os surfels que se intersectam satildeo mantidos no modelo resultado

final sem modificaccedilotildees

Descrito o algoritmo vejamos a seguir a sua implementaccedilatildeo

52 Implementaccedilatildeo

Este algoritmo foi implementado na forma de um plugin para o software

PointShop 3D [11] Este plugin foi desenvolvido na linguagem C e no sistema

operacional Windows

A escolha deste tipo de implementaccedilatildeo permitiu-nos usar o software

PointShop para os testes do algoritmo Estes testes foram feitos com os modelos

disponibilizados para o PointShop [11] Nesta seccedilatildeo apresentaremos o software

PointShop e as principais estruturas de dados usadas em nosso plugin

O Pointshop eacute um software aberto com seu coacutedigo disponiacutevel e preparado

para trabalhar com plugins Eacute um software de ediccedilatildeo de modelos 3D por pontos

Ele permite aleacutem de visualizar o modelo alterar as suas caracteriacutesticas como

cor brilho e fazer mapeamento de textura iluminaccedilatildeo filtragem (Figura 27)

Melhorias Propostas 56

Figura 27-Software PointShop 3D com dois modelos carregados na sua cena

Aleacutem disso pode-se criar uma cena com vaacuterios modelos e visualizaacute-los de

qualquer ponto de vista Implementa o virtual trackball para rotacionaacute-los e

transladaacute-los Usa uma iluminaccedilatildeo simples direcional A sua arquitetura eacute

extensiacutevel permite que o usuaacuterio adicione seus proacuteprios componentes ao

sistema Possui trecircs tipos de componentes

ldquoToolsrdquo fornece funcionalidades para ediccedilatildeo interativa de superfiacutecie Satildeo

disponibilizados na ldquotoolbarrdquo

Plugins fornece funcionalidades para processar em um soacute passo

modelos ou partes deles selecionadas Satildeo disponibilizados no menu ldquoPluginsrdquo

Renderes fornece funcionalidades de display para os modelos

Para esta dissertaccedilatildeo foi escolhida a construccedilatildeo do componente Plugin

por adequar-se agrave nossa proposta e ser a mais simples de ser construiacuteda O

PointShop [11] jaacute conteacutem uma tool que executa operaccedilotildees booleanas e

deformaccedilatildeo free-form sobre os modelos carregados na cena usando o meacutetodo

de Pauly [3] apresentado no capiacutetulo 4 O nosso plugin Operaccedilotildees Booleanas

implementa o algoritmo descrito na seccedilatildeo anterior baseado na proposta de

Melhorias Propostas 57

Adams e Dutreacute [2] Uma comparaccedilatildeo entre o nosso plugin e a tool de Pauly [3] eacute

feita no capiacutetulo 6

Figura 28-Menu do PointShop com o plugin e as opccedilotildees para operaccedilotildees booleanas

Para se executar o plugin o usuaacuterio precisa carregar dois modelos na

cena do PointShop acionar o plugin informando a operaccedilatildeo que seraacute executada

O plugin executaraacute o algoritmo acima proposto e carregaraacute o resultado na cena

do Pointshop retirando os modelos anteriores

521 Estruturas de Dados

Como vimos o software PointShop [11] trabalha com modelos por pontos

Um modelo deste software descrito na seccedilatildeo 42 conteacutem todas as informaccedilotildees

que o algoritmo proposto em Bart [2] necessita Abaixo relacionamos as

Melhorias Propostas 58

principais estruturas de dados do PointShop usadas no plugin e as principais

estruturas de dados do nosso plugin

As principais classes do PointShop usadas no plugin satildeo

Classe Scene

Classe Objects

Classe SurfelColections

Classe Surfel

Classe StatusBar

Classe Transformer

A hierarquia de dados eacute a seguinte a Scene conteacutem vaacuterios Objects os

quais conteacutem SurfelColections Cada SurfelColections conteacutem Surfels que

suportam uma ou mais propriedades tais como cor difusa cor especular

Classe Scene Classe que representa uma cena que conteacutem modelos

Classe Object Um modelo eacute representado pela classe Object que

conteacutem uma SurfelCollection e as matrizes de transformaccedilatildeo para rotaccedilatildeo

escala e translaccedilatildeo Cada Object eacute identificado pelo seu nome que eacute uacutenico na

Scene O meacutetodo getUniqueName retorna um nome uacutenico Cada Object tem sua

proacutepria matriz de transformaccedilatildeo que pode ser modificada com setRotation

rotate setPosition translate setScale e scale Objects podem ser copiados com

copy Objects consiste em um conjunto de surfels os quais podem ser

recuperados pela getSurfelCollection O Object pode ser ativado com

setActiveObject e recuperado com getActiveObject

Objects podem ser adicionados ou removidos com addObject e

removeObject Os Objects podem ser obtidos pela getFirstObject e

getNextObject

Classe SurfelCollection representa o conjunto de surfels de um modelo

Cada surfelcollection consiste em um conjunto de surfels (SurfelInterface) de

tamanho obtido por getNofSurfels Os surfels podem ser recuperados com

getFirstSurfel getCurrentSurfel e getNextSurfel

A SurfelCollection conteacutem um PropertyDescriptor e uma SurfelList

A SurfelList eacute uma lista duplamente encadeada de surfels Possui os

atributos firstSurfel lastSurfel currentSurfel que satildeo ponteiros para uma

SurfelInterface nSurfels que eacute o nuacutemero de Surfels

A SurfelInterface define a API para os surfels que satildeo os menores

elementos que compotildeem um Object Podem ser considerados como pontos com

uma normal que define a orientaccedilatildeo do ciacuterculo (ou elipse) que seraacute desenhado

Melhorias Propostas 59

tatildeo logo o surfel seja renderizado Tem como atributos dois ponteiros (next e

prev) para SurfelInterface

PropertyDescriptor consiste em ateacute 32 valores descrevendo quais as

propriedades a SurfelInterface suporta

Classe Surfel classe que representa o surfel

Classe StatusBar classe que imprime mensagens na tela Os plugins

podem mandar mensagens para o usuaacuterio pela StatusBar

Mensagens texto podem ser impressas com showMessage O progresso

de uma operaccedilatildeo pode ser indicado com setProgress ou resetProgress

Classe Transformer representa a transformaccedilatildeo entre sistemas de

coordenadas Esta classe fornece meacutetodos para transformar pontos e vetores

entre os diferentes sistemas de coordenadas do Pointshop

A seguir apresentamos as principais estruturas de dados do plugin

Operaccedilotildees Booleanas

As principais estruturas de dados do plugin satildeo boundingbox tree no

lista_surfel surfel

Boundingbox conteacutem dois pontos 3D que definem uma caixa que conteacutem

o modelo um ponto com menores coordenadas xy e z e outro ponto com

maiores xyz

Tree representa a octree do modelo Cada registro conteacutem um ponteiro

para um noacute e oito ponteiros para as 8 octrees filhas

No representa um noacute da octree Conteacutem os seguintes dados

- localizaccedilatildeo do noacute que eacute o canto inferior esquerdo do noacute

- lista_surfel (preenchida apenas para noacutes folha cheios)

- quantidade de surfels do noacute

- classificaccedilatildeo do noacute como dentro fora ou contorno

- classificaccedilatildeo do noacute em relaccedilatildeo a outro modelo

- indica se o noacute eacute folha ou natildeo

- vetor que eacute a meacutedia das normais dos surfels do noacute

- ponto que eacute a meacutedia das localizaccedilotildees dos surfels do noacute

- surfel que tem (entre todos os surfels do noacute) o maior produto interno

entre a sua normal e a normal meacutedia

- surfel que tem (entre todos os surfels do noacute) o menor produto interno

entre a sua normal e a normal meacutedia

- produto interno maacuteximo e miacutenimo entre as normais dos surfels do noacute e a

normal meacutedia deste noacute

Melhorias Propostas 60

- indica se o noacute conteacutem surfels com normais em sentido oposto (produto

interno entre elas eacute menor que zero)

- classificaccedilatildeo dos oito cantos do noacute

lista_surfels lista em que cada registro conteacutem um apontador para um

surfel e um apontador para o proacuteximo registro

surfel representa o surfel da octree Conteacutem a classificaccedilatildeo em relaccedilatildeo a

outro modelo e um ponteiro para o surfel do Poinshop

Resultados 61

6 Resultados

Neste capiacutetulo apresentamos os testes realizados com o plugin para o

PointShop implementado para esta dissertaccedilatildeo a comparaccedilatildeo deste plugin com

o plugin de Pauly [3] e a comparaccedilatildeo entre o meacutetodo de Adams e Dutreacute [2] e o

meacutetodo de Pauly [3]

61 Testes

Os testes foram feitos em um PC x86 Family 6 261600 KB de RAM sem

placa graacutefica sistema operacional Windows 2000 O plugin foi implementado na

linguagem C

Os modelos usados para os testes satildeo modelos disponibilizados no

PointShop [11] Vale lembrar que o meacutetodo implementado em nosso plugin eacute

restrito a modelos soacutelidos e portanto foram usados apenas estes modelos

soacutelidos para os testes

O modelo na Figura 29 que eacute um dos modelos disponibilizados no

PointShop [11] foi usado para mostrar o resultado das operaccedilotildees realizadas

pelo plugin implementado nesta dissertaccedilatildeo O modelo Igea eacute um modelo soacutelido

que conteacutem 134345 surfels

Resultados 62

Figura 29-Modelo do PointShop Igea

Para realizar as operaccedilotildees este modelo foi carregado na cena do

PointShop duas vezes e um deles colorido de vermelho As Figuras 30 31 32

mostram o resultado da operaccedilatildeo de uniatildeo interseccedilatildeo e diferenccedila

respectivamente Os nuacutemeros de surfels dos modelos resultantes satildeo mostrados

na Tabela 2

Resultados 63

Figura 30-Resultado da uniatildeo de duas Igeas

Figura 31-Resultado da interseccedilatildeo de duas Igeas

Resultados 64

Figura 32-Resultado da diferenccedila entre duas Igeas

Tabela 2-Nuacutemero de surfels dos modelos resultantes

Observamos que o nuacutemero de surfels dos modelos resultantes estaacute

coerente com as figuras dos seus modelos

Para avaliar o tempo de processamento das operaccedilotildees foram realizados

vaacuterios testes com o objetivo de obter uma meacutedia dos tempos de realizaccedilatildeo de

cada operaccedilatildeo Tambeacutem foram armazenados os tempos da criaccedilatildeo das duas

octrees e da classificaccedilatildeo de todos os surfels dos dois objetos (como dentro ou

fora do outro modelo) Estes testes foram feitos usando o modelo Igea A meacutedia

dos tempos de processamento foi calculada e os resultados satildeo mostrados na

Tabela 3 Verificamos que o maior tempo gasto eacute para criaccedilatildeo das octrees

Verificamos tambeacutem que este resultado apresentado eacute similar ao resultado

verificado empiricamente com o plugin de Pauly [3] Os tempos gastos para

realizar as operaccedilotildees satildeo similares e o maior tempo gasto no plugin de Pauly

tambeacutem eacute para inicializaccedilatildeo de suas estruturas de dados que incluem a kd-tree

Operaccedilatildeo Nuacutemero de surfels do modelo resultado

Uniatildeo 189715

Interseccedilatildeo 72225

Diferenccedila 134552

Resultados 65

Operaccedilatildeo Criaccedilatildeo das

Octrees (seg)

Classificaccedilatildeo

(seg)

Criaccedilatildeo do

resultado (seg)

Total (seg)

Uniatildeo 39375 1324 18925 7154

Interseccedilatildeo 38585 1585 09547 63982

Diferenccedila 399875 1504 1729 729475

Tabela 3- Meacutedia dos tempos de processamento para as operaccedilotildees com duas Igeas

Com o objetivo de expor melhor os resultados deste trabalho

apresentamos abaixo mais um teste das operaccedilotildees booleanas usando o nosso

plugin Os modelos usados para este segundo teste satildeo o Max Planck e o Male

ambos modelos soacutelidos disponibilizados no PointShop Estes modelos satildeo

mostrados nas figura 33 e 34

O primeiro Max Planck conteacutem 52809 surfels

Figura 33-Modelo do PointShop MaxPlanck

O segundo modelo abaixo Male conteacutem 148138 surfels

Resultados 66

Figura 34-Modelo do PointShop Male

As Figuras 353637 mostram o resultado da operaccedilatildeo de uniatildeo interseccedilatildeo

e diferenccedila respectivamente usando os dois modelos acima Podemos observar

pela figura 35 que o resultado da operaccedilatildeo de diferenccedila neste caso gerou um

modelo resultado com trecircs partes desconexas Os nuacutemeros de surfels de cada

modelo resultado satildeo mostrados na Tabela 5

Figura 35- Resultado da Uniatildeo do modelo Male com MaxPlanck

Resultados 67

Figura 36-Resultado da interseccedilatildeo do modelo Male com o MaxPlanck

Figura 37-Resultado da diferenccedila do modelo Male do modelo MaxPlanck

As meacutedias de tempos de processamento foram calculadas da mesma

forma que o primeiro teste com o modelo Igea acima apresentado Os

resultados satildeo mostrados na Tabela 4 Podemos observar que este teste

Resultados 68

apresenta tempos um pouco menores que o teste com o modelo Igea Isto se

deve ao fato de que o modelo MaxPlanck ser significativamente menor que o

modelo Igea MaxPlanck possui 52809 surfels e Igea conteacutem 134345 surfels

Operaccedilatildeo Criaccedilatildeo das

Octrees (seg)

Classificaccedilatildeo

(seg)

Criaccedilatildeo do

resultado (seg)

Total

(seg)

Uniatildeo 3012 1254 102 5285

Interseccedilatildeo 2985 0901 0861 4747

Diferenccedila 2965 0911 0791 4667

Tabela 4-Tempo de processamento das operaccedilotildees com os modelos MaxPlanck e Male

Operaccedilatildeo Nuacutemero de surfels do resultado

Uniatildeo 126532

Interseccedilatildeo 88414

Diferenccedila 77635

Tabela 5-Nuacutemero de surfels dos modelos resultados das operaccedilotildees com os modelos MaxPlanck e Male

Em seguida apresentaremos uma comparaccedilatildeo entre o nosso plugin e o

plugin de Pauly[3] e tambeacutem uma comparaccedilatildeo entre o meacutetodo de Adams e Dutreacute

[2] e o meacutetodo de Pauly [3]

62 Comparaccedilatildeo entre os dois meacutetodos que realizam operaccedilotildees booleanas

A comparaccedilatildeo entre os meacutetodos de Pauly[3] e de Adams e Dutreacute foi feita

em termos de tempo de processamento e em termos conceituais Em termos de

tempo de processamento comparamos o plugin de Pauly[3] com o nosso plugin

Em termos de tempo de processamento verifica-se empiricamente que os

dois meacutetodos apresentam tempos bastante similares Entretanto o tempo de

processamento do algoritmo aqui implementado ainda pode ser melhorado com

Resultados 69

o uso do meacutetodo TINN [19] que foi proposto em Adams[2] - para otimizar a

pesquisa do surfel mais proacuteximo a um ponto que estaacute localizado na regiatildeo de um

noacute que conteacutem surfels - veja seccedilatildeo 42 O uso deste meacutetodo natildeo foi

implementado para este trabalho e a sua implementaccedilatildeo melhoraria o tempo de

resposta do algoritmo Aleacutem disso o trabalho de Sara F Frisken [12] citado no

capiacutetulo 2 apresenta uma otimizaccedilatildeo no uso de octrees que pode ser

incorporada no algoritmo implementado neste trabalho

Em termos conceituais vamos fazer a comparaccedilatildeo do uso do que

chamamos aqui de Regra 2 do tratamento de interseccedilatildeo e do tratamento de

ldquoarestas vivasrdquo

Como vimos na seccedilatildeo 41 tanto o algoritmo implementado nesta

dissertaccedilatildeo baseado no trabalho de Adams e Dutreacute como o meacutetodo de Pauly

[3] parte do que chamamos aqui de Regra 2 para realizar operaccedilotildees booleanas

com pontos Mas cada um destes meacutetodos daacute um tratamento diferente para o

uso desta regra

O meacutetodo de Pauly usa a Regra 2 para classificaccedilatildeo de cada ponto ou de

cada surfel Para classificar um surfel de B sb como dentro ou fora de A eacute

encontrado o surfel de A sa mais proacuteximo a sb e sb eacute classificado a partir de sa

Para encontrar sa Pauly utiliza uma kd-tree Como esta pesquisa para encontrar

sa eacute cara (mesmo usando uma kd-tree) Pauly utiliza uma esfera que conteacutem

pontos com a mesma classificaccedilatildeo (seccedilatildeo 432) e diminui em 90 este nuacutemero

de pesquisas Pauly utiliza tambeacutem a representaccedilatildeo impliacutecita MLS (Moving Least

Squares) para casos em que a Regra 2 poderia falhar e para tratamento de

interseccedilotildees Entretanto o nuacutemero destes casos em que a Regra 2 poderia falhar

eacute muito pequeno E a representaccedilatildeo MLS natildeo eacute uma estrutura simples de ser

implementada Portanto natildeo encontramos vantagens em usar MLS para estes

casos O meacutetodo de Adams e Dutreacute natildeo trata estes casos e na praacutetica

apresenta resultados bastante satisfatoacuterios como foi mostrado Portanto

consideramos que valeria a pena fazer algum tratamento especial para estes

casos se fosse um procedimento simples Para a execuccedilatildeo do algoritmo de

Pauly o uso de MLS natildeo interfere significativamente porque a construccedilatildeo desta

representaccedilatildeo natildeo eacute feita somente para realizar operaccedilotildees booleanas Os testes

empiacutericos que fizemos com o algoritmo de Pauly natildeo incluem a construccedilatildeo desta

representaccedilatildeo

Aparentemente os dois algoritmos satildeo bastante parecidos um usa octrees

e o outro usa kd-tree As duas estruturas de dados satildeo simples e otimizam a

classificaccedilatildeo dos surfels de um modelo como dentro ou fora do outro modelo

Resultados 70

Mas existe uma diferenccedila conceitual entre dois que merece ser destacada O

algoritmo aqui implementado usa a Regra 2 para classificaccedilatildeo dos noacutes de uma

octree e armazena esta octree classificada (ver capiacutetulo 5) Assim na maioria dos

casos natildeo seraacute necessaacuterio encontrar o surfel mais proacuteximo para classificar um

ponto (ou um surfel) como fora ou dentro de um modelo Caso o ponto esteja em

uma aacuterea da octree classificada ele teraacute a classificaccedilatildeo dada agravequela aacuterea A

pesquisa ao surfel mais proacuteximo seraacute feita apenas nos casos em que o ponto a

ser classificado estaacute localizado entre os planos que subdividem um noacute cheio

O uso desta octree classificada levanta uma questatildeo que natildeo foi citada no

trabalho de Adams e Dutreacute que eacute a proximidade desta estrutura (armazenada)

de octree classificada com uma representaccedilatildeo volumeacutetrica do objeto Sendo

assim esta estrutura pode ser aproveitada para outras funccedilotildees aleacutem da

classificaccedilatildeo dos surfels Por exemplo podemos ter uma aproximaccedilatildeo do

volume de uma cena somando os volumes aproximados dos modelos que a

compotildeem Como o enfoque deste trabalho eacute operaccedilatildeo booleana natildeo vamos nos

aprofundar nesta questatildeo

Outra importante diferenccedila entre os dois trabalhos que jaacute foi explicada na

seccedilatildeo 432 eacute que o meacutetodo de Pauly aplica-se a modelos soacutelidos ou natildeo

soacutelidos enquanto que o meacutetodo de Adams e Dutreacute aplica-se somente a modelos

soacutelidos

Quanto ao tratamento de interseccedilatildeo em termos de visualizaccedilatildeo todos os

dois resolvem bem o problema O tratamento de interseccedilatildeo nos dois trabalhos

tambeacutem resolve o problema da validade da Regra 2 (ver seccedilatildeo 44) Entretanto

o tratamento de Adams e Dutreacute natildeo depende da renderizaccedilatildeo sendo portanto

mais portaacutevel Aleacutem disso uma desvantagem do meacutetodo de Pauly eacute o uso da

representaccedilatildeo impliacutecita MLS (ldquoMoving Least Squaresrdquo) do objeto para obter os

pontos exatamente na curva de interseccedilatildeo Esta representaccedilatildeo torna o

tratamento de interseccedilatildeo mais complexo e a vantagem apresentada natildeo eacute tatildeo

significativa para este tratamento de interseccedilatildeo

Conclusatildeo 71

7 Conclusatildeo

Concluiacutemos entatildeo que as escolhas de Adams e Dutreacute por usar uma

octree classificada e pelo tratamento dado agrave interseccedilatildeo satildeo mais abrangentes

que a escolha de Pauly E consideramos que quanto mais abrangente for uma

escolha conceitual mais resultados poderemos tirar dela No caso de Adams e

Dutreacute eles estendem o problema de classificar um ponto para classificar todo o

modelo Como foi citado ele quase fornece uma representaccedilatildeo volumeacutetrica do

modelo Esta aproximada representaccedilatildeo volumeacutetrica pode nos fornecer outras

informaccedilotildees como por exemplo o volume aproximado do modelo

Aleacutem disso o uso da representaccedilatildeo impliacutecita MLS no meacutetodo de Pauly cria

uma complexidade a mais para o meacutetodo sem apresentar vantagens para a

realizaccedilatildeo de operaccedilotildees booleanas que eacute o nosso enfoque

Logo podemos dizer que o meacutetodo de Adams e Dutreacute apresenta as

seguintes vantagens em relaccedilatildeo ao de Pauly

- a estrutura de octree classificada aleacutem de ser usada para classificaccedilatildeo

fornece informaccedilotildees adicionais como volume aproximado do objeto

- o tempo de processamento no meacutetodo de Adams e Dutreacute tende a ser

melhor que no meacutetodo de Pauly se implementadas as melhorias acima citadas e

se colocaacutessemos em consideraccedilatildeo o uso da representaccedilatildeo impliacutecita MLS

(Moving Least Squares)

- o tratamento de interseccedilatildeo de Adams e Dutreacute apresenta a vantagem da

portabilidade ou seja iraacute funcionar independente do algoritmo de renderizaccedilatildeo

utilizado

E as vantagens do meacutetodo de Pauly em relaccedilatildeo ao de Adams e Dutreacute

- a colocaccedilatildeo de surfels exatamente na curva de interseccedilatildeo

- a possibilidade de trabalhar com modelos soacutelidos ou natildeo soacutelidos

E finalizando concluiacutemos que o estudo relatado nesta dissertaccedilatildeo foi

importante por

- fornecer um breve estudo sobre modelagem por pontos uma nova e

promissora aacuterea dentro da computaccedilatildeo graacutefica

Conclusatildeo 72

- por apresentar uma avaliaccedilatildeo dos dois trabalhos existentes sobre

operaccedilotildees booleanas com pontos encontrando as vantagens de cada um

e levantando questotildees que natildeo tinham sido citadas nos trabalhos originais

- por propor e implementar melhorias ao trabalho de Adams e Dutreacute

71 Trabalhos Futuros

Nossa implementaccedilatildeo pode ser ainda evoluiacuteda com as propostas

apresentadas na seccedilatildeo 62 Como observamos o tempo de processamento do

algoritmo aqui implementado ainda pode ser melhorado com o uso do meacutetodo

TINN [19] - que foi proposto em Adams[2] - para otimizar a pesquisa do surfel

mais proacuteximo a um ponto que estaacute localizado na regiatildeo de um noacute que conteacutem

surfels Aleacutem disso o trabalho Simple and Efficient Trasversal Methods for

Quadtrees and Octrees de Sara F Frisken [12] citado no capiacutetulo 2 apresenta

uma otimizaccedilatildeo no uso de octrees Outra proposta para melhorar o tempo de

processamento do algoritmo aqui implementado eacute usar a forma de trabalhar com

octrees apresentada neste trabalho

O trabalho de Adams e Dutreacute [2] eacute aplicado apenas a objetos soacutelidos O

nosso plugin portanto aplica-se somente a este tipo de objeto Jaacute o trabalho de

Pauly[3] eacute aplicado tambeacutem a modelos natildeo soacutelidos Apresentamos como

proposta a um trabalho futuro a extensatildeo do algoritmo aqui implementado para

modelos natildeo soacutelidos O surfel pode conter uma informaccedilatildeo adicional que indica

se ele estaacute delimitando um volume ou natildeo Assim pode-se ter um modelo com

ldquopartes soacutelidasrdquo e ldquopartes natildeo soacutelidasrdquo Por exemplo a uniatildeo de um plano com

uma esfera poderia resultar numa esfera com ldquoabasrdquo (seriam as partes do plano

que estariam fora da esfera) O modelo resultado teria uma parte correspondente

a um espaccedilo 3D (esfera) e outra parte que seria uma superfiacutecie 2D posicionada

no espaccedilo 3D sem delimitar algum volume (abas)

Muitos trabalhos podem ser desenvolvidos aplicando-se o modelo por

pontos em animaccedilatildeo jogos visualizaccedilatildeo de terrenos criaccedilatildeo de protoacutetipos etc

considerando-se a eficiecircncia e simplicidade do modelo E mais especificamente

as operaccedilotildees booleanas com pontos podem ser aplicadas para criaccedilatildeo de

cenaacuterios testes de colisotildees e nestes casos a representaccedilatildeo usando octrees

pode ser mais explorada considerando-se o seu potencial de representaccedilatildeo

volumeacutetrica de um objeto

Referecircncias Bibliograacuteficas 73

8 Referecircncias Bibliograacuteficas

[1] MAumlNTYLAuml M An Introduction to Solid Modeling Computer Science Press 1988

[2] ADAMS B DUTREacute P Interactive Boolean Operations on Surfel-

Bounded Solids Proceedings of SIGGRAPH 2003 San Diego USA 2003

[3] PAULY M KEISER R KOBBELT L GROSS M Shape Modeling

with Point-Sampled Geometry SIGGRAPH 2003 Computer Graphics

Proceedings Annual Conference Series ACM Press ACM SIGGRAPH 2003

[4] LEVOY M WHITTED T The Use of Points as Display Primitives

Technical Report TR 85-022 The University of North Carolina at Chapel Hill

Department of Computer Science 1985

[5] PFISTER H ZWICKER M VAN BAAR J GROSS M 2000 Surfels

Surface Elements as Rendering Primitives SIGGRAPH 2000 pp 335ndash342 New

Orleans LA July 23-28 2000

[6] ZWICKER M PFISTER H VAN BAAR J GROSS M Surface

Splatting SIGGRAPH 2001

[7] PAULY M KOBBELT L GROSS M Multiresolution Modeling of

Point-Sampled Geometry CS Techinical Report 378 September 16 2002

[8] CURLESS B New Methods for Surface Reconstruction from Range Images PhD thesis Stanford University 1997

[9] RUSINKIEWICZ S Real-time Acquisition and Rendering of Large 3D Models PhD thesis Stanford University 2001

Referecircncias Bibliograacuteficas 74

[10] AMENTA N BERN M KAMVYSSELIS M A new Voronoi-Based

Surface Reconstruction Algorithm SIGGRAPH 98 Conference proceedings pp

415-421 New York 1998

[11] ZWICKER M PAULY M KNOLL O GROSS M Pointshop 3D an

Interactive System for Point-Based Surface Editing Proceedings of SIGGRAPH 2002 San Antonio TX July 2002

[12] FRISKEN S PERRY R Simple and Efficient Traversal Methods for

Quadtrees and Octrees Journal of Graphics Tools Vol 7 Issue 3 May 2003

[13] CORREcircA W T OLIVEIRA M M Silva C T Wang J

Modeling and Rendering of Real Environments

Revista de Informaacutetica Teoacuterica e Aplicada (Brazilian Journal of Theoretic and Applied Computing) 9(2)127-156 2002

[14] DAVIS J MARSCHNER S GARR M LEVOY M Filling Holes in

Complex Surfaces Using Volumetric Diffusion First International Symposium on 3D Data Processing Visualization Transmission June 2002

[15] RAumlSAumlNEN J Surface Splatting Theory Extensions and Implementation Masterrsquos Thesis Dept of Computer Science Helsinki

University of Technology May 28 2002

[16] PAULY M Point Primitives for Interactive Modeling and Processing of 3D Geometry PhD thesis Federal Institute of Technology (ETH)

of Zurich 2003

[17] HOPPE H DEROSE T DUCHAMP T MCDONALD J

STUELZLE W Surface Reconstruction from Unorganized Points Computer Graphics 26(2)71ndash78 July 1992

[18] ALEXA M BEHR J COHEN-OR D FLEISHMAN S LEVIN D

SILVA C T Point Set Surfaces IEEE Visualization 2001 pp 21ndash28 October

2001

Referecircncias Bibliograacuteficas 75

[19] GREENSPAN M GODIN G TALBOT J Acceleration of Binning

Nearest Neighbor Methods Proceedings of Vision Interface 2000 pp 337-

344

[20] MENCL R Reconstruction of Surfaces from Unorganized Three-Dimensional Point Clouds Dissertation Dortmund Univ 2001

[21] KRIVANEK J Representing and Rendering Surfaces With Points

httpciteseernjneccomkrivanek03representinghtml Acesso em 30 jul

2003

[22] KRISTJANSSON ET AL Approximate Boolean Operations on Free-

form Solids Proceedings of SIGGRAPH 01 2001

Operaccedilotildees Booleanas com Pontos 41

operaccedilotildees booleanas satildeo realizadas com os modelos natildeo soacutelidos da mesma

forma que com os modelos soacutelidos

Para determinar esta classificaccedilatildeo (dentro ou fora do modelo) Pauly utiliza

a Regra 2 Para pesquisa do surfel mais proacuteximo o meacutetodo usa a estrutura Kd-

tree [16] e tambeacutem o algoritmo ANN [16] No entanto o meacutetodo apresenta uma

restriccedilatildeo da Regra 2 ela soacute deve ser usada para classificaccedilotildees de pontos x se

a distacircncia x-p for maior que o espaccedilamento da amostragem local ηp em p

Este espaccedilamento da amostragem local ηp em p eacute um caacutelculo aproximado da

distacircncia meacutedia entre os surfels vizinhos a p Se x estaacute muito proacuteximo agrave

superfiacutecie a classificaccedilatildeo pode falhar Neste caso ele calcula o ponto exato de

S mais proacuteximo a x usando a projeccedilatildeo MLS (ldquoMoving Least Squaresrdquo)

Por questotildees de melhoria de desempenho utiliza-se o fato de que sendo

Ωp (x) a classificaccedilatildeo do ponto x em relaccedilatildeo agrave amostragem P tem-se que Ωp (x)

= Ωp (xrsquo) para todos os pontos de xrsquo que estatildeo dentro da esfera de centro x e

raio igual a x-p - ηp (onde p eacute o surfel mais proacuteximo e ηp eacute o espaccedilamento

local da amostragem em p acima citado) Ou seja sendo x um ponto qualquer p

o surfel mais proacuteximo a x ηp eacute o espaccedilamento local da amostragem em p se

desenharmos uma esfera com centro x e raio igual a x-p - ηp temos que

todos os pontos xrsquo que estatildeo dentro da esfera teratildeo a mesma classificaccedilatildeo de x

Desta forma o nuacutemero de vezes que a classificaccedilatildeo eacute feita (pesquisando-se o

surfel mais proacuteximo ao ponto e usando a Regra 2) diminui em ateacute 90 Assim

em geral a classificaccedilatildeo de um surfel eacute obtida a partir do seu surfel vizinho

Dados

S1 a superfiacutecie MLS de contorno que define o modelo A

S2 a superfiacutecie MLS de contorno que define o modelo B

P1 o conjunto de surfels que representa a superfiacutecie S1

P2 o conjunto de surfels que representa a superfiacutecie S2

Ωp1 (x) a classificaccedilatildeo do ponto p em relaccedilatildeo a uma amostragem P1

Q1 o subconjunto de P1 que vai compor o resultado

Ωp2 (x) a classificaccedilatildeo do ponto p em relaccedilatildeo a uma amostragem P2

Q2 o subconjunto de P2 que vai compor o resultado

Os conjuntos Q1 e Q2 satildeo obtidos por meio da Tabela 1 mostrada abaixo

Operaccedilotildees Booleanas com Pontos 42

Tabela 1 Classificaccedilatildeo para operaccedilotildees booleanas

Para o tratamento de interseccedilatildeo neste meacutetodo satildeo computados pontos

que caem exatamente na curva de interseccedilatildeo e estes satildeo acrescentados ao

modelo resultado Estes pontos satildeo determinados de forma que a densidade da

amostragem vai crescendo agrave medida que os surfels se aproximam da curva de

interseccedilatildeo e convergem para este ponto de interseccedilatildeo como mostra a Figura

13

(a) (b) (c)

Figura 13 - Os novos surfels satildeo colocados exatamente na curva de interseccedilatildeo

e convergem para o ponto de interseccedilatildeo

A Figura 14 mostra o processo de encontrar os surfels que caem nesta

curva de interseccedilatildeo Inicialmente satildeo encontrados todos os pontos de Q1 e Q2

que estatildeo proacuteximos agrave curva de interseccedilatildeo por meio da funccedilatildeo de distacircncia do

operador de projeccedilatildeo MLS Em seguida procura-se todos os pares mais

proacuteximos (q1 є Q1 q2 є Q2 ) e computa-se o ponto q na curva de interseccedilatildeo da

seguinte forma (veja a Figura 14)Seja r o ponto na linha de interseccedilatildeo dos dois

planos tangentes em q1 e q2 e que estaacute mais proacuteximo a estes dois pontos isto eacute

que minimiza a distacircncia ||r-q1|| + ||r-q2|| r eacute a primeira aproximaccedilatildeo de q e agora

pode ser projetado sobre S1 e S2 para obter dois novos pontos de partida q1rsquo e q2

rsquo

para a iteraccedilatildeo Este procedimento pode ser repetido iterativamente ateacute que os

pontos q1 e q2 convirjam ao ponto q na curva de interseccedilatildeo Normalmente este

processo requer menos de trecircs iteraccedilotildees

Operaccedilotildees Booleanas com Pontos 43

(a) (b)

(c)

Figura 14 (a) Suponhamos a reta que eacute a interseccedilatildeo do plano tangente a S1 em q1 e o

plano tangente a S2 em q2 O ponto r eacute o ponto desta reta que estaacute mais proacuteximo a q1 e

q2 (b) r eacute projetado sobre S1 e S2 obtendo-se q1acute e q2acute dois novos pontos de partida

para nova iteraccedilatildeo (c) A nova iteraccedilatildeo gera r que eacute uma aproximaccedilatildeo melhor de q

Pauly faz o tratamento de arestas vivas em tempo de renderizaccedilatildeo Ele

faz uma alteraccedilatildeo no renderizador Marca os surfels de interseccedilatildeo e ao

renderizaacute-los satildeo cortados para gerar uma aresta viva

44 Validade da Regra 2

Os dois meacutetodos analisados nesta dissertaccedilatildeo utilizam a seguinte regra

para a classificaccedilatildeo de um surfel

Regra 2 dado um volume V determinado por uma superfiacutecie de contorno

S uma amostragem P da superfiacutecie S um ponto x qualquer um ponto p є P que

eacute a amostra mais proacutexima a x um vetor ny normal a S em p e orientado para

fora de S temos que (x ndash p) np gt 0 x notinV

Em [16] eacute colocado que esta regra eacute tirada da seguinte propriedade da

geometria diferencial (aqui chamada Propriedade 1)

Propriedade 1 Dado um volume V determinado por uma superfiacutecie de

contorno S contiacutenua e duplamente diferenciaacutevel um ponto x qualquer um ponto

Operaccedilotildees Booleanas com Pontos 44

y є S que eacute o ponto de S mais proacuteximo a x um vetor ny normal a S em y e

orientado para fora de S temos que (x ndash y) ny gt 0 x notinV

A Figura 15 ilustra esta propriedade

Figura 15 Para verificar se o ponto x estaacute fora de um contorno C encontra-se o ponto y

de C Se o produto interno entre a normal em y e o vetor que liga y a x for maior que

zero entatildeo x estaacute fora de C senatildeo estaacute dentro de C

Pauly assume que tendo uma amostragem P da superfiacutecie S podemos

usar a Propriedade 1 substituindo y por p o surfel mais proacuteximo ao ponto x (x ndash

p) np gt 0 x notinV (Regra 2) Esta amostragem P em seu trabalho eacute

(aproximadamente) uma ldquoamostragem adequadardquo Tambeacutem seu tratamento de

interseccedilatildeo cria uma aproximaccedilatildeo dela (seccedilatildeo 43) Empiricamente a

ldquodiscretizaccedilatildeo da propriedaderdquo eacute vaacutelida a partir desta suposiccedilatildeo Mas isso natildeo foi

demonstrado teoricamente em seu trabalho

Pauly coloca em [16] que natildeo existe ainda uma teoria matemaacutetica rigorosa

de amostragem anaacuteloga a teoria de Fourier para superfiacutecies discretas

A melhor aproximaccedilatildeo teoacuterica para esta aacuterea eacute o uso do Eixo Medial que

foi colocado em [10] Vamos descrever este trabalho brevemente nesta seccedilatildeo

Este trabalho apresenta um algoritmo de reconstruccedilatildeo de superfiacutecie que parte de

uma amostragem adequada (abaixo definida) de pontos e obteacutem uma malha

que eacute topologicamente equivalente agrave superfiacutecie do objeto e agrave medida que a

densidade da amostragem cresce a saiacuteda converge para esta superfiacutecie

Para definir amostragem adequada o trabalho parte do conceito de Eixo

Medial

Operaccedilotildees Booleanas com Pontos 45

ldquoEixo Medialrdquo de uma superfiacutecie 2D posicionada no R3 eacute o conjunto

(fechado) de pontos pi para os quais buscando-se o ponto da superfiacutecie que

estaacute mais proacuteximo a pi mais de um ponto pertencentes a esta superfiacutecie satildeo

encontrados A Figura 16 abaixo ilustra o Eixo Medial em 2D

Figura 16 [10] As curvas de cor mais clara satildeo o Eixo Medial da curva em preto

Em duas dimensotildees os veacutertices de Voronoi de uma amostragem densa

aproximam o ldquoEixo Medialrdquo da amostragem (mas esta propriedade natildeo se

estende a 3D) A Figura 17 mostra o Eixo Medial em 3D

Figura 17 [10] Em 3D geralmente o Eixo Medial eacute uma superfiacutecie 2D (em cor mais

clara) Aqui o quadrado eacute o Eixo Medial da superfiacutecie transparente que o contorna

Podemos definir agora a amostragem adequada da seguinte forma

Supondo uma superfiacutecie suave que quer dizer uma 2-manifold duplamente

diferenciaacutevel posicionada no R3 uma ldquoamostragem adequadardquo desta superfiacutecie eacute

aquela na qual a densidade da amostragem eacute (pelo menos) inversamente

proporcional agrave distacircncia ao ldquoEixo Medialrdquo A Figura 18 mostra uma amostragem

adequada

Operaccedilotildees Booleanas com Pontos 46

Figura 18 [10] A figura mostra o diagrama de Voronoi de uma amostragem de pontos S

Da mesma forma que o a amostragem aproxima a curva os veacutertices de Voronoi

aproximam o Eixo Medial

Na praacutetica na reconstruccedilatildeo da superfiacutecie uma aproximaccedilatildeo deste ldquoEixo

Medialrdquo eacute computada (devido agrave dificuldade de computaacute-lo exatamente e em

alguns casos ateacute impossibilidade)

Melhorias Propostas 47

5 Melhorias Propostas

No capiacutetulo 4 apresentamos dois meacutetodos que realizam operaccedilotildees

booleanas em modelos por pontos o meacutetodo de Adams e Dutreacute [2] e o meacutetodo

de Pauly[3] Para esta dissertaccedilatildeo usamos o meacutetodo de Adams e Dutreacute [2] e

propomos as seguintes melhorias

- Alteramos o momento em que eacute feita a classificaccedilatildeo da octree Fazemos

esta classificaccedilatildeo durante a sua criaccedilatildeo Os noacutes filhos de um noacute pai P qualquer

satildeo classificados logo apoacutes a criaccedilatildeo de todos estes filhos de P

independentemente do restante da octree ter sido criada Isso pode ser feito

porque a octree eacute construiacuteda na ordem raiz-esquerda-direita (preorder

traversal) e portanto apoacutes todos os filhos de um noacute pai serem criados a parte

necessaacuteria da octree para a classificaccedilatildeo destes filhos jaacute estaacute criada

- A classificaccedilatildeo da octree eacute otimizada classificando-se os cantos dos seus

noacutes como dentro ou fora do modelo Na classificaccedilatildeo de um noacute n1 a partir de seu

vizinho n2 se os cantos que satildeo comuns a n1 e n2 tiverem a mesma

classificaccedilatildeo esta seraacute dada ao noacute Assim diminuiacutemos o nuacutemero de pesquisas

pelo surfel mais proacuteximo que eacute a parte criacutetica da classificaccedilatildeo dos noacutes da octree

em termos de tempo de processamento

- Acrescentamos um valor miacutenimo (maior que zero) para o nuacutemero de

surfels contidos em um noacute que eacute uma das condiccedilotildees de parada na criaccedilatildeo da

octree Verificamos que desta forma diminui-se a chance de erro na classificaccedilatildeo

de partes criacuteticas como ldquoarestas vivasrdquo

Uma comparaccedilatildeo entre a nossa implementaccedilatildeo e a de Pauly tambeacutem seraacute

feita no capiacutetulo 6

51 Descriccedilatildeo do algoritmo

O algoritmo implementado para esta dissertaccedilatildeo baseado no meacutetodo de

Adams e Dutreacute [2] pode ser dividido nas seguintes partes Criaccedilatildeo e

classificaccedilatildeo de uma octree para cada modelo Teste DentroFora Criaccedilatildeo do

modelo resultado Natildeo foi implementado tratamento especial algum de

interseccedilatildeo para o nosso plugin As proacuteximas seccedilotildees apresentam estas partes

Melhorias Propostas 48

511 Criaccedilatildeo e classificaccedilatildeo de uma octree para cada modelo

As ideacuteias do algoritmo satildeo aqui ilustradas em 2D mas a extensatildeo delas

para 3D eacute feita facilmente

Para cada modelo a octree eacute criada e classificada da seguinte forma

Figura 19-Quadtree classificada Os noacutes mais escuros estatildeo fora do modelo os mais claros dentro e os em tom intermediaacuterio satildeo noacutes de contorno

Gera-se uma ldquocaixa envolventerdquo do modelo contendo todos os surfels e

cria-se o noacute raiz da octree que corresponde a esta ldquocaixa envolventerdquo Este noacute

raiz eacute subdividido em oito filhos e seus surfels satildeo distribuiacutedos entre eles Ao

inveacutes de testarmos os valores de xy e z para cada surfel a fim de determinar

para qual filho ele iraacute utilizamos listas auxiliares Primeiro os surfels satildeo

subdivididos em dois grupos pelos valores de x e armazenados em uma lista

auxiliar Em seguida cada uma das listas eacute subdividida pelo valor de y e as

quatro listas obtidas seratildeo subdivididas pelo valor de z Ao final teremos 8 listas

de surfels cada uma delas pertencente a um filho

Cada noacute seraacute entatildeo novamente subdividido enquanto contiver um nuacutemero

de surfels gt nmin (valor preacute-definido) ou enquanto a profundidade da aacutervore lt pmax

(valor preacute-definido) Na figura 19 pmax = 3 e nmin = 3

Melhorias Propostas 49

Figura 20-O noacute cheio eacute dividido em trecircs partes agrave esquerda a regiatildeo estaacute dentro do modelo agrave direita estaacute fora e entre as duas linhas que dividem o noacute estaacute a regiatildeo que conteacutem os surfels

Os noacutes cheios recebem um tratamento especial Eles satildeo subdivididos em

trecircs partes da seguinte forma uma que estaacute fora do modelo outra que estaacute

dentro e uma que conteacutem os surfels Esta subdivisatildeo eacute feita por meio da criaccedilatildeo

de dois planos paralelos que dividem o noacute Para determinar estes planos

calcula-se o vetor nm igual agrave meacutedia das normais dos surfels do noacute nm = sum ns

sum ns onde ns eacute a normal de cada surfel do noacute Em seguida encontra-se o

surfel com maior produto interno entre a sua normal e a normal meacutedia

d1=Max(nm ٠ ns) Este surfel juntamente com a normal meacutedia define um dos

planos Encontra-se tambeacutem o surfel com menor produto interno entre a sua

normal e a normal meacutedia d2=Min (nm ٠ ns) Este surfel juntamente com a normal

meacutedia define o outro plano (Figura 20) Se o noacute conteacutem surfels de superfiacutecies de

orientaccedilotildees diferentes ele natildeo seraacute subdividido ou seja os planos coincidiratildeo

com os planos que delimitam o proacuteprio noacute Este teste foi implementado da

seguinte forma escolhe-se um surfel qualquer do noacute Calcula-se o produto

interno entre a normal deste surfel e as outras normais dos outros surfels deste

noacute Se algum produto interno for menor que zero este noacute natildeo seraacute subdividido

Apoacutes a etapa de subdivisatildeo classificam-se os oito cantos deste noacute como

dentro ou fora do modelo por meio da classificaccedilatildeo de um ponto que

descreveremos na sub-seccedilatildeo 5111

Melhorias Propostas 50

a b

c d

Figura 21-O noacute a eacute classificado pelo noacute c o noacute d tambeacutem eacute classificado pelo noacute c a classificaccedilatildeo do noacute a eacute propagada para o noacute b

Jaacute os noacutes vazios da octree seratildeo classificados como ldquodentrordquo ou ldquoforardquo do

modelo da seguinte forma cada noacute folha vazio eacute classificado a partir de um de

seus irmatildeos vizinhos adjacentes Se ele possuir um vizinho adjacente cheio ele

seraacute classificado por este vizinho se natildeo possuir os vizinhos adjacentes seratildeo

classificados primeiro e ele teraacute esta mesma classificaccedilatildeo (Figura 21) Como tem

que existir sempre pelo menos um noacute cheio entre os filhos de um noacute pai entatildeo

sempre esta classificaccedilatildeo poderaacute ser feita Com a classificaccedilatildeo de todos os

filhos tem-se tambeacutem a classificaccedilatildeo dos cantos do noacute pai

Mf03c003fmx a b

Figura 22-Os cantos a e b do noacute cheio possuem a mesma classificaccedilatildeo fora do modelo Esta classificaccedilatildeo foi dada ao noacute vazio adjacente

Melhorias Propostas 51

Para classificar um noacute vazio por meio de um noacute cheio verificam-se os

cantos comuns destes dois noacutes se todos os cantos tiverem a mesma

classificaccedilatildeo esta seraacute dada ao noacute vazio (Figura 22) Se houver classificaccedilotildees

diferentes escolhe-se o surfel do noacute cheio mais proacuteximo ao noacute vazio faz-se o

produto interno entre a normal deste surfel e o vetor que liga o centro do noacute

cheio ao centro do noacute vazio (ou o vetor que liga o surfel ao centro do noacute vazio)

Se o produto interno for maior que zero o noacute eacute classificado como ldquoforardquo senatildeo eacute

classificado como ldquodentrordquo Para encontrar o surfel (pertencente a um noacute cheio)

mais proacuteximo ao noacute vazio existem dois casos

- O noacute cheio eacute folha percorre-se toda a lista de surfels e escolhe o surfel

mais proacuteximo da fronteira entre o noacute cheio e o vazio

- O noacute cheio natildeo eacute um noacute folha percorrem-se os filhos do noacute cheio ou seja

esta pesquisa eacute feita descendo na octree a partir do noacute cheio procurando o

surfel mais proacuteximo agrave fronteira do pai com o noacute vazio a ser classificado

Classificando o centro do noacute vazio todo o noacute deve ter a mesma

classificaccedilatildeo pois este noacute natildeo conteacutem surfels Para encontrar o surfel do noacute

vazio mais proacuteximo da fronteira entre o noacute cheio e o vazio basta testar o valor da

coordenada se a fronteira eacute o lado direito do noacute cheio escolhe-se o surfel com

maior coordenada lsquoxrsquo se eacute o lado esquerdo escolhe-se o surfel com menor lsquoxrsquo

se lado superior surfel com maior lsquoyrsquo etc A seguir apresentamos a classificaccedilatildeo

de um ponto qualquer pertencente a um noacute cheio

Figura 23- Quadtree classificada

Melhorias Propostas 52

5111 Classificaccedilatildeo de um ponto de um noacute cheio

Figura 24 [2] A normal n eacute a normal meacutedia e os surfels s1 e s2 juntamente com a normal

n definem as retas que dividem o noacute O ponto a estaacute fora do modelo e o ponto b estaacute

dentro do modelo

Para um ponto localizado dentro do noacute faz-se o seguinte teste se o noacute foi

dividido testa-se de acordo com a divisatildeo do noacute se o ponto estaacute na parte do noacute

que estaacute dentro do modelo ele eacute classificado como ldquodentrordquo se o ponto estaacute na

parte que estaacute fora do modelo ele eacute classificado como ldquoforardquo (Figura 24) se o

ponto estaacute na parte que conteacutem os surfels encontra-se o surfel s pertencente ao

noacute mais proacuteximo do ponto e o classifica de acordo com s seja ns a normal em s

cs a coordenada de s cp a coordenada do ponto Se (cp - cs )٠ ns gt 0 o ponto

seraacute classificado como ldquoforardquo Senatildeo seraacute classificado como ldquodentrordquo

Se o noacute natildeo foi dividido em planos esta classificaccedilatildeo a partir do surfel

mais proacuteximo seraacute sempre feita

512 Teste DentroFora

Melhorias Propostas 53

Figura 25-Duas circunferecircncias e suas quadtrees correspondentes

O Teste DentroFora classifica os surfels de um modelo como dentro ou

fora de outro modelo ou na sua interseccedilatildeo Este teste foi aqui implementado

exatamente como foi proposto em Adams e Dutreacute [2] exceto que natildeo foi

implementado o meacutetodo TINN - Triangle Inequality Nearest Neighbour [19]

Cada octree eacute percorrida verificando-se se os seus noacutes ou surfels estatildeo dentro

fora ou no contorno do outro modelo (Figura 25) Sejam A e B duas octrees e

queremos classificar a octree A As duas octrees (AB) satildeo percorridas partindo

da raiz

Para cada noacute de A existem quatro casos (Figura 26) Para testar estas

situaccedilotildees os boxes dos noacutes satildeo aumentados de rmax o raio do maior surfel do

modelo Isto eacute feito para compensar o fato de que o surfel natildeo eacute apenas um

ponto mas sim considerado como um disco

Os quatro casos satildeo

Se o noacute de A natildeo intersecta B entatildeo todos os surfels deste noacute satildeo

classificados como fora

Se o noacute de A intersecta apenas noacutes de B que estatildeo fora do modelo

todos os surfels deste noacute satildeo fora

Se o noacute de A intersecta apenas noacutes de B que estatildeo dentro do modelo

todos os surfels deste noacute satildeo dentro

Melhorias Propostas 54

Se o noacute de A intersecta noacutes de B que estatildeo dentro e tambeacutem noacutes de B

que estatildeo fora testa-se se este noacute de A eacute ou natildeo folha Se natildeo for folha

percorre-se os filhos deste noacute de A ateacute encontrar um noacute folha cheio que

intersecta B Para cada surfel sa deste noacute folha de A encontra-se o surfel de B

mais proacuteximo e classifica-se a coordenada de sa da forma apresentada na seccedilatildeo

5111 Seja sb o surfel usado na classificaccedilatildeo de sa Se os discos de sb e sa

se intersectam sa eacute classificado como ldquointerseccedilatildeordquo

(a) (b)

(c) (d)

Figura 26- a modelos natildeo se intersectam b modelo intersecta noacutes fora c modelo intersecta apenas noacutes dentro d modelo intersecta noacutes dentro e noacutes fora

513 Criaccedilatildeo do modelo resultado

Um novo modelo eacute criado com os seguintes surfels (de acordo com a

operaccedilatildeo booleana escolhida pelo usuaacuterio - veja Regra 1 da seccedilatildeo 41)

Uniatildeo - surfels de A que estatildeo fora de B + surfels de B que estatildeo fora de A

Melhorias Propostas 55

Interseccedilatildeo - surfels de A que estatildeo dentro de B + surfels de B que estatildeo

dentro de A

Diferenccedila A-B - surfels de A que estatildeo fora de B + surfels de B que estatildeo

dentro de A (com orientaccedilatildeo invertida)

Como natildeo foi implementado tratamento especial algum de interseccedilatildeo para

o nosso plugin os surfels que se intersectam satildeo mantidos no modelo resultado

final sem modificaccedilotildees

Descrito o algoritmo vejamos a seguir a sua implementaccedilatildeo

52 Implementaccedilatildeo

Este algoritmo foi implementado na forma de um plugin para o software

PointShop 3D [11] Este plugin foi desenvolvido na linguagem C e no sistema

operacional Windows

A escolha deste tipo de implementaccedilatildeo permitiu-nos usar o software

PointShop para os testes do algoritmo Estes testes foram feitos com os modelos

disponibilizados para o PointShop [11] Nesta seccedilatildeo apresentaremos o software

PointShop e as principais estruturas de dados usadas em nosso plugin

O Pointshop eacute um software aberto com seu coacutedigo disponiacutevel e preparado

para trabalhar com plugins Eacute um software de ediccedilatildeo de modelos 3D por pontos

Ele permite aleacutem de visualizar o modelo alterar as suas caracteriacutesticas como

cor brilho e fazer mapeamento de textura iluminaccedilatildeo filtragem (Figura 27)

Melhorias Propostas 56

Figura 27-Software PointShop 3D com dois modelos carregados na sua cena

Aleacutem disso pode-se criar uma cena com vaacuterios modelos e visualizaacute-los de

qualquer ponto de vista Implementa o virtual trackball para rotacionaacute-los e

transladaacute-los Usa uma iluminaccedilatildeo simples direcional A sua arquitetura eacute

extensiacutevel permite que o usuaacuterio adicione seus proacuteprios componentes ao

sistema Possui trecircs tipos de componentes

ldquoToolsrdquo fornece funcionalidades para ediccedilatildeo interativa de superfiacutecie Satildeo

disponibilizados na ldquotoolbarrdquo

Plugins fornece funcionalidades para processar em um soacute passo

modelos ou partes deles selecionadas Satildeo disponibilizados no menu ldquoPluginsrdquo

Renderes fornece funcionalidades de display para os modelos

Para esta dissertaccedilatildeo foi escolhida a construccedilatildeo do componente Plugin

por adequar-se agrave nossa proposta e ser a mais simples de ser construiacuteda O

PointShop [11] jaacute conteacutem uma tool que executa operaccedilotildees booleanas e

deformaccedilatildeo free-form sobre os modelos carregados na cena usando o meacutetodo

de Pauly [3] apresentado no capiacutetulo 4 O nosso plugin Operaccedilotildees Booleanas

implementa o algoritmo descrito na seccedilatildeo anterior baseado na proposta de

Melhorias Propostas 57

Adams e Dutreacute [2] Uma comparaccedilatildeo entre o nosso plugin e a tool de Pauly [3] eacute

feita no capiacutetulo 6

Figura 28-Menu do PointShop com o plugin e as opccedilotildees para operaccedilotildees booleanas

Para se executar o plugin o usuaacuterio precisa carregar dois modelos na

cena do PointShop acionar o plugin informando a operaccedilatildeo que seraacute executada

O plugin executaraacute o algoritmo acima proposto e carregaraacute o resultado na cena

do Pointshop retirando os modelos anteriores

521 Estruturas de Dados

Como vimos o software PointShop [11] trabalha com modelos por pontos

Um modelo deste software descrito na seccedilatildeo 42 conteacutem todas as informaccedilotildees

que o algoritmo proposto em Bart [2] necessita Abaixo relacionamos as

Melhorias Propostas 58

principais estruturas de dados do PointShop usadas no plugin e as principais

estruturas de dados do nosso plugin

As principais classes do PointShop usadas no plugin satildeo

Classe Scene

Classe Objects

Classe SurfelColections

Classe Surfel

Classe StatusBar

Classe Transformer

A hierarquia de dados eacute a seguinte a Scene conteacutem vaacuterios Objects os

quais conteacutem SurfelColections Cada SurfelColections conteacutem Surfels que

suportam uma ou mais propriedades tais como cor difusa cor especular

Classe Scene Classe que representa uma cena que conteacutem modelos

Classe Object Um modelo eacute representado pela classe Object que

conteacutem uma SurfelCollection e as matrizes de transformaccedilatildeo para rotaccedilatildeo

escala e translaccedilatildeo Cada Object eacute identificado pelo seu nome que eacute uacutenico na

Scene O meacutetodo getUniqueName retorna um nome uacutenico Cada Object tem sua

proacutepria matriz de transformaccedilatildeo que pode ser modificada com setRotation

rotate setPosition translate setScale e scale Objects podem ser copiados com

copy Objects consiste em um conjunto de surfels os quais podem ser

recuperados pela getSurfelCollection O Object pode ser ativado com

setActiveObject e recuperado com getActiveObject

Objects podem ser adicionados ou removidos com addObject e

removeObject Os Objects podem ser obtidos pela getFirstObject e

getNextObject

Classe SurfelCollection representa o conjunto de surfels de um modelo

Cada surfelcollection consiste em um conjunto de surfels (SurfelInterface) de

tamanho obtido por getNofSurfels Os surfels podem ser recuperados com

getFirstSurfel getCurrentSurfel e getNextSurfel

A SurfelCollection conteacutem um PropertyDescriptor e uma SurfelList

A SurfelList eacute uma lista duplamente encadeada de surfels Possui os

atributos firstSurfel lastSurfel currentSurfel que satildeo ponteiros para uma

SurfelInterface nSurfels que eacute o nuacutemero de Surfels

A SurfelInterface define a API para os surfels que satildeo os menores

elementos que compotildeem um Object Podem ser considerados como pontos com

uma normal que define a orientaccedilatildeo do ciacuterculo (ou elipse) que seraacute desenhado

Melhorias Propostas 59

tatildeo logo o surfel seja renderizado Tem como atributos dois ponteiros (next e

prev) para SurfelInterface

PropertyDescriptor consiste em ateacute 32 valores descrevendo quais as

propriedades a SurfelInterface suporta

Classe Surfel classe que representa o surfel

Classe StatusBar classe que imprime mensagens na tela Os plugins

podem mandar mensagens para o usuaacuterio pela StatusBar

Mensagens texto podem ser impressas com showMessage O progresso

de uma operaccedilatildeo pode ser indicado com setProgress ou resetProgress

Classe Transformer representa a transformaccedilatildeo entre sistemas de

coordenadas Esta classe fornece meacutetodos para transformar pontos e vetores

entre os diferentes sistemas de coordenadas do Pointshop

A seguir apresentamos as principais estruturas de dados do plugin

Operaccedilotildees Booleanas

As principais estruturas de dados do plugin satildeo boundingbox tree no

lista_surfel surfel

Boundingbox conteacutem dois pontos 3D que definem uma caixa que conteacutem

o modelo um ponto com menores coordenadas xy e z e outro ponto com

maiores xyz

Tree representa a octree do modelo Cada registro conteacutem um ponteiro

para um noacute e oito ponteiros para as 8 octrees filhas

No representa um noacute da octree Conteacutem os seguintes dados

- localizaccedilatildeo do noacute que eacute o canto inferior esquerdo do noacute

- lista_surfel (preenchida apenas para noacutes folha cheios)

- quantidade de surfels do noacute

- classificaccedilatildeo do noacute como dentro fora ou contorno

- classificaccedilatildeo do noacute em relaccedilatildeo a outro modelo

- indica se o noacute eacute folha ou natildeo

- vetor que eacute a meacutedia das normais dos surfels do noacute

- ponto que eacute a meacutedia das localizaccedilotildees dos surfels do noacute

- surfel que tem (entre todos os surfels do noacute) o maior produto interno

entre a sua normal e a normal meacutedia

- surfel que tem (entre todos os surfels do noacute) o menor produto interno

entre a sua normal e a normal meacutedia

- produto interno maacuteximo e miacutenimo entre as normais dos surfels do noacute e a

normal meacutedia deste noacute

Melhorias Propostas 60

- indica se o noacute conteacutem surfels com normais em sentido oposto (produto

interno entre elas eacute menor que zero)

- classificaccedilatildeo dos oito cantos do noacute

lista_surfels lista em que cada registro conteacutem um apontador para um

surfel e um apontador para o proacuteximo registro

surfel representa o surfel da octree Conteacutem a classificaccedilatildeo em relaccedilatildeo a

outro modelo e um ponteiro para o surfel do Poinshop

Resultados 61

6 Resultados

Neste capiacutetulo apresentamos os testes realizados com o plugin para o

PointShop implementado para esta dissertaccedilatildeo a comparaccedilatildeo deste plugin com

o plugin de Pauly [3] e a comparaccedilatildeo entre o meacutetodo de Adams e Dutreacute [2] e o

meacutetodo de Pauly [3]

61 Testes

Os testes foram feitos em um PC x86 Family 6 261600 KB de RAM sem

placa graacutefica sistema operacional Windows 2000 O plugin foi implementado na

linguagem C

Os modelos usados para os testes satildeo modelos disponibilizados no

PointShop [11] Vale lembrar que o meacutetodo implementado em nosso plugin eacute

restrito a modelos soacutelidos e portanto foram usados apenas estes modelos

soacutelidos para os testes

O modelo na Figura 29 que eacute um dos modelos disponibilizados no

PointShop [11] foi usado para mostrar o resultado das operaccedilotildees realizadas

pelo plugin implementado nesta dissertaccedilatildeo O modelo Igea eacute um modelo soacutelido

que conteacutem 134345 surfels

Resultados 62

Figura 29-Modelo do PointShop Igea

Para realizar as operaccedilotildees este modelo foi carregado na cena do

PointShop duas vezes e um deles colorido de vermelho As Figuras 30 31 32

mostram o resultado da operaccedilatildeo de uniatildeo interseccedilatildeo e diferenccedila

respectivamente Os nuacutemeros de surfels dos modelos resultantes satildeo mostrados

na Tabela 2

Resultados 63

Figura 30-Resultado da uniatildeo de duas Igeas

Figura 31-Resultado da interseccedilatildeo de duas Igeas

Resultados 64

Figura 32-Resultado da diferenccedila entre duas Igeas

Tabela 2-Nuacutemero de surfels dos modelos resultantes

Observamos que o nuacutemero de surfels dos modelos resultantes estaacute

coerente com as figuras dos seus modelos

Para avaliar o tempo de processamento das operaccedilotildees foram realizados

vaacuterios testes com o objetivo de obter uma meacutedia dos tempos de realizaccedilatildeo de

cada operaccedilatildeo Tambeacutem foram armazenados os tempos da criaccedilatildeo das duas

octrees e da classificaccedilatildeo de todos os surfels dos dois objetos (como dentro ou

fora do outro modelo) Estes testes foram feitos usando o modelo Igea A meacutedia

dos tempos de processamento foi calculada e os resultados satildeo mostrados na

Tabela 3 Verificamos que o maior tempo gasto eacute para criaccedilatildeo das octrees

Verificamos tambeacutem que este resultado apresentado eacute similar ao resultado

verificado empiricamente com o plugin de Pauly [3] Os tempos gastos para

realizar as operaccedilotildees satildeo similares e o maior tempo gasto no plugin de Pauly

tambeacutem eacute para inicializaccedilatildeo de suas estruturas de dados que incluem a kd-tree

Operaccedilatildeo Nuacutemero de surfels do modelo resultado

Uniatildeo 189715

Interseccedilatildeo 72225

Diferenccedila 134552

Resultados 65

Operaccedilatildeo Criaccedilatildeo das

Octrees (seg)

Classificaccedilatildeo

(seg)

Criaccedilatildeo do

resultado (seg)

Total (seg)

Uniatildeo 39375 1324 18925 7154

Interseccedilatildeo 38585 1585 09547 63982

Diferenccedila 399875 1504 1729 729475

Tabela 3- Meacutedia dos tempos de processamento para as operaccedilotildees com duas Igeas

Com o objetivo de expor melhor os resultados deste trabalho

apresentamos abaixo mais um teste das operaccedilotildees booleanas usando o nosso

plugin Os modelos usados para este segundo teste satildeo o Max Planck e o Male

ambos modelos soacutelidos disponibilizados no PointShop Estes modelos satildeo

mostrados nas figura 33 e 34

O primeiro Max Planck conteacutem 52809 surfels

Figura 33-Modelo do PointShop MaxPlanck

O segundo modelo abaixo Male conteacutem 148138 surfels

Resultados 66

Figura 34-Modelo do PointShop Male

As Figuras 353637 mostram o resultado da operaccedilatildeo de uniatildeo interseccedilatildeo

e diferenccedila respectivamente usando os dois modelos acima Podemos observar

pela figura 35 que o resultado da operaccedilatildeo de diferenccedila neste caso gerou um

modelo resultado com trecircs partes desconexas Os nuacutemeros de surfels de cada

modelo resultado satildeo mostrados na Tabela 5

Figura 35- Resultado da Uniatildeo do modelo Male com MaxPlanck

Resultados 67

Figura 36-Resultado da interseccedilatildeo do modelo Male com o MaxPlanck

Figura 37-Resultado da diferenccedila do modelo Male do modelo MaxPlanck

As meacutedias de tempos de processamento foram calculadas da mesma

forma que o primeiro teste com o modelo Igea acima apresentado Os

resultados satildeo mostrados na Tabela 4 Podemos observar que este teste

Resultados 68

apresenta tempos um pouco menores que o teste com o modelo Igea Isto se

deve ao fato de que o modelo MaxPlanck ser significativamente menor que o

modelo Igea MaxPlanck possui 52809 surfels e Igea conteacutem 134345 surfels

Operaccedilatildeo Criaccedilatildeo das

Octrees (seg)

Classificaccedilatildeo

(seg)

Criaccedilatildeo do

resultado (seg)

Total

(seg)

Uniatildeo 3012 1254 102 5285

Interseccedilatildeo 2985 0901 0861 4747

Diferenccedila 2965 0911 0791 4667

Tabela 4-Tempo de processamento das operaccedilotildees com os modelos MaxPlanck e Male

Operaccedilatildeo Nuacutemero de surfels do resultado

Uniatildeo 126532

Interseccedilatildeo 88414

Diferenccedila 77635

Tabela 5-Nuacutemero de surfels dos modelos resultados das operaccedilotildees com os modelos MaxPlanck e Male

Em seguida apresentaremos uma comparaccedilatildeo entre o nosso plugin e o

plugin de Pauly[3] e tambeacutem uma comparaccedilatildeo entre o meacutetodo de Adams e Dutreacute

[2] e o meacutetodo de Pauly [3]

62 Comparaccedilatildeo entre os dois meacutetodos que realizam operaccedilotildees booleanas

A comparaccedilatildeo entre os meacutetodos de Pauly[3] e de Adams e Dutreacute foi feita

em termos de tempo de processamento e em termos conceituais Em termos de

tempo de processamento comparamos o plugin de Pauly[3] com o nosso plugin

Em termos de tempo de processamento verifica-se empiricamente que os

dois meacutetodos apresentam tempos bastante similares Entretanto o tempo de

processamento do algoritmo aqui implementado ainda pode ser melhorado com

Resultados 69

o uso do meacutetodo TINN [19] que foi proposto em Adams[2] - para otimizar a

pesquisa do surfel mais proacuteximo a um ponto que estaacute localizado na regiatildeo de um

noacute que conteacutem surfels - veja seccedilatildeo 42 O uso deste meacutetodo natildeo foi

implementado para este trabalho e a sua implementaccedilatildeo melhoraria o tempo de

resposta do algoritmo Aleacutem disso o trabalho de Sara F Frisken [12] citado no

capiacutetulo 2 apresenta uma otimizaccedilatildeo no uso de octrees que pode ser

incorporada no algoritmo implementado neste trabalho

Em termos conceituais vamos fazer a comparaccedilatildeo do uso do que

chamamos aqui de Regra 2 do tratamento de interseccedilatildeo e do tratamento de

ldquoarestas vivasrdquo

Como vimos na seccedilatildeo 41 tanto o algoritmo implementado nesta

dissertaccedilatildeo baseado no trabalho de Adams e Dutreacute como o meacutetodo de Pauly

[3] parte do que chamamos aqui de Regra 2 para realizar operaccedilotildees booleanas

com pontos Mas cada um destes meacutetodos daacute um tratamento diferente para o

uso desta regra

O meacutetodo de Pauly usa a Regra 2 para classificaccedilatildeo de cada ponto ou de

cada surfel Para classificar um surfel de B sb como dentro ou fora de A eacute

encontrado o surfel de A sa mais proacuteximo a sb e sb eacute classificado a partir de sa

Para encontrar sa Pauly utiliza uma kd-tree Como esta pesquisa para encontrar

sa eacute cara (mesmo usando uma kd-tree) Pauly utiliza uma esfera que conteacutem

pontos com a mesma classificaccedilatildeo (seccedilatildeo 432) e diminui em 90 este nuacutemero

de pesquisas Pauly utiliza tambeacutem a representaccedilatildeo impliacutecita MLS (Moving Least

Squares) para casos em que a Regra 2 poderia falhar e para tratamento de

interseccedilotildees Entretanto o nuacutemero destes casos em que a Regra 2 poderia falhar

eacute muito pequeno E a representaccedilatildeo MLS natildeo eacute uma estrutura simples de ser

implementada Portanto natildeo encontramos vantagens em usar MLS para estes

casos O meacutetodo de Adams e Dutreacute natildeo trata estes casos e na praacutetica

apresenta resultados bastante satisfatoacuterios como foi mostrado Portanto

consideramos que valeria a pena fazer algum tratamento especial para estes

casos se fosse um procedimento simples Para a execuccedilatildeo do algoritmo de

Pauly o uso de MLS natildeo interfere significativamente porque a construccedilatildeo desta

representaccedilatildeo natildeo eacute feita somente para realizar operaccedilotildees booleanas Os testes

empiacutericos que fizemos com o algoritmo de Pauly natildeo incluem a construccedilatildeo desta

representaccedilatildeo

Aparentemente os dois algoritmos satildeo bastante parecidos um usa octrees

e o outro usa kd-tree As duas estruturas de dados satildeo simples e otimizam a

classificaccedilatildeo dos surfels de um modelo como dentro ou fora do outro modelo

Resultados 70

Mas existe uma diferenccedila conceitual entre dois que merece ser destacada O

algoritmo aqui implementado usa a Regra 2 para classificaccedilatildeo dos noacutes de uma

octree e armazena esta octree classificada (ver capiacutetulo 5) Assim na maioria dos

casos natildeo seraacute necessaacuterio encontrar o surfel mais proacuteximo para classificar um

ponto (ou um surfel) como fora ou dentro de um modelo Caso o ponto esteja em

uma aacuterea da octree classificada ele teraacute a classificaccedilatildeo dada agravequela aacuterea A

pesquisa ao surfel mais proacuteximo seraacute feita apenas nos casos em que o ponto a

ser classificado estaacute localizado entre os planos que subdividem um noacute cheio

O uso desta octree classificada levanta uma questatildeo que natildeo foi citada no

trabalho de Adams e Dutreacute que eacute a proximidade desta estrutura (armazenada)

de octree classificada com uma representaccedilatildeo volumeacutetrica do objeto Sendo

assim esta estrutura pode ser aproveitada para outras funccedilotildees aleacutem da

classificaccedilatildeo dos surfels Por exemplo podemos ter uma aproximaccedilatildeo do

volume de uma cena somando os volumes aproximados dos modelos que a

compotildeem Como o enfoque deste trabalho eacute operaccedilatildeo booleana natildeo vamos nos

aprofundar nesta questatildeo

Outra importante diferenccedila entre os dois trabalhos que jaacute foi explicada na

seccedilatildeo 432 eacute que o meacutetodo de Pauly aplica-se a modelos soacutelidos ou natildeo

soacutelidos enquanto que o meacutetodo de Adams e Dutreacute aplica-se somente a modelos

soacutelidos

Quanto ao tratamento de interseccedilatildeo em termos de visualizaccedilatildeo todos os

dois resolvem bem o problema O tratamento de interseccedilatildeo nos dois trabalhos

tambeacutem resolve o problema da validade da Regra 2 (ver seccedilatildeo 44) Entretanto

o tratamento de Adams e Dutreacute natildeo depende da renderizaccedilatildeo sendo portanto

mais portaacutevel Aleacutem disso uma desvantagem do meacutetodo de Pauly eacute o uso da

representaccedilatildeo impliacutecita MLS (ldquoMoving Least Squaresrdquo) do objeto para obter os

pontos exatamente na curva de interseccedilatildeo Esta representaccedilatildeo torna o

tratamento de interseccedilatildeo mais complexo e a vantagem apresentada natildeo eacute tatildeo

significativa para este tratamento de interseccedilatildeo

Conclusatildeo 71

7 Conclusatildeo

Concluiacutemos entatildeo que as escolhas de Adams e Dutreacute por usar uma

octree classificada e pelo tratamento dado agrave interseccedilatildeo satildeo mais abrangentes

que a escolha de Pauly E consideramos que quanto mais abrangente for uma

escolha conceitual mais resultados poderemos tirar dela No caso de Adams e

Dutreacute eles estendem o problema de classificar um ponto para classificar todo o

modelo Como foi citado ele quase fornece uma representaccedilatildeo volumeacutetrica do

modelo Esta aproximada representaccedilatildeo volumeacutetrica pode nos fornecer outras

informaccedilotildees como por exemplo o volume aproximado do modelo

Aleacutem disso o uso da representaccedilatildeo impliacutecita MLS no meacutetodo de Pauly cria

uma complexidade a mais para o meacutetodo sem apresentar vantagens para a

realizaccedilatildeo de operaccedilotildees booleanas que eacute o nosso enfoque

Logo podemos dizer que o meacutetodo de Adams e Dutreacute apresenta as

seguintes vantagens em relaccedilatildeo ao de Pauly

- a estrutura de octree classificada aleacutem de ser usada para classificaccedilatildeo

fornece informaccedilotildees adicionais como volume aproximado do objeto

- o tempo de processamento no meacutetodo de Adams e Dutreacute tende a ser

melhor que no meacutetodo de Pauly se implementadas as melhorias acima citadas e

se colocaacutessemos em consideraccedilatildeo o uso da representaccedilatildeo impliacutecita MLS

(Moving Least Squares)

- o tratamento de interseccedilatildeo de Adams e Dutreacute apresenta a vantagem da

portabilidade ou seja iraacute funcionar independente do algoritmo de renderizaccedilatildeo

utilizado

E as vantagens do meacutetodo de Pauly em relaccedilatildeo ao de Adams e Dutreacute

- a colocaccedilatildeo de surfels exatamente na curva de interseccedilatildeo

- a possibilidade de trabalhar com modelos soacutelidos ou natildeo soacutelidos

E finalizando concluiacutemos que o estudo relatado nesta dissertaccedilatildeo foi

importante por

- fornecer um breve estudo sobre modelagem por pontos uma nova e

promissora aacuterea dentro da computaccedilatildeo graacutefica

Conclusatildeo 72

- por apresentar uma avaliaccedilatildeo dos dois trabalhos existentes sobre

operaccedilotildees booleanas com pontos encontrando as vantagens de cada um

e levantando questotildees que natildeo tinham sido citadas nos trabalhos originais

- por propor e implementar melhorias ao trabalho de Adams e Dutreacute

71 Trabalhos Futuros

Nossa implementaccedilatildeo pode ser ainda evoluiacuteda com as propostas

apresentadas na seccedilatildeo 62 Como observamos o tempo de processamento do

algoritmo aqui implementado ainda pode ser melhorado com o uso do meacutetodo

TINN [19] - que foi proposto em Adams[2] - para otimizar a pesquisa do surfel

mais proacuteximo a um ponto que estaacute localizado na regiatildeo de um noacute que conteacutem

surfels Aleacutem disso o trabalho Simple and Efficient Trasversal Methods for

Quadtrees and Octrees de Sara F Frisken [12] citado no capiacutetulo 2 apresenta

uma otimizaccedilatildeo no uso de octrees Outra proposta para melhorar o tempo de

processamento do algoritmo aqui implementado eacute usar a forma de trabalhar com

octrees apresentada neste trabalho

O trabalho de Adams e Dutreacute [2] eacute aplicado apenas a objetos soacutelidos O

nosso plugin portanto aplica-se somente a este tipo de objeto Jaacute o trabalho de

Pauly[3] eacute aplicado tambeacutem a modelos natildeo soacutelidos Apresentamos como

proposta a um trabalho futuro a extensatildeo do algoritmo aqui implementado para

modelos natildeo soacutelidos O surfel pode conter uma informaccedilatildeo adicional que indica

se ele estaacute delimitando um volume ou natildeo Assim pode-se ter um modelo com

ldquopartes soacutelidasrdquo e ldquopartes natildeo soacutelidasrdquo Por exemplo a uniatildeo de um plano com

uma esfera poderia resultar numa esfera com ldquoabasrdquo (seriam as partes do plano

que estariam fora da esfera) O modelo resultado teria uma parte correspondente

a um espaccedilo 3D (esfera) e outra parte que seria uma superfiacutecie 2D posicionada

no espaccedilo 3D sem delimitar algum volume (abas)

Muitos trabalhos podem ser desenvolvidos aplicando-se o modelo por

pontos em animaccedilatildeo jogos visualizaccedilatildeo de terrenos criaccedilatildeo de protoacutetipos etc

considerando-se a eficiecircncia e simplicidade do modelo E mais especificamente

as operaccedilotildees booleanas com pontos podem ser aplicadas para criaccedilatildeo de

cenaacuterios testes de colisotildees e nestes casos a representaccedilatildeo usando octrees

pode ser mais explorada considerando-se o seu potencial de representaccedilatildeo

volumeacutetrica de um objeto

Referecircncias Bibliograacuteficas 73

8 Referecircncias Bibliograacuteficas

[1] MAumlNTYLAuml M An Introduction to Solid Modeling Computer Science Press 1988

[2] ADAMS B DUTREacute P Interactive Boolean Operations on Surfel-

Bounded Solids Proceedings of SIGGRAPH 2003 San Diego USA 2003

[3] PAULY M KEISER R KOBBELT L GROSS M Shape Modeling

with Point-Sampled Geometry SIGGRAPH 2003 Computer Graphics

Proceedings Annual Conference Series ACM Press ACM SIGGRAPH 2003

[4] LEVOY M WHITTED T The Use of Points as Display Primitives

Technical Report TR 85-022 The University of North Carolina at Chapel Hill

Department of Computer Science 1985

[5] PFISTER H ZWICKER M VAN BAAR J GROSS M 2000 Surfels

Surface Elements as Rendering Primitives SIGGRAPH 2000 pp 335ndash342 New

Orleans LA July 23-28 2000

[6] ZWICKER M PFISTER H VAN BAAR J GROSS M Surface

Splatting SIGGRAPH 2001

[7] PAULY M KOBBELT L GROSS M Multiresolution Modeling of

Point-Sampled Geometry CS Techinical Report 378 September 16 2002

[8] CURLESS B New Methods for Surface Reconstruction from Range Images PhD thesis Stanford University 1997

[9] RUSINKIEWICZ S Real-time Acquisition and Rendering of Large 3D Models PhD thesis Stanford University 2001

Referecircncias Bibliograacuteficas 74

[10] AMENTA N BERN M KAMVYSSELIS M A new Voronoi-Based

Surface Reconstruction Algorithm SIGGRAPH 98 Conference proceedings pp

415-421 New York 1998

[11] ZWICKER M PAULY M KNOLL O GROSS M Pointshop 3D an

Interactive System for Point-Based Surface Editing Proceedings of SIGGRAPH 2002 San Antonio TX July 2002

[12] FRISKEN S PERRY R Simple and Efficient Traversal Methods for

Quadtrees and Octrees Journal of Graphics Tools Vol 7 Issue 3 May 2003

[13] CORREcircA W T OLIVEIRA M M Silva C T Wang J

Modeling and Rendering of Real Environments

Revista de Informaacutetica Teoacuterica e Aplicada (Brazilian Journal of Theoretic and Applied Computing) 9(2)127-156 2002

[14] DAVIS J MARSCHNER S GARR M LEVOY M Filling Holes in

Complex Surfaces Using Volumetric Diffusion First International Symposium on 3D Data Processing Visualization Transmission June 2002

[15] RAumlSAumlNEN J Surface Splatting Theory Extensions and Implementation Masterrsquos Thesis Dept of Computer Science Helsinki

University of Technology May 28 2002

[16] PAULY M Point Primitives for Interactive Modeling and Processing of 3D Geometry PhD thesis Federal Institute of Technology (ETH)

of Zurich 2003

[17] HOPPE H DEROSE T DUCHAMP T MCDONALD J

STUELZLE W Surface Reconstruction from Unorganized Points Computer Graphics 26(2)71ndash78 July 1992

[18] ALEXA M BEHR J COHEN-OR D FLEISHMAN S LEVIN D

SILVA C T Point Set Surfaces IEEE Visualization 2001 pp 21ndash28 October

2001

Referecircncias Bibliograacuteficas 75

[19] GREENSPAN M GODIN G TALBOT J Acceleration of Binning

Nearest Neighbor Methods Proceedings of Vision Interface 2000 pp 337-

344

[20] MENCL R Reconstruction of Surfaces from Unorganized Three-Dimensional Point Clouds Dissertation Dortmund Univ 2001

[21] KRIVANEK J Representing and Rendering Surfaces With Points

httpciteseernjneccomkrivanek03representinghtml Acesso em 30 jul

2003

[22] KRISTJANSSON ET AL Approximate Boolean Operations on Free-

form Solids Proceedings of SIGGRAPH 01 2001

Operaccedilotildees Booleanas com Pontos 42

Tabela 1 Classificaccedilatildeo para operaccedilotildees booleanas

Para o tratamento de interseccedilatildeo neste meacutetodo satildeo computados pontos

que caem exatamente na curva de interseccedilatildeo e estes satildeo acrescentados ao

modelo resultado Estes pontos satildeo determinados de forma que a densidade da

amostragem vai crescendo agrave medida que os surfels se aproximam da curva de

interseccedilatildeo e convergem para este ponto de interseccedilatildeo como mostra a Figura

13

(a) (b) (c)

Figura 13 - Os novos surfels satildeo colocados exatamente na curva de interseccedilatildeo

e convergem para o ponto de interseccedilatildeo

A Figura 14 mostra o processo de encontrar os surfels que caem nesta

curva de interseccedilatildeo Inicialmente satildeo encontrados todos os pontos de Q1 e Q2

que estatildeo proacuteximos agrave curva de interseccedilatildeo por meio da funccedilatildeo de distacircncia do

operador de projeccedilatildeo MLS Em seguida procura-se todos os pares mais

proacuteximos (q1 є Q1 q2 є Q2 ) e computa-se o ponto q na curva de interseccedilatildeo da

seguinte forma (veja a Figura 14)Seja r o ponto na linha de interseccedilatildeo dos dois

planos tangentes em q1 e q2 e que estaacute mais proacuteximo a estes dois pontos isto eacute

que minimiza a distacircncia ||r-q1|| + ||r-q2|| r eacute a primeira aproximaccedilatildeo de q e agora

pode ser projetado sobre S1 e S2 para obter dois novos pontos de partida q1rsquo e q2

rsquo

para a iteraccedilatildeo Este procedimento pode ser repetido iterativamente ateacute que os

pontos q1 e q2 convirjam ao ponto q na curva de interseccedilatildeo Normalmente este

processo requer menos de trecircs iteraccedilotildees

Operaccedilotildees Booleanas com Pontos 43

(a) (b)

(c)

Figura 14 (a) Suponhamos a reta que eacute a interseccedilatildeo do plano tangente a S1 em q1 e o

plano tangente a S2 em q2 O ponto r eacute o ponto desta reta que estaacute mais proacuteximo a q1 e

q2 (b) r eacute projetado sobre S1 e S2 obtendo-se q1acute e q2acute dois novos pontos de partida

para nova iteraccedilatildeo (c) A nova iteraccedilatildeo gera r que eacute uma aproximaccedilatildeo melhor de q

Pauly faz o tratamento de arestas vivas em tempo de renderizaccedilatildeo Ele

faz uma alteraccedilatildeo no renderizador Marca os surfels de interseccedilatildeo e ao

renderizaacute-los satildeo cortados para gerar uma aresta viva

44 Validade da Regra 2

Os dois meacutetodos analisados nesta dissertaccedilatildeo utilizam a seguinte regra

para a classificaccedilatildeo de um surfel

Regra 2 dado um volume V determinado por uma superfiacutecie de contorno

S uma amostragem P da superfiacutecie S um ponto x qualquer um ponto p є P que

eacute a amostra mais proacutexima a x um vetor ny normal a S em p e orientado para

fora de S temos que (x ndash p) np gt 0 x notinV

Em [16] eacute colocado que esta regra eacute tirada da seguinte propriedade da

geometria diferencial (aqui chamada Propriedade 1)

Propriedade 1 Dado um volume V determinado por uma superfiacutecie de

contorno S contiacutenua e duplamente diferenciaacutevel um ponto x qualquer um ponto

Operaccedilotildees Booleanas com Pontos 44

y є S que eacute o ponto de S mais proacuteximo a x um vetor ny normal a S em y e

orientado para fora de S temos que (x ndash y) ny gt 0 x notinV

A Figura 15 ilustra esta propriedade

Figura 15 Para verificar se o ponto x estaacute fora de um contorno C encontra-se o ponto y

de C Se o produto interno entre a normal em y e o vetor que liga y a x for maior que

zero entatildeo x estaacute fora de C senatildeo estaacute dentro de C

Pauly assume que tendo uma amostragem P da superfiacutecie S podemos

usar a Propriedade 1 substituindo y por p o surfel mais proacuteximo ao ponto x (x ndash

p) np gt 0 x notinV (Regra 2) Esta amostragem P em seu trabalho eacute

(aproximadamente) uma ldquoamostragem adequadardquo Tambeacutem seu tratamento de

interseccedilatildeo cria uma aproximaccedilatildeo dela (seccedilatildeo 43) Empiricamente a

ldquodiscretizaccedilatildeo da propriedaderdquo eacute vaacutelida a partir desta suposiccedilatildeo Mas isso natildeo foi

demonstrado teoricamente em seu trabalho

Pauly coloca em [16] que natildeo existe ainda uma teoria matemaacutetica rigorosa

de amostragem anaacuteloga a teoria de Fourier para superfiacutecies discretas

A melhor aproximaccedilatildeo teoacuterica para esta aacuterea eacute o uso do Eixo Medial que

foi colocado em [10] Vamos descrever este trabalho brevemente nesta seccedilatildeo

Este trabalho apresenta um algoritmo de reconstruccedilatildeo de superfiacutecie que parte de

uma amostragem adequada (abaixo definida) de pontos e obteacutem uma malha

que eacute topologicamente equivalente agrave superfiacutecie do objeto e agrave medida que a

densidade da amostragem cresce a saiacuteda converge para esta superfiacutecie

Para definir amostragem adequada o trabalho parte do conceito de Eixo

Medial

Operaccedilotildees Booleanas com Pontos 45

ldquoEixo Medialrdquo de uma superfiacutecie 2D posicionada no R3 eacute o conjunto

(fechado) de pontos pi para os quais buscando-se o ponto da superfiacutecie que

estaacute mais proacuteximo a pi mais de um ponto pertencentes a esta superfiacutecie satildeo

encontrados A Figura 16 abaixo ilustra o Eixo Medial em 2D

Figura 16 [10] As curvas de cor mais clara satildeo o Eixo Medial da curva em preto

Em duas dimensotildees os veacutertices de Voronoi de uma amostragem densa

aproximam o ldquoEixo Medialrdquo da amostragem (mas esta propriedade natildeo se

estende a 3D) A Figura 17 mostra o Eixo Medial em 3D

Figura 17 [10] Em 3D geralmente o Eixo Medial eacute uma superfiacutecie 2D (em cor mais

clara) Aqui o quadrado eacute o Eixo Medial da superfiacutecie transparente que o contorna

Podemos definir agora a amostragem adequada da seguinte forma

Supondo uma superfiacutecie suave que quer dizer uma 2-manifold duplamente

diferenciaacutevel posicionada no R3 uma ldquoamostragem adequadardquo desta superfiacutecie eacute

aquela na qual a densidade da amostragem eacute (pelo menos) inversamente

proporcional agrave distacircncia ao ldquoEixo Medialrdquo A Figura 18 mostra uma amostragem

adequada

Operaccedilotildees Booleanas com Pontos 46

Figura 18 [10] A figura mostra o diagrama de Voronoi de uma amostragem de pontos S

Da mesma forma que o a amostragem aproxima a curva os veacutertices de Voronoi

aproximam o Eixo Medial

Na praacutetica na reconstruccedilatildeo da superfiacutecie uma aproximaccedilatildeo deste ldquoEixo

Medialrdquo eacute computada (devido agrave dificuldade de computaacute-lo exatamente e em

alguns casos ateacute impossibilidade)

Melhorias Propostas 47

5 Melhorias Propostas

No capiacutetulo 4 apresentamos dois meacutetodos que realizam operaccedilotildees

booleanas em modelos por pontos o meacutetodo de Adams e Dutreacute [2] e o meacutetodo

de Pauly[3] Para esta dissertaccedilatildeo usamos o meacutetodo de Adams e Dutreacute [2] e

propomos as seguintes melhorias

- Alteramos o momento em que eacute feita a classificaccedilatildeo da octree Fazemos

esta classificaccedilatildeo durante a sua criaccedilatildeo Os noacutes filhos de um noacute pai P qualquer

satildeo classificados logo apoacutes a criaccedilatildeo de todos estes filhos de P

independentemente do restante da octree ter sido criada Isso pode ser feito

porque a octree eacute construiacuteda na ordem raiz-esquerda-direita (preorder

traversal) e portanto apoacutes todos os filhos de um noacute pai serem criados a parte

necessaacuteria da octree para a classificaccedilatildeo destes filhos jaacute estaacute criada

- A classificaccedilatildeo da octree eacute otimizada classificando-se os cantos dos seus

noacutes como dentro ou fora do modelo Na classificaccedilatildeo de um noacute n1 a partir de seu

vizinho n2 se os cantos que satildeo comuns a n1 e n2 tiverem a mesma

classificaccedilatildeo esta seraacute dada ao noacute Assim diminuiacutemos o nuacutemero de pesquisas

pelo surfel mais proacuteximo que eacute a parte criacutetica da classificaccedilatildeo dos noacutes da octree

em termos de tempo de processamento

- Acrescentamos um valor miacutenimo (maior que zero) para o nuacutemero de

surfels contidos em um noacute que eacute uma das condiccedilotildees de parada na criaccedilatildeo da

octree Verificamos que desta forma diminui-se a chance de erro na classificaccedilatildeo

de partes criacuteticas como ldquoarestas vivasrdquo

Uma comparaccedilatildeo entre a nossa implementaccedilatildeo e a de Pauly tambeacutem seraacute

feita no capiacutetulo 6

51 Descriccedilatildeo do algoritmo

O algoritmo implementado para esta dissertaccedilatildeo baseado no meacutetodo de

Adams e Dutreacute [2] pode ser dividido nas seguintes partes Criaccedilatildeo e

classificaccedilatildeo de uma octree para cada modelo Teste DentroFora Criaccedilatildeo do

modelo resultado Natildeo foi implementado tratamento especial algum de

interseccedilatildeo para o nosso plugin As proacuteximas seccedilotildees apresentam estas partes

Melhorias Propostas 48

511 Criaccedilatildeo e classificaccedilatildeo de uma octree para cada modelo

As ideacuteias do algoritmo satildeo aqui ilustradas em 2D mas a extensatildeo delas

para 3D eacute feita facilmente

Para cada modelo a octree eacute criada e classificada da seguinte forma

Figura 19-Quadtree classificada Os noacutes mais escuros estatildeo fora do modelo os mais claros dentro e os em tom intermediaacuterio satildeo noacutes de contorno

Gera-se uma ldquocaixa envolventerdquo do modelo contendo todos os surfels e

cria-se o noacute raiz da octree que corresponde a esta ldquocaixa envolventerdquo Este noacute

raiz eacute subdividido em oito filhos e seus surfels satildeo distribuiacutedos entre eles Ao

inveacutes de testarmos os valores de xy e z para cada surfel a fim de determinar

para qual filho ele iraacute utilizamos listas auxiliares Primeiro os surfels satildeo

subdivididos em dois grupos pelos valores de x e armazenados em uma lista

auxiliar Em seguida cada uma das listas eacute subdividida pelo valor de y e as

quatro listas obtidas seratildeo subdivididas pelo valor de z Ao final teremos 8 listas

de surfels cada uma delas pertencente a um filho

Cada noacute seraacute entatildeo novamente subdividido enquanto contiver um nuacutemero

de surfels gt nmin (valor preacute-definido) ou enquanto a profundidade da aacutervore lt pmax

(valor preacute-definido) Na figura 19 pmax = 3 e nmin = 3

Melhorias Propostas 49

Figura 20-O noacute cheio eacute dividido em trecircs partes agrave esquerda a regiatildeo estaacute dentro do modelo agrave direita estaacute fora e entre as duas linhas que dividem o noacute estaacute a regiatildeo que conteacutem os surfels

Os noacutes cheios recebem um tratamento especial Eles satildeo subdivididos em

trecircs partes da seguinte forma uma que estaacute fora do modelo outra que estaacute

dentro e uma que conteacutem os surfels Esta subdivisatildeo eacute feita por meio da criaccedilatildeo

de dois planos paralelos que dividem o noacute Para determinar estes planos

calcula-se o vetor nm igual agrave meacutedia das normais dos surfels do noacute nm = sum ns

sum ns onde ns eacute a normal de cada surfel do noacute Em seguida encontra-se o

surfel com maior produto interno entre a sua normal e a normal meacutedia

d1=Max(nm ٠ ns) Este surfel juntamente com a normal meacutedia define um dos

planos Encontra-se tambeacutem o surfel com menor produto interno entre a sua

normal e a normal meacutedia d2=Min (nm ٠ ns) Este surfel juntamente com a normal

meacutedia define o outro plano (Figura 20) Se o noacute conteacutem surfels de superfiacutecies de

orientaccedilotildees diferentes ele natildeo seraacute subdividido ou seja os planos coincidiratildeo

com os planos que delimitam o proacuteprio noacute Este teste foi implementado da

seguinte forma escolhe-se um surfel qualquer do noacute Calcula-se o produto

interno entre a normal deste surfel e as outras normais dos outros surfels deste

noacute Se algum produto interno for menor que zero este noacute natildeo seraacute subdividido

Apoacutes a etapa de subdivisatildeo classificam-se os oito cantos deste noacute como

dentro ou fora do modelo por meio da classificaccedilatildeo de um ponto que

descreveremos na sub-seccedilatildeo 5111

Melhorias Propostas 50

a b

c d

Figura 21-O noacute a eacute classificado pelo noacute c o noacute d tambeacutem eacute classificado pelo noacute c a classificaccedilatildeo do noacute a eacute propagada para o noacute b

Jaacute os noacutes vazios da octree seratildeo classificados como ldquodentrordquo ou ldquoforardquo do

modelo da seguinte forma cada noacute folha vazio eacute classificado a partir de um de

seus irmatildeos vizinhos adjacentes Se ele possuir um vizinho adjacente cheio ele

seraacute classificado por este vizinho se natildeo possuir os vizinhos adjacentes seratildeo

classificados primeiro e ele teraacute esta mesma classificaccedilatildeo (Figura 21) Como tem

que existir sempre pelo menos um noacute cheio entre os filhos de um noacute pai entatildeo

sempre esta classificaccedilatildeo poderaacute ser feita Com a classificaccedilatildeo de todos os

filhos tem-se tambeacutem a classificaccedilatildeo dos cantos do noacute pai

Mf03c003fmx a b

Figura 22-Os cantos a e b do noacute cheio possuem a mesma classificaccedilatildeo fora do modelo Esta classificaccedilatildeo foi dada ao noacute vazio adjacente

Melhorias Propostas 51

Para classificar um noacute vazio por meio de um noacute cheio verificam-se os

cantos comuns destes dois noacutes se todos os cantos tiverem a mesma

classificaccedilatildeo esta seraacute dada ao noacute vazio (Figura 22) Se houver classificaccedilotildees

diferentes escolhe-se o surfel do noacute cheio mais proacuteximo ao noacute vazio faz-se o

produto interno entre a normal deste surfel e o vetor que liga o centro do noacute

cheio ao centro do noacute vazio (ou o vetor que liga o surfel ao centro do noacute vazio)

Se o produto interno for maior que zero o noacute eacute classificado como ldquoforardquo senatildeo eacute

classificado como ldquodentrordquo Para encontrar o surfel (pertencente a um noacute cheio)

mais proacuteximo ao noacute vazio existem dois casos

- O noacute cheio eacute folha percorre-se toda a lista de surfels e escolhe o surfel

mais proacuteximo da fronteira entre o noacute cheio e o vazio

- O noacute cheio natildeo eacute um noacute folha percorrem-se os filhos do noacute cheio ou seja

esta pesquisa eacute feita descendo na octree a partir do noacute cheio procurando o

surfel mais proacuteximo agrave fronteira do pai com o noacute vazio a ser classificado

Classificando o centro do noacute vazio todo o noacute deve ter a mesma

classificaccedilatildeo pois este noacute natildeo conteacutem surfels Para encontrar o surfel do noacute

vazio mais proacuteximo da fronteira entre o noacute cheio e o vazio basta testar o valor da

coordenada se a fronteira eacute o lado direito do noacute cheio escolhe-se o surfel com

maior coordenada lsquoxrsquo se eacute o lado esquerdo escolhe-se o surfel com menor lsquoxrsquo

se lado superior surfel com maior lsquoyrsquo etc A seguir apresentamos a classificaccedilatildeo

de um ponto qualquer pertencente a um noacute cheio

Figura 23- Quadtree classificada

Melhorias Propostas 52

5111 Classificaccedilatildeo de um ponto de um noacute cheio

Figura 24 [2] A normal n eacute a normal meacutedia e os surfels s1 e s2 juntamente com a normal

n definem as retas que dividem o noacute O ponto a estaacute fora do modelo e o ponto b estaacute

dentro do modelo

Para um ponto localizado dentro do noacute faz-se o seguinte teste se o noacute foi

dividido testa-se de acordo com a divisatildeo do noacute se o ponto estaacute na parte do noacute

que estaacute dentro do modelo ele eacute classificado como ldquodentrordquo se o ponto estaacute na

parte que estaacute fora do modelo ele eacute classificado como ldquoforardquo (Figura 24) se o

ponto estaacute na parte que conteacutem os surfels encontra-se o surfel s pertencente ao

noacute mais proacuteximo do ponto e o classifica de acordo com s seja ns a normal em s

cs a coordenada de s cp a coordenada do ponto Se (cp - cs )٠ ns gt 0 o ponto

seraacute classificado como ldquoforardquo Senatildeo seraacute classificado como ldquodentrordquo

Se o noacute natildeo foi dividido em planos esta classificaccedilatildeo a partir do surfel

mais proacuteximo seraacute sempre feita

512 Teste DentroFora

Melhorias Propostas 53

Figura 25-Duas circunferecircncias e suas quadtrees correspondentes

O Teste DentroFora classifica os surfels de um modelo como dentro ou

fora de outro modelo ou na sua interseccedilatildeo Este teste foi aqui implementado

exatamente como foi proposto em Adams e Dutreacute [2] exceto que natildeo foi

implementado o meacutetodo TINN - Triangle Inequality Nearest Neighbour [19]

Cada octree eacute percorrida verificando-se se os seus noacutes ou surfels estatildeo dentro

fora ou no contorno do outro modelo (Figura 25) Sejam A e B duas octrees e

queremos classificar a octree A As duas octrees (AB) satildeo percorridas partindo

da raiz

Para cada noacute de A existem quatro casos (Figura 26) Para testar estas

situaccedilotildees os boxes dos noacutes satildeo aumentados de rmax o raio do maior surfel do

modelo Isto eacute feito para compensar o fato de que o surfel natildeo eacute apenas um

ponto mas sim considerado como um disco

Os quatro casos satildeo

Se o noacute de A natildeo intersecta B entatildeo todos os surfels deste noacute satildeo

classificados como fora

Se o noacute de A intersecta apenas noacutes de B que estatildeo fora do modelo

todos os surfels deste noacute satildeo fora

Se o noacute de A intersecta apenas noacutes de B que estatildeo dentro do modelo

todos os surfels deste noacute satildeo dentro

Melhorias Propostas 54

Se o noacute de A intersecta noacutes de B que estatildeo dentro e tambeacutem noacutes de B

que estatildeo fora testa-se se este noacute de A eacute ou natildeo folha Se natildeo for folha

percorre-se os filhos deste noacute de A ateacute encontrar um noacute folha cheio que

intersecta B Para cada surfel sa deste noacute folha de A encontra-se o surfel de B

mais proacuteximo e classifica-se a coordenada de sa da forma apresentada na seccedilatildeo

5111 Seja sb o surfel usado na classificaccedilatildeo de sa Se os discos de sb e sa

se intersectam sa eacute classificado como ldquointerseccedilatildeordquo

(a) (b)

(c) (d)

Figura 26- a modelos natildeo se intersectam b modelo intersecta noacutes fora c modelo intersecta apenas noacutes dentro d modelo intersecta noacutes dentro e noacutes fora

513 Criaccedilatildeo do modelo resultado

Um novo modelo eacute criado com os seguintes surfels (de acordo com a

operaccedilatildeo booleana escolhida pelo usuaacuterio - veja Regra 1 da seccedilatildeo 41)

Uniatildeo - surfels de A que estatildeo fora de B + surfels de B que estatildeo fora de A

Melhorias Propostas 55

Interseccedilatildeo - surfels de A que estatildeo dentro de B + surfels de B que estatildeo

dentro de A

Diferenccedila A-B - surfels de A que estatildeo fora de B + surfels de B que estatildeo

dentro de A (com orientaccedilatildeo invertida)

Como natildeo foi implementado tratamento especial algum de interseccedilatildeo para

o nosso plugin os surfels que se intersectam satildeo mantidos no modelo resultado

final sem modificaccedilotildees

Descrito o algoritmo vejamos a seguir a sua implementaccedilatildeo

52 Implementaccedilatildeo

Este algoritmo foi implementado na forma de um plugin para o software

PointShop 3D [11] Este plugin foi desenvolvido na linguagem C e no sistema

operacional Windows

A escolha deste tipo de implementaccedilatildeo permitiu-nos usar o software

PointShop para os testes do algoritmo Estes testes foram feitos com os modelos

disponibilizados para o PointShop [11] Nesta seccedilatildeo apresentaremos o software

PointShop e as principais estruturas de dados usadas em nosso plugin

O Pointshop eacute um software aberto com seu coacutedigo disponiacutevel e preparado

para trabalhar com plugins Eacute um software de ediccedilatildeo de modelos 3D por pontos

Ele permite aleacutem de visualizar o modelo alterar as suas caracteriacutesticas como

cor brilho e fazer mapeamento de textura iluminaccedilatildeo filtragem (Figura 27)

Melhorias Propostas 56

Figura 27-Software PointShop 3D com dois modelos carregados na sua cena

Aleacutem disso pode-se criar uma cena com vaacuterios modelos e visualizaacute-los de

qualquer ponto de vista Implementa o virtual trackball para rotacionaacute-los e

transladaacute-los Usa uma iluminaccedilatildeo simples direcional A sua arquitetura eacute

extensiacutevel permite que o usuaacuterio adicione seus proacuteprios componentes ao

sistema Possui trecircs tipos de componentes

ldquoToolsrdquo fornece funcionalidades para ediccedilatildeo interativa de superfiacutecie Satildeo

disponibilizados na ldquotoolbarrdquo

Plugins fornece funcionalidades para processar em um soacute passo

modelos ou partes deles selecionadas Satildeo disponibilizados no menu ldquoPluginsrdquo

Renderes fornece funcionalidades de display para os modelos

Para esta dissertaccedilatildeo foi escolhida a construccedilatildeo do componente Plugin

por adequar-se agrave nossa proposta e ser a mais simples de ser construiacuteda O

PointShop [11] jaacute conteacutem uma tool que executa operaccedilotildees booleanas e

deformaccedilatildeo free-form sobre os modelos carregados na cena usando o meacutetodo

de Pauly [3] apresentado no capiacutetulo 4 O nosso plugin Operaccedilotildees Booleanas

implementa o algoritmo descrito na seccedilatildeo anterior baseado na proposta de

Melhorias Propostas 57

Adams e Dutreacute [2] Uma comparaccedilatildeo entre o nosso plugin e a tool de Pauly [3] eacute

feita no capiacutetulo 6

Figura 28-Menu do PointShop com o plugin e as opccedilotildees para operaccedilotildees booleanas

Para se executar o plugin o usuaacuterio precisa carregar dois modelos na

cena do PointShop acionar o plugin informando a operaccedilatildeo que seraacute executada

O plugin executaraacute o algoritmo acima proposto e carregaraacute o resultado na cena

do Pointshop retirando os modelos anteriores

521 Estruturas de Dados

Como vimos o software PointShop [11] trabalha com modelos por pontos

Um modelo deste software descrito na seccedilatildeo 42 conteacutem todas as informaccedilotildees

que o algoritmo proposto em Bart [2] necessita Abaixo relacionamos as

Melhorias Propostas 58

principais estruturas de dados do PointShop usadas no plugin e as principais

estruturas de dados do nosso plugin

As principais classes do PointShop usadas no plugin satildeo

Classe Scene

Classe Objects

Classe SurfelColections

Classe Surfel

Classe StatusBar

Classe Transformer

A hierarquia de dados eacute a seguinte a Scene conteacutem vaacuterios Objects os

quais conteacutem SurfelColections Cada SurfelColections conteacutem Surfels que

suportam uma ou mais propriedades tais como cor difusa cor especular

Classe Scene Classe que representa uma cena que conteacutem modelos

Classe Object Um modelo eacute representado pela classe Object que

conteacutem uma SurfelCollection e as matrizes de transformaccedilatildeo para rotaccedilatildeo

escala e translaccedilatildeo Cada Object eacute identificado pelo seu nome que eacute uacutenico na

Scene O meacutetodo getUniqueName retorna um nome uacutenico Cada Object tem sua

proacutepria matriz de transformaccedilatildeo que pode ser modificada com setRotation

rotate setPosition translate setScale e scale Objects podem ser copiados com

copy Objects consiste em um conjunto de surfels os quais podem ser

recuperados pela getSurfelCollection O Object pode ser ativado com

setActiveObject e recuperado com getActiveObject

Objects podem ser adicionados ou removidos com addObject e

removeObject Os Objects podem ser obtidos pela getFirstObject e

getNextObject

Classe SurfelCollection representa o conjunto de surfels de um modelo

Cada surfelcollection consiste em um conjunto de surfels (SurfelInterface) de

tamanho obtido por getNofSurfels Os surfels podem ser recuperados com

getFirstSurfel getCurrentSurfel e getNextSurfel

A SurfelCollection conteacutem um PropertyDescriptor e uma SurfelList

A SurfelList eacute uma lista duplamente encadeada de surfels Possui os

atributos firstSurfel lastSurfel currentSurfel que satildeo ponteiros para uma

SurfelInterface nSurfels que eacute o nuacutemero de Surfels

A SurfelInterface define a API para os surfels que satildeo os menores

elementos que compotildeem um Object Podem ser considerados como pontos com

uma normal que define a orientaccedilatildeo do ciacuterculo (ou elipse) que seraacute desenhado

Melhorias Propostas 59

tatildeo logo o surfel seja renderizado Tem como atributos dois ponteiros (next e

prev) para SurfelInterface

PropertyDescriptor consiste em ateacute 32 valores descrevendo quais as

propriedades a SurfelInterface suporta

Classe Surfel classe que representa o surfel

Classe StatusBar classe que imprime mensagens na tela Os plugins

podem mandar mensagens para o usuaacuterio pela StatusBar

Mensagens texto podem ser impressas com showMessage O progresso

de uma operaccedilatildeo pode ser indicado com setProgress ou resetProgress

Classe Transformer representa a transformaccedilatildeo entre sistemas de

coordenadas Esta classe fornece meacutetodos para transformar pontos e vetores

entre os diferentes sistemas de coordenadas do Pointshop

A seguir apresentamos as principais estruturas de dados do plugin

Operaccedilotildees Booleanas

As principais estruturas de dados do plugin satildeo boundingbox tree no

lista_surfel surfel

Boundingbox conteacutem dois pontos 3D que definem uma caixa que conteacutem

o modelo um ponto com menores coordenadas xy e z e outro ponto com

maiores xyz

Tree representa a octree do modelo Cada registro conteacutem um ponteiro

para um noacute e oito ponteiros para as 8 octrees filhas

No representa um noacute da octree Conteacutem os seguintes dados

- localizaccedilatildeo do noacute que eacute o canto inferior esquerdo do noacute

- lista_surfel (preenchida apenas para noacutes folha cheios)

- quantidade de surfels do noacute

- classificaccedilatildeo do noacute como dentro fora ou contorno

- classificaccedilatildeo do noacute em relaccedilatildeo a outro modelo

- indica se o noacute eacute folha ou natildeo

- vetor que eacute a meacutedia das normais dos surfels do noacute

- ponto que eacute a meacutedia das localizaccedilotildees dos surfels do noacute

- surfel que tem (entre todos os surfels do noacute) o maior produto interno

entre a sua normal e a normal meacutedia

- surfel que tem (entre todos os surfels do noacute) o menor produto interno

entre a sua normal e a normal meacutedia

- produto interno maacuteximo e miacutenimo entre as normais dos surfels do noacute e a

normal meacutedia deste noacute

Melhorias Propostas 60

- indica se o noacute conteacutem surfels com normais em sentido oposto (produto

interno entre elas eacute menor que zero)

- classificaccedilatildeo dos oito cantos do noacute

lista_surfels lista em que cada registro conteacutem um apontador para um

surfel e um apontador para o proacuteximo registro

surfel representa o surfel da octree Conteacutem a classificaccedilatildeo em relaccedilatildeo a

outro modelo e um ponteiro para o surfel do Poinshop

Resultados 61

6 Resultados

Neste capiacutetulo apresentamos os testes realizados com o plugin para o

PointShop implementado para esta dissertaccedilatildeo a comparaccedilatildeo deste plugin com

o plugin de Pauly [3] e a comparaccedilatildeo entre o meacutetodo de Adams e Dutreacute [2] e o

meacutetodo de Pauly [3]

61 Testes

Os testes foram feitos em um PC x86 Family 6 261600 KB de RAM sem

placa graacutefica sistema operacional Windows 2000 O plugin foi implementado na

linguagem C

Os modelos usados para os testes satildeo modelos disponibilizados no

PointShop [11] Vale lembrar que o meacutetodo implementado em nosso plugin eacute

restrito a modelos soacutelidos e portanto foram usados apenas estes modelos

soacutelidos para os testes

O modelo na Figura 29 que eacute um dos modelos disponibilizados no

PointShop [11] foi usado para mostrar o resultado das operaccedilotildees realizadas

pelo plugin implementado nesta dissertaccedilatildeo O modelo Igea eacute um modelo soacutelido

que conteacutem 134345 surfels

Resultados 62

Figura 29-Modelo do PointShop Igea

Para realizar as operaccedilotildees este modelo foi carregado na cena do

PointShop duas vezes e um deles colorido de vermelho As Figuras 30 31 32

mostram o resultado da operaccedilatildeo de uniatildeo interseccedilatildeo e diferenccedila

respectivamente Os nuacutemeros de surfels dos modelos resultantes satildeo mostrados

na Tabela 2

Resultados 63

Figura 30-Resultado da uniatildeo de duas Igeas

Figura 31-Resultado da interseccedilatildeo de duas Igeas

Resultados 64

Figura 32-Resultado da diferenccedila entre duas Igeas

Tabela 2-Nuacutemero de surfels dos modelos resultantes

Observamos que o nuacutemero de surfels dos modelos resultantes estaacute

coerente com as figuras dos seus modelos

Para avaliar o tempo de processamento das operaccedilotildees foram realizados

vaacuterios testes com o objetivo de obter uma meacutedia dos tempos de realizaccedilatildeo de

cada operaccedilatildeo Tambeacutem foram armazenados os tempos da criaccedilatildeo das duas

octrees e da classificaccedilatildeo de todos os surfels dos dois objetos (como dentro ou

fora do outro modelo) Estes testes foram feitos usando o modelo Igea A meacutedia

dos tempos de processamento foi calculada e os resultados satildeo mostrados na

Tabela 3 Verificamos que o maior tempo gasto eacute para criaccedilatildeo das octrees

Verificamos tambeacutem que este resultado apresentado eacute similar ao resultado

verificado empiricamente com o plugin de Pauly [3] Os tempos gastos para

realizar as operaccedilotildees satildeo similares e o maior tempo gasto no plugin de Pauly

tambeacutem eacute para inicializaccedilatildeo de suas estruturas de dados que incluem a kd-tree

Operaccedilatildeo Nuacutemero de surfels do modelo resultado

Uniatildeo 189715

Interseccedilatildeo 72225

Diferenccedila 134552

Resultados 65

Operaccedilatildeo Criaccedilatildeo das

Octrees (seg)

Classificaccedilatildeo

(seg)

Criaccedilatildeo do

resultado (seg)

Total (seg)

Uniatildeo 39375 1324 18925 7154

Interseccedilatildeo 38585 1585 09547 63982

Diferenccedila 399875 1504 1729 729475

Tabela 3- Meacutedia dos tempos de processamento para as operaccedilotildees com duas Igeas

Com o objetivo de expor melhor os resultados deste trabalho

apresentamos abaixo mais um teste das operaccedilotildees booleanas usando o nosso

plugin Os modelos usados para este segundo teste satildeo o Max Planck e o Male

ambos modelos soacutelidos disponibilizados no PointShop Estes modelos satildeo

mostrados nas figura 33 e 34

O primeiro Max Planck conteacutem 52809 surfels

Figura 33-Modelo do PointShop MaxPlanck

O segundo modelo abaixo Male conteacutem 148138 surfels

Resultados 66

Figura 34-Modelo do PointShop Male

As Figuras 353637 mostram o resultado da operaccedilatildeo de uniatildeo interseccedilatildeo

e diferenccedila respectivamente usando os dois modelos acima Podemos observar

pela figura 35 que o resultado da operaccedilatildeo de diferenccedila neste caso gerou um

modelo resultado com trecircs partes desconexas Os nuacutemeros de surfels de cada

modelo resultado satildeo mostrados na Tabela 5

Figura 35- Resultado da Uniatildeo do modelo Male com MaxPlanck

Resultados 67

Figura 36-Resultado da interseccedilatildeo do modelo Male com o MaxPlanck

Figura 37-Resultado da diferenccedila do modelo Male do modelo MaxPlanck

As meacutedias de tempos de processamento foram calculadas da mesma

forma que o primeiro teste com o modelo Igea acima apresentado Os

resultados satildeo mostrados na Tabela 4 Podemos observar que este teste

Resultados 68

apresenta tempos um pouco menores que o teste com o modelo Igea Isto se

deve ao fato de que o modelo MaxPlanck ser significativamente menor que o

modelo Igea MaxPlanck possui 52809 surfels e Igea conteacutem 134345 surfels

Operaccedilatildeo Criaccedilatildeo das

Octrees (seg)

Classificaccedilatildeo

(seg)

Criaccedilatildeo do

resultado (seg)

Total

(seg)

Uniatildeo 3012 1254 102 5285

Interseccedilatildeo 2985 0901 0861 4747

Diferenccedila 2965 0911 0791 4667

Tabela 4-Tempo de processamento das operaccedilotildees com os modelos MaxPlanck e Male

Operaccedilatildeo Nuacutemero de surfels do resultado

Uniatildeo 126532

Interseccedilatildeo 88414

Diferenccedila 77635

Tabela 5-Nuacutemero de surfels dos modelos resultados das operaccedilotildees com os modelos MaxPlanck e Male

Em seguida apresentaremos uma comparaccedilatildeo entre o nosso plugin e o

plugin de Pauly[3] e tambeacutem uma comparaccedilatildeo entre o meacutetodo de Adams e Dutreacute

[2] e o meacutetodo de Pauly [3]

62 Comparaccedilatildeo entre os dois meacutetodos que realizam operaccedilotildees booleanas

A comparaccedilatildeo entre os meacutetodos de Pauly[3] e de Adams e Dutreacute foi feita

em termos de tempo de processamento e em termos conceituais Em termos de

tempo de processamento comparamos o plugin de Pauly[3] com o nosso plugin

Em termos de tempo de processamento verifica-se empiricamente que os

dois meacutetodos apresentam tempos bastante similares Entretanto o tempo de

processamento do algoritmo aqui implementado ainda pode ser melhorado com

Resultados 69

o uso do meacutetodo TINN [19] que foi proposto em Adams[2] - para otimizar a

pesquisa do surfel mais proacuteximo a um ponto que estaacute localizado na regiatildeo de um

noacute que conteacutem surfels - veja seccedilatildeo 42 O uso deste meacutetodo natildeo foi

implementado para este trabalho e a sua implementaccedilatildeo melhoraria o tempo de

resposta do algoritmo Aleacutem disso o trabalho de Sara F Frisken [12] citado no

capiacutetulo 2 apresenta uma otimizaccedilatildeo no uso de octrees que pode ser

incorporada no algoritmo implementado neste trabalho

Em termos conceituais vamos fazer a comparaccedilatildeo do uso do que

chamamos aqui de Regra 2 do tratamento de interseccedilatildeo e do tratamento de

ldquoarestas vivasrdquo

Como vimos na seccedilatildeo 41 tanto o algoritmo implementado nesta

dissertaccedilatildeo baseado no trabalho de Adams e Dutreacute como o meacutetodo de Pauly

[3] parte do que chamamos aqui de Regra 2 para realizar operaccedilotildees booleanas

com pontos Mas cada um destes meacutetodos daacute um tratamento diferente para o

uso desta regra

O meacutetodo de Pauly usa a Regra 2 para classificaccedilatildeo de cada ponto ou de

cada surfel Para classificar um surfel de B sb como dentro ou fora de A eacute

encontrado o surfel de A sa mais proacuteximo a sb e sb eacute classificado a partir de sa

Para encontrar sa Pauly utiliza uma kd-tree Como esta pesquisa para encontrar

sa eacute cara (mesmo usando uma kd-tree) Pauly utiliza uma esfera que conteacutem

pontos com a mesma classificaccedilatildeo (seccedilatildeo 432) e diminui em 90 este nuacutemero

de pesquisas Pauly utiliza tambeacutem a representaccedilatildeo impliacutecita MLS (Moving Least

Squares) para casos em que a Regra 2 poderia falhar e para tratamento de

interseccedilotildees Entretanto o nuacutemero destes casos em que a Regra 2 poderia falhar

eacute muito pequeno E a representaccedilatildeo MLS natildeo eacute uma estrutura simples de ser

implementada Portanto natildeo encontramos vantagens em usar MLS para estes

casos O meacutetodo de Adams e Dutreacute natildeo trata estes casos e na praacutetica

apresenta resultados bastante satisfatoacuterios como foi mostrado Portanto

consideramos que valeria a pena fazer algum tratamento especial para estes

casos se fosse um procedimento simples Para a execuccedilatildeo do algoritmo de

Pauly o uso de MLS natildeo interfere significativamente porque a construccedilatildeo desta

representaccedilatildeo natildeo eacute feita somente para realizar operaccedilotildees booleanas Os testes

empiacutericos que fizemos com o algoritmo de Pauly natildeo incluem a construccedilatildeo desta

representaccedilatildeo

Aparentemente os dois algoritmos satildeo bastante parecidos um usa octrees

e o outro usa kd-tree As duas estruturas de dados satildeo simples e otimizam a

classificaccedilatildeo dos surfels de um modelo como dentro ou fora do outro modelo

Resultados 70

Mas existe uma diferenccedila conceitual entre dois que merece ser destacada O

algoritmo aqui implementado usa a Regra 2 para classificaccedilatildeo dos noacutes de uma

octree e armazena esta octree classificada (ver capiacutetulo 5) Assim na maioria dos

casos natildeo seraacute necessaacuterio encontrar o surfel mais proacuteximo para classificar um

ponto (ou um surfel) como fora ou dentro de um modelo Caso o ponto esteja em

uma aacuterea da octree classificada ele teraacute a classificaccedilatildeo dada agravequela aacuterea A

pesquisa ao surfel mais proacuteximo seraacute feita apenas nos casos em que o ponto a

ser classificado estaacute localizado entre os planos que subdividem um noacute cheio

O uso desta octree classificada levanta uma questatildeo que natildeo foi citada no

trabalho de Adams e Dutreacute que eacute a proximidade desta estrutura (armazenada)

de octree classificada com uma representaccedilatildeo volumeacutetrica do objeto Sendo

assim esta estrutura pode ser aproveitada para outras funccedilotildees aleacutem da

classificaccedilatildeo dos surfels Por exemplo podemos ter uma aproximaccedilatildeo do

volume de uma cena somando os volumes aproximados dos modelos que a

compotildeem Como o enfoque deste trabalho eacute operaccedilatildeo booleana natildeo vamos nos

aprofundar nesta questatildeo

Outra importante diferenccedila entre os dois trabalhos que jaacute foi explicada na

seccedilatildeo 432 eacute que o meacutetodo de Pauly aplica-se a modelos soacutelidos ou natildeo

soacutelidos enquanto que o meacutetodo de Adams e Dutreacute aplica-se somente a modelos

soacutelidos

Quanto ao tratamento de interseccedilatildeo em termos de visualizaccedilatildeo todos os

dois resolvem bem o problema O tratamento de interseccedilatildeo nos dois trabalhos

tambeacutem resolve o problema da validade da Regra 2 (ver seccedilatildeo 44) Entretanto

o tratamento de Adams e Dutreacute natildeo depende da renderizaccedilatildeo sendo portanto

mais portaacutevel Aleacutem disso uma desvantagem do meacutetodo de Pauly eacute o uso da

representaccedilatildeo impliacutecita MLS (ldquoMoving Least Squaresrdquo) do objeto para obter os

pontos exatamente na curva de interseccedilatildeo Esta representaccedilatildeo torna o

tratamento de interseccedilatildeo mais complexo e a vantagem apresentada natildeo eacute tatildeo

significativa para este tratamento de interseccedilatildeo

Conclusatildeo 71

7 Conclusatildeo

Concluiacutemos entatildeo que as escolhas de Adams e Dutreacute por usar uma

octree classificada e pelo tratamento dado agrave interseccedilatildeo satildeo mais abrangentes

que a escolha de Pauly E consideramos que quanto mais abrangente for uma

escolha conceitual mais resultados poderemos tirar dela No caso de Adams e

Dutreacute eles estendem o problema de classificar um ponto para classificar todo o

modelo Como foi citado ele quase fornece uma representaccedilatildeo volumeacutetrica do

modelo Esta aproximada representaccedilatildeo volumeacutetrica pode nos fornecer outras

informaccedilotildees como por exemplo o volume aproximado do modelo

Aleacutem disso o uso da representaccedilatildeo impliacutecita MLS no meacutetodo de Pauly cria

uma complexidade a mais para o meacutetodo sem apresentar vantagens para a

realizaccedilatildeo de operaccedilotildees booleanas que eacute o nosso enfoque

Logo podemos dizer que o meacutetodo de Adams e Dutreacute apresenta as

seguintes vantagens em relaccedilatildeo ao de Pauly

- a estrutura de octree classificada aleacutem de ser usada para classificaccedilatildeo

fornece informaccedilotildees adicionais como volume aproximado do objeto

- o tempo de processamento no meacutetodo de Adams e Dutreacute tende a ser

melhor que no meacutetodo de Pauly se implementadas as melhorias acima citadas e

se colocaacutessemos em consideraccedilatildeo o uso da representaccedilatildeo impliacutecita MLS

(Moving Least Squares)

- o tratamento de interseccedilatildeo de Adams e Dutreacute apresenta a vantagem da

portabilidade ou seja iraacute funcionar independente do algoritmo de renderizaccedilatildeo

utilizado

E as vantagens do meacutetodo de Pauly em relaccedilatildeo ao de Adams e Dutreacute

- a colocaccedilatildeo de surfels exatamente na curva de interseccedilatildeo

- a possibilidade de trabalhar com modelos soacutelidos ou natildeo soacutelidos

E finalizando concluiacutemos que o estudo relatado nesta dissertaccedilatildeo foi

importante por

- fornecer um breve estudo sobre modelagem por pontos uma nova e

promissora aacuterea dentro da computaccedilatildeo graacutefica

Conclusatildeo 72

- por apresentar uma avaliaccedilatildeo dos dois trabalhos existentes sobre

operaccedilotildees booleanas com pontos encontrando as vantagens de cada um

e levantando questotildees que natildeo tinham sido citadas nos trabalhos originais

- por propor e implementar melhorias ao trabalho de Adams e Dutreacute

71 Trabalhos Futuros

Nossa implementaccedilatildeo pode ser ainda evoluiacuteda com as propostas

apresentadas na seccedilatildeo 62 Como observamos o tempo de processamento do

algoritmo aqui implementado ainda pode ser melhorado com o uso do meacutetodo

TINN [19] - que foi proposto em Adams[2] - para otimizar a pesquisa do surfel

mais proacuteximo a um ponto que estaacute localizado na regiatildeo de um noacute que conteacutem

surfels Aleacutem disso o trabalho Simple and Efficient Trasversal Methods for

Quadtrees and Octrees de Sara F Frisken [12] citado no capiacutetulo 2 apresenta

uma otimizaccedilatildeo no uso de octrees Outra proposta para melhorar o tempo de

processamento do algoritmo aqui implementado eacute usar a forma de trabalhar com

octrees apresentada neste trabalho

O trabalho de Adams e Dutreacute [2] eacute aplicado apenas a objetos soacutelidos O

nosso plugin portanto aplica-se somente a este tipo de objeto Jaacute o trabalho de

Pauly[3] eacute aplicado tambeacutem a modelos natildeo soacutelidos Apresentamos como

proposta a um trabalho futuro a extensatildeo do algoritmo aqui implementado para

modelos natildeo soacutelidos O surfel pode conter uma informaccedilatildeo adicional que indica

se ele estaacute delimitando um volume ou natildeo Assim pode-se ter um modelo com

ldquopartes soacutelidasrdquo e ldquopartes natildeo soacutelidasrdquo Por exemplo a uniatildeo de um plano com

uma esfera poderia resultar numa esfera com ldquoabasrdquo (seriam as partes do plano

que estariam fora da esfera) O modelo resultado teria uma parte correspondente

a um espaccedilo 3D (esfera) e outra parte que seria uma superfiacutecie 2D posicionada

no espaccedilo 3D sem delimitar algum volume (abas)

Muitos trabalhos podem ser desenvolvidos aplicando-se o modelo por

pontos em animaccedilatildeo jogos visualizaccedilatildeo de terrenos criaccedilatildeo de protoacutetipos etc

considerando-se a eficiecircncia e simplicidade do modelo E mais especificamente

as operaccedilotildees booleanas com pontos podem ser aplicadas para criaccedilatildeo de

cenaacuterios testes de colisotildees e nestes casos a representaccedilatildeo usando octrees

pode ser mais explorada considerando-se o seu potencial de representaccedilatildeo

volumeacutetrica de um objeto

Referecircncias Bibliograacuteficas 73

8 Referecircncias Bibliograacuteficas

[1] MAumlNTYLAuml M An Introduction to Solid Modeling Computer Science Press 1988

[2] ADAMS B DUTREacute P Interactive Boolean Operations on Surfel-

Bounded Solids Proceedings of SIGGRAPH 2003 San Diego USA 2003

[3] PAULY M KEISER R KOBBELT L GROSS M Shape Modeling

with Point-Sampled Geometry SIGGRAPH 2003 Computer Graphics

Proceedings Annual Conference Series ACM Press ACM SIGGRAPH 2003

[4] LEVOY M WHITTED T The Use of Points as Display Primitives

Technical Report TR 85-022 The University of North Carolina at Chapel Hill

Department of Computer Science 1985

[5] PFISTER H ZWICKER M VAN BAAR J GROSS M 2000 Surfels

Surface Elements as Rendering Primitives SIGGRAPH 2000 pp 335ndash342 New

Orleans LA July 23-28 2000

[6] ZWICKER M PFISTER H VAN BAAR J GROSS M Surface

Splatting SIGGRAPH 2001

[7] PAULY M KOBBELT L GROSS M Multiresolution Modeling of

Point-Sampled Geometry CS Techinical Report 378 September 16 2002

[8] CURLESS B New Methods for Surface Reconstruction from Range Images PhD thesis Stanford University 1997

[9] RUSINKIEWICZ S Real-time Acquisition and Rendering of Large 3D Models PhD thesis Stanford University 2001

Referecircncias Bibliograacuteficas 74

[10] AMENTA N BERN M KAMVYSSELIS M A new Voronoi-Based

Surface Reconstruction Algorithm SIGGRAPH 98 Conference proceedings pp

415-421 New York 1998

[11] ZWICKER M PAULY M KNOLL O GROSS M Pointshop 3D an

Interactive System for Point-Based Surface Editing Proceedings of SIGGRAPH 2002 San Antonio TX July 2002

[12] FRISKEN S PERRY R Simple and Efficient Traversal Methods for

Quadtrees and Octrees Journal of Graphics Tools Vol 7 Issue 3 May 2003

[13] CORREcircA W T OLIVEIRA M M Silva C T Wang J

Modeling and Rendering of Real Environments

Revista de Informaacutetica Teoacuterica e Aplicada (Brazilian Journal of Theoretic and Applied Computing) 9(2)127-156 2002

[14] DAVIS J MARSCHNER S GARR M LEVOY M Filling Holes in

Complex Surfaces Using Volumetric Diffusion First International Symposium on 3D Data Processing Visualization Transmission June 2002

[15] RAumlSAumlNEN J Surface Splatting Theory Extensions and Implementation Masterrsquos Thesis Dept of Computer Science Helsinki

University of Technology May 28 2002

[16] PAULY M Point Primitives for Interactive Modeling and Processing of 3D Geometry PhD thesis Federal Institute of Technology (ETH)

of Zurich 2003

[17] HOPPE H DEROSE T DUCHAMP T MCDONALD J

STUELZLE W Surface Reconstruction from Unorganized Points Computer Graphics 26(2)71ndash78 July 1992

[18] ALEXA M BEHR J COHEN-OR D FLEISHMAN S LEVIN D

SILVA C T Point Set Surfaces IEEE Visualization 2001 pp 21ndash28 October

2001

Referecircncias Bibliograacuteficas 75

[19] GREENSPAN M GODIN G TALBOT J Acceleration of Binning

Nearest Neighbor Methods Proceedings of Vision Interface 2000 pp 337-

344

[20] MENCL R Reconstruction of Surfaces from Unorganized Three-Dimensional Point Clouds Dissertation Dortmund Univ 2001

[21] KRIVANEK J Representing and Rendering Surfaces With Points

httpciteseernjneccomkrivanek03representinghtml Acesso em 30 jul

2003

[22] KRISTJANSSON ET AL Approximate Boolean Operations on Free-

form Solids Proceedings of SIGGRAPH 01 2001

Operaccedilotildees Booleanas com Pontos 43

(a) (b)

(c)

Figura 14 (a) Suponhamos a reta que eacute a interseccedilatildeo do plano tangente a S1 em q1 e o

plano tangente a S2 em q2 O ponto r eacute o ponto desta reta que estaacute mais proacuteximo a q1 e

q2 (b) r eacute projetado sobre S1 e S2 obtendo-se q1acute e q2acute dois novos pontos de partida

para nova iteraccedilatildeo (c) A nova iteraccedilatildeo gera r que eacute uma aproximaccedilatildeo melhor de q

Pauly faz o tratamento de arestas vivas em tempo de renderizaccedilatildeo Ele

faz uma alteraccedilatildeo no renderizador Marca os surfels de interseccedilatildeo e ao

renderizaacute-los satildeo cortados para gerar uma aresta viva

44 Validade da Regra 2

Os dois meacutetodos analisados nesta dissertaccedilatildeo utilizam a seguinte regra

para a classificaccedilatildeo de um surfel

Regra 2 dado um volume V determinado por uma superfiacutecie de contorno

S uma amostragem P da superfiacutecie S um ponto x qualquer um ponto p є P que

eacute a amostra mais proacutexima a x um vetor ny normal a S em p e orientado para

fora de S temos que (x ndash p) np gt 0 x notinV

Em [16] eacute colocado que esta regra eacute tirada da seguinte propriedade da

geometria diferencial (aqui chamada Propriedade 1)

Propriedade 1 Dado um volume V determinado por uma superfiacutecie de

contorno S contiacutenua e duplamente diferenciaacutevel um ponto x qualquer um ponto

Operaccedilotildees Booleanas com Pontos 44

y є S que eacute o ponto de S mais proacuteximo a x um vetor ny normal a S em y e

orientado para fora de S temos que (x ndash y) ny gt 0 x notinV

A Figura 15 ilustra esta propriedade

Figura 15 Para verificar se o ponto x estaacute fora de um contorno C encontra-se o ponto y

de C Se o produto interno entre a normal em y e o vetor que liga y a x for maior que

zero entatildeo x estaacute fora de C senatildeo estaacute dentro de C

Pauly assume que tendo uma amostragem P da superfiacutecie S podemos

usar a Propriedade 1 substituindo y por p o surfel mais proacuteximo ao ponto x (x ndash

p) np gt 0 x notinV (Regra 2) Esta amostragem P em seu trabalho eacute

(aproximadamente) uma ldquoamostragem adequadardquo Tambeacutem seu tratamento de

interseccedilatildeo cria uma aproximaccedilatildeo dela (seccedilatildeo 43) Empiricamente a

ldquodiscretizaccedilatildeo da propriedaderdquo eacute vaacutelida a partir desta suposiccedilatildeo Mas isso natildeo foi

demonstrado teoricamente em seu trabalho

Pauly coloca em [16] que natildeo existe ainda uma teoria matemaacutetica rigorosa

de amostragem anaacuteloga a teoria de Fourier para superfiacutecies discretas

A melhor aproximaccedilatildeo teoacuterica para esta aacuterea eacute o uso do Eixo Medial que

foi colocado em [10] Vamos descrever este trabalho brevemente nesta seccedilatildeo

Este trabalho apresenta um algoritmo de reconstruccedilatildeo de superfiacutecie que parte de

uma amostragem adequada (abaixo definida) de pontos e obteacutem uma malha

que eacute topologicamente equivalente agrave superfiacutecie do objeto e agrave medida que a

densidade da amostragem cresce a saiacuteda converge para esta superfiacutecie

Para definir amostragem adequada o trabalho parte do conceito de Eixo

Medial

Operaccedilotildees Booleanas com Pontos 45

ldquoEixo Medialrdquo de uma superfiacutecie 2D posicionada no R3 eacute o conjunto

(fechado) de pontos pi para os quais buscando-se o ponto da superfiacutecie que

estaacute mais proacuteximo a pi mais de um ponto pertencentes a esta superfiacutecie satildeo

encontrados A Figura 16 abaixo ilustra o Eixo Medial em 2D

Figura 16 [10] As curvas de cor mais clara satildeo o Eixo Medial da curva em preto

Em duas dimensotildees os veacutertices de Voronoi de uma amostragem densa

aproximam o ldquoEixo Medialrdquo da amostragem (mas esta propriedade natildeo se

estende a 3D) A Figura 17 mostra o Eixo Medial em 3D

Figura 17 [10] Em 3D geralmente o Eixo Medial eacute uma superfiacutecie 2D (em cor mais

clara) Aqui o quadrado eacute o Eixo Medial da superfiacutecie transparente que o contorna

Podemos definir agora a amostragem adequada da seguinte forma

Supondo uma superfiacutecie suave que quer dizer uma 2-manifold duplamente

diferenciaacutevel posicionada no R3 uma ldquoamostragem adequadardquo desta superfiacutecie eacute

aquela na qual a densidade da amostragem eacute (pelo menos) inversamente

proporcional agrave distacircncia ao ldquoEixo Medialrdquo A Figura 18 mostra uma amostragem

adequada

Operaccedilotildees Booleanas com Pontos 46

Figura 18 [10] A figura mostra o diagrama de Voronoi de uma amostragem de pontos S

Da mesma forma que o a amostragem aproxima a curva os veacutertices de Voronoi

aproximam o Eixo Medial

Na praacutetica na reconstruccedilatildeo da superfiacutecie uma aproximaccedilatildeo deste ldquoEixo

Medialrdquo eacute computada (devido agrave dificuldade de computaacute-lo exatamente e em

alguns casos ateacute impossibilidade)

Melhorias Propostas 47

5 Melhorias Propostas

No capiacutetulo 4 apresentamos dois meacutetodos que realizam operaccedilotildees

booleanas em modelos por pontos o meacutetodo de Adams e Dutreacute [2] e o meacutetodo

de Pauly[3] Para esta dissertaccedilatildeo usamos o meacutetodo de Adams e Dutreacute [2] e

propomos as seguintes melhorias

- Alteramos o momento em que eacute feita a classificaccedilatildeo da octree Fazemos

esta classificaccedilatildeo durante a sua criaccedilatildeo Os noacutes filhos de um noacute pai P qualquer

satildeo classificados logo apoacutes a criaccedilatildeo de todos estes filhos de P

independentemente do restante da octree ter sido criada Isso pode ser feito

porque a octree eacute construiacuteda na ordem raiz-esquerda-direita (preorder

traversal) e portanto apoacutes todos os filhos de um noacute pai serem criados a parte

necessaacuteria da octree para a classificaccedilatildeo destes filhos jaacute estaacute criada

- A classificaccedilatildeo da octree eacute otimizada classificando-se os cantos dos seus

noacutes como dentro ou fora do modelo Na classificaccedilatildeo de um noacute n1 a partir de seu

vizinho n2 se os cantos que satildeo comuns a n1 e n2 tiverem a mesma

classificaccedilatildeo esta seraacute dada ao noacute Assim diminuiacutemos o nuacutemero de pesquisas

pelo surfel mais proacuteximo que eacute a parte criacutetica da classificaccedilatildeo dos noacutes da octree

em termos de tempo de processamento

- Acrescentamos um valor miacutenimo (maior que zero) para o nuacutemero de

surfels contidos em um noacute que eacute uma das condiccedilotildees de parada na criaccedilatildeo da

octree Verificamos que desta forma diminui-se a chance de erro na classificaccedilatildeo

de partes criacuteticas como ldquoarestas vivasrdquo

Uma comparaccedilatildeo entre a nossa implementaccedilatildeo e a de Pauly tambeacutem seraacute

feita no capiacutetulo 6

51 Descriccedilatildeo do algoritmo

O algoritmo implementado para esta dissertaccedilatildeo baseado no meacutetodo de

Adams e Dutreacute [2] pode ser dividido nas seguintes partes Criaccedilatildeo e

classificaccedilatildeo de uma octree para cada modelo Teste DentroFora Criaccedilatildeo do

modelo resultado Natildeo foi implementado tratamento especial algum de

interseccedilatildeo para o nosso plugin As proacuteximas seccedilotildees apresentam estas partes

Melhorias Propostas 48

511 Criaccedilatildeo e classificaccedilatildeo de uma octree para cada modelo

As ideacuteias do algoritmo satildeo aqui ilustradas em 2D mas a extensatildeo delas

para 3D eacute feita facilmente

Para cada modelo a octree eacute criada e classificada da seguinte forma

Figura 19-Quadtree classificada Os noacutes mais escuros estatildeo fora do modelo os mais claros dentro e os em tom intermediaacuterio satildeo noacutes de contorno

Gera-se uma ldquocaixa envolventerdquo do modelo contendo todos os surfels e

cria-se o noacute raiz da octree que corresponde a esta ldquocaixa envolventerdquo Este noacute

raiz eacute subdividido em oito filhos e seus surfels satildeo distribuiacutedos entre eles Ao

inveacutes de testarmos os valores de xy e z para cada surfel a fim de determinar

para qual filho ele iraacute utilizamos listas auxiliares Primeiro os surfels satildeo

subdivididos em dois grupos pelos valores de x e armazenados em uma lista

auxiliar Em seguida cada uma das listas eacute subdividida pelo valor de y e as

quatro listas obtidas seratildeo subdivididas pelo valor de z Ao final teremos 8 listas

de surfels cada uma delas pertencente a um filho

Cada noacute seraacute entatildeo novamente subdividido enquanto contiver um nuacutemero

de surfels gt nmin (valor preacute-definido) ou enquanto a profundidade da aacutervore lt pmax

(valor preacute-definido) Na figura 19 pmax = 3 e nmin = 3

Melhorias Propostas 49

Figura 20-O noacute cheio eacute dividido em trecircs partes agrave esquerda a regiatildeo estaacute dentro do modelo agrave direita estaacute fora e entre as duas linhas que dividem o noacute estaacute a regiatildeo que conteacutem os surfels

Os noacutes cheios recebem um tratamento especial Eles satildeo subdivididos em

trecircs partes da seguinte forma uma que estaacute fora do modelo outra que estaacute

dentro e uma que conteacutem os surfels Esta subdivisatildeo eacute feita por meio da criaccedilatildeo

de dois planos paralelos que dividem o noacute Para determinar estes planos

calcula-se o vetor nm igual agrave meacutedia das normais dos surfels do noacute nm = sum ns

sum ns onde ns eacute a normal de cada surfel do noacute Em seguida encontra-se o

surfel com maior produto interno entre a sua normal e a normal meacutedia

d1=Max(nm ٠ ns) Este surfel juntamente com a normal meacutedia define um dos

planos Encontra-se tambeacutem o surfel com menor produto interno entre a sua

normal e a normal meacutedia d2=Min (nm ٠ ns) Este surfel juntamente com a normal

meacutedia define o outro plano (Figura 20) Se o noacute conteacutem surfels de superfiacutecies de

orientaccedilotildees diferentes ele natildeo seraacute subdividido ou seja os planos coincidiratildeo

com os planos que delimitam o proacuteprio noacute Este teste foi implementado da

seguinte forma escolhe-se um surfel qualquer do noacute Calcula-se o produto

interno entre a normal deste surfel e as outras normais dos outros surfels deste

noacute Se algum produto interno for menor que zero este noacute natildeo seraacute subdividido

Apoacutes a etapa de subdivisatildeo classificam-se os oito cantos deste noacute como

dentro ou fora do modelo por meio da classificaccedilatildeo de um ponto que

descreveremos na sub-seccedilatildeo 5111

Melhorias Propostas 50

a b

c d

Figura 21-O noacute a eacute classificado pelo noacute c o noacute d tambeacutem eacute classificado pelo noacute c a classificaccedilatildeo do noacute a eacute propagada para o noacute b

Jaacute os noacutes vazios da octree seratildeo classificados como ldquodentrordquo ou ldquoforardquo do

modelo da seguinte forma cada noacute folha vazio eacute classificado a partir de um de

seus irmatildeos vizinhos adjacentes Se ele possuir um vizinho adjacente cheio ele

seraacute classificado por este vizinho se natildeo possuir os vizinhos adjacentes seratildeo

classificados primeiro e ele teraacute esta mesma classificaccedilatildeo (Figura 21) Como tem

que existir sempre pelo menos um noacute cheio entre os filhos de um noacute pai entatildeo

sempre esta classificaccedilatildeo poderaacute ser feita Com a classificaccedilatildeo de todos os

filhos tem-se tambeacutem a classificaccedilatildeo dos cantos do noacute pai

Mf03c003fmx a b

Figura 22-Os cantos a e b do noacute cheio possuem a mesma classificaccedilatildeo fora do modelo Esta classificaccedilatildeo foi dada ao noacute vazio adjacente

Melhorias Propostas 51

Para classificar um noacute vazio por meio de um noacute cheio verificam-se os

cantos comuns destes dois noacutes se todos os cantos tiverem a mesma

classificaccedilatildeo esta seraacute dada ao noacute vazio (Figura 22) Se houver classificaccedilotildees

diferentes escolhe-se o surfel do noacute cheio mais proacuteximo ao noacute vazio faz-se o

produto interno entre a normal deste surfel e o vetor que liga o centro do noacute

cheio ao centro do noacute vazio (ou o vetor que liga o surfel ao centro do noacute vazio)

Se o produto interno for maior que zero o noacute eacute classificado como ldquoforardquo senatildeo eacute

classificado como ldquodentrordquo Para encontrar o surfel (pertencente a um noacute cheio)

mais proacuteximo ao noacute vazio existem dois casos

- O noacute cheio eacute folha percorre-se toda a lista de surfels e escolhe o surfel

mais proacuteximo da fronteira entre o noacute cheio e o vazio

- O noacute cheio natildeo eacute um noacute folha percorrem-se os filhos do noacute cheio ou seja

esta pesquisa eacute feita descendo na octree a partir do noacute cheio procurando o

surfel mais proacuteximo agrave fronteira do pai com o noacute vazio a ser classificado

Classificando o centro do noacute vazio todo o noacute deve ter a mesma

classificaccedilatildeo pois este noacute natildeo conteacutem surfels Para encontrar o surfel do noacute

vazio mais proacuteximo da fronteira entre o noacute cheio e o vazio basta testar o valor da

coordenada se a fronteira eacute o lado direito do noacute cheio escolhe-se o surfel com

maior coordenada lsquoxrsquo se eacute o lado esquerdo escolhe-se o surfel com menor lsquoxrsquo

se lado superior surfel com maior lsquoyrsquo etc A seguir apresentamos a classificaccedilatildeo

de um ponto qualquer pertencente a um noacute cheio

Figura 23- Quadtree classificada

Melhorias Propostas 52

5111 Classificaccedilatildeo de um ponto de um noacute cheio

Figura 24 [2] A normal n eacute a normal meacutedia e os surfels s1 e s2 juntamente com a normal

n definem as retas que dividem o noacute O ponto a estaacute fora do modelo e o ponto b estaacute

dentro do modelo

Para um ponto localizado dentro do noacute faz-se o seguinte teste se o noacute foi

dividido testa-se de acordo com a divisatildeo do noacute se o ponto estaacute na parte do noacute

que estaacute dentro do modelo ele eacute classificado como ldquodentrordquo se o ponto estaacute na

parte que estaacute fora do modelo ele eacute classificado como ldquoforardquo (Figura 24) se o

ponto estaacute na parte que conteacutem os surfels encontra-se o surfel s pertencente ao

noacute mais proacuteximo do ponto e o classifica de acordo com s seja ns a normal em s

cs a coordenada de s cp a coordenada do ponto Se (cp - cs )٠ ns gt 0 o ponto

seraacute classificado como ldquoforardquo Senatildeo seraacute classificado como ldquodentrordquo

Se o noacute natildeo foi dividido em planos esta classificaccedilatildeo a partir do surfel

mais proacuteximo seraacute sempre feita

512 Teste DentroFora

Melhorias Propostas 53

Figura 25-Duas circunferecircncias e suas quadtrees correspondentes

O Teste DentroFora classifica os surfels de um modelo como dentro ou

fora de outro modelo ou na sua interseccedilatildeo Este teste foi aqui implementado

exatamente como foi proposto em Adams e Dutreacute [2] exceto que natildeo foi

implementado o meacutetodo TINN - Triangle Inequality Nearest Neighbour [19]

Cada octree eacute percorrida verificando-se se os seus noacutes ou surfels estatildeo dentro

fora ou no contorno do outro modelo (Figura 25) Sejam A e B duas octrees e

queremos classificar a octree A As duas octrees (AB) satildeo percorridas partindo

da raiz

Para cada noacute de A existem quatro casos (Figura 26) Para testar estas

situaccedilotildees os boxes dos noacutes satildeo aumentados de rmax o raio do maior surfel do

modelo Isto eacute feito para compensar o fato de que o surfel natildeo eacute apenas um

ponto mas sim considerado como um disco

Os quatro casos satildeo

Se o noacute de A natildeo intersecta B entatildeo todos os surfels deste noacute satildeo

classificados como fora

Se o noacute de A intersecta apenas noacutes de B que estatildeo fora do modelo

todos os surfels deste noacute satildeo fora

Se o noacute de A intersecta apenas noacutes de B que estatildeo dentro do modelo

todos os surfels deste noacute satildeo dentro

Melhorias Propostas 54

Se o noacute de A intersecta noacutes de B que estatildeo dentro e tambeacutem noacutes de B

que estatildeo fora testa-se se este noacute de A eacute ou natildeo folha Se natildeo for folha

percorre-se os filhos deste noacute de A ateacute encontrar um noacute folha cheio que

intersecta B Para cada surfel sa deste noacute folha de A encontra-se o surfel de B

mais proacuteximo e classifica-se a coordenada de sa da forma apresentada na seccedilatildeo

5111 Seja sb o surfel usado na classificaccedilatildeo de sa Se os discos de sb e sa

se intersectam sa eacute classificado como ldquointerseccedilatildeordquo

(a) (b)

(c) (d)

Figura 26- a modelos natildeo se intersectam b modelo intersecta noacutes fora c modelo intersecta apenas noacutes dentro d modelo intersecta noacutes dentro e noacutes fora

513 Criaccedilatildeo do modelo resultado

Um novo modelo eacute criado com os seguintes surfels (de acordo com a

operaccedilatildeo booleana escolhida pelo usuaacuterio - veja Regra 1 da seccedilatildeo 41)

Uniatildeo - surfels de A que estatildeo fora de B + surfels de B que estatildeo fora de A

Melhorias Propostas 55

Interseccedilatildeo - surfels de A que estatildeo dentro de B + surfels de B que estatildeo

dentro de A

Diferenccedila A-B - surfels de A que estatildeo fora de B + surfels de B que estatildeo

dentro de A (com orientaccedilatildeo invertida)

Como natildeo foi implementado tratamento especial algum de interseccedilatildeo para

o nosso plugin os surfels que se intersectam satildeo mantidos no modelo resultado

final sem modificaccedilotildees

Descrito o algoritmo vejamos a seguir a sua implementaccedilatildeo

52 Implementaccedilatildeo

Este algoritmo foi implementado na forma de um plugin para o software

PointShop 3D [11] Este plugin foi desenvolvido na linguagem C e no sistema

operacional Windows

A escolha deste tipo de implementaccedilatildeo permitiu-nos usar o software

PointShop para os testes do algoritmo Estes testes foram feitos com os modelos

disponibilizados para o PointShop [11] Nesta seccedilatildeo apresentaremos o software

PointShop e as principais estruturas de dados usadas em nosso plugin

O Pointshop eacute um software aberto com seu coacutedigo disponiacutevel e preparado

para trabalhar com plugins Eacute um software de ediccedilatildeo de modelos 3D por pontos

Ele permite aleacutem de visualizar o modelo alterar as suas caracteriacutesticas como

cor brilho e fazer mapeamento de textura iluminaccedilatildeo filtragem (Figura 27)

Melhorias Propostas 56

Figura 27-Software PointShop 3D com dois modelos carregados na sua cena

Aleacutem disso pode-se criar uma cena com vaacuterios modelos e visualizaacute-los de

qualquer ponto de vista Implementa o virtual trackball para rotacionaacute-los e

transladaacute-los Usa uma iluminaccedilatildeo simples direcional A sua arquitetura eacute

extensiacutevel permite que o usuaacuterio adicione seus proacuteprios componentes ao

sistema Possui trecircs tipos de componentes

ldquoToolsrdquo fornece funcionalidades para ediccedilatildeo interativa de superfiacutecie Satildeo

disponibilizados na ldquotoolbarrdquo

Plugins fornece funcionalidades para processar em um soacute passo

modelos ou partes deles selecionadas Satildeo disponibilizados no menu ldquoPluginsrdquo

Renderes fornece funcionalidades de display para os modelos

Para esta dissertaccedilatildeo foi escolhida a construccedilatildeo do componente Plugin

por adequar-se agrave nossa proposta e ser a mais simples de ser construiacuteda O

PointShop [11] jaacute conteacutem uma tool que executa operaccedilotildees booleanas e

deformaccedilatildeo free-form sobre os modelos carregados na cena usando o meacutetodo

de Pauly [3] apresentado no capiacutetulo 4 O nosso plugin Operaccedilotildees Booleanas

implementa o algoritmo descrito na seccedilatildeo anterior baseado na proposta de

Melhorias Propostas 57

Adams e Dutreacute [2] Uma comparaccedilatildeo entre o nosso plugin e a tool de Pauly [3] eacute

feita no capiacutetulo 6

Figura 28-Menu do PointShop com o plugin e as opccedilotildees para operaccedilotildees booleanas

Para se executar o plugin o usuaacuterio precisa carregar dois modelos na

cena do PointShop acionar o plugin informando a operaccedilatildeo que seraacute executada

O plugin executaraacute o algoritmo acima proposto e carregaraacute o resultado na cena

do Pointshop retirando os modelos anteriores

521 Estruturas de Dados

Como vimos o software PointShop [11] trabalha com modelos por pontos

Um modelo deste software descrito na seccedilatildeo 42 conteacutem todas as informaccedilotildees

que o algoritmo proposto em Bart [2] necessita Abaixo relacionamos as

Melhorias Propostas 58

principais estruturas de dados do PointShop usadas no plugin e as principais

estruturas de dados do nosso plugin

As principais classes do PointShop usadas no plugin satildeo

Classe Scene

Classe Objects

Classe SurfelColections

Classe Surfel

Classe StatusBar

Classe Transformer

A hierarquia de dados eacute a seguinte a Scene conteacutem vaacuterios Objects os

quais conteacutem SurfelColections Cada SurfelColections conteacutem Surfels que

suportam uma ou mais propriedades tais como cor difusa cor especular

Classe Scene Classe que representa uma cena que conteacutem modelos

Classe Object Um modelo eacute representado pela classe Object que

conteacutem uma SurfelCollection e as matrizes de transformaccedilatildeo para rotaccedilatildeo

escala e translaccedilatildeo Cada Object eacute identificado pelo seu nome que eacute uacutenico na

Scene O meacutetodo getUniqueName retorna um nome uacutenico Cada Object tem sua

proacutepria matriz de transformaccedilatildeo que pode ser modificada com setRotation

rotate setPosition translate setScale e scale Objects podem ser copiados com

copy Objects consiste em um conjunto de surfels os quais podem ser

recuperados pela getSurfelCollection O Object pode ser ativado com

setActiveObject e recuperado com getActiveObject

Objects podem ser adicionados ou removidos com addObject e

removeObject Os Objects podem ser obtidos pela getFirstObject e

getNextObject

Classe SurfelCollection representa o conjunto de surfels de um modelo

Cada surfelcollection consiste em um conjunto de surfels (SurfelInterface) de

tamanho obtido por getNofSurfels Os surfels podem ser recuperados com

getFirstSurfel getCurrentSurfel e getNextSurfel

A SurfelCollection conteacutem um PropertyDescriptor e uma SurfelList

A SurfelList eacute uma lista duplamente encadeada de surfels Possui os

atributos firstSurfel lastSurfel currentSurfel que satildeo ponteiros para uma

SurfelInterface nSurfels que eacute o nuacutemero de Surfels

A SurfelInterface define a API para os surfels que satildeo os menores

elementos que compotildeem um Object Podem ser considerados como pontos com

uma normal que define a orientaccedilatildeo do ciacuterculo (ou elipse) que seraacute desenhado

Melhorias Propostas 59

tatildeo logo o surfel seja renderizado Tem como atributos dois ponteiros (next e

prev) para SurfelInterface

PropertyDescriptor consiste em ateacute 32 valores descrevendo quais as

propriedades a SurfelInterface suporta

Classe Surfel classe que representa o surfel

Classe StatusBar classe que imprime mensagens na tela Os plugins

podem mandar mensagens para o usuaacuterio pela StatusBar

Mensagens texto podem ser impressas com showMessage O progresso

de uma operaccedilatildeo pode ser indicado com setProgress ou resetProgress

Classe Transformer representa a transformaccedilatildeo entre sistemas de

coordenadas Esta classe fornece meacutetodos para transformar pontos e vetores

entre os diferentes sistemas de coordenadas do Pointshop

A seguir apresentamos as principais estruturas de dados do plugin

Operaccedilotildees Booleanas

As principais estruturas de dados do plugin satildeo boundingbox tree no

lista_surfel surfel

Boundingbox conteacutem dois pontos 3D que definem uma caixa que conteacutem

o modelo um ponto com menores coordenadas xy e z e outro ponto com

maiores xyz

Tree representa a octree do modelo Cada registro conteacutem um ponteiro

para um noacute e oito ponteiros para as 8 octrees filhas

No representa um noacute da octree Conteacutem os seguintes dados

- localizaccedilatildeo do noacute que eacute o canto inferior esquerdo do noacute

- lista_surfel (preenchida apenas para noacutes folha cheios)

- quantidade de surfels do noacute

- classificaccedilatildeo do noacute como dentro fora ou contorno

- classificaccedilatildeo do noacute em relaccedilatildeo a outro modelo

- indica se o noacute eacute folha ou natildeo

- vetor que eacute a meacutedia das normais dos surfels do noacute

- ponto que eacute a meacutedia das localizaccedilotildees dos surfels do noacute

- surfel que tem (entre todos os surfels do noacute) o maior produto interno

entre a sua normal e a normal meacutedia

- surfel que tem (entre todos os surfels do noacute) o menor produto interno

entre a sua normal e a normal meacutedia

- produto interno maacuteximo e miacutenimo entre as normais dos surfels do noacute e a

normal meacutedia deste noacute

Melhorias Propostas 60

- indica se o noacute conteacutem surfels com normais em sentido oposto (produto

interno entre elas eacute menor que zero)

- classificaccedilatildeo dos oito cantos do noacute

lista_surfels lista em que cada registro conteacutem um apontador para um

surfel e um apontador para o proacuteximo registro

surfel representa o surfel da octree Conteacutem a classificaccedilatildeo em relaccedilatildeo a

outro modelo e um ponteiro para o surfel do Poinshop

Resultados 61

6 Resultados

Neste capiacutetulo apresentamos os testes realizados com o plugin para o

PointShop implementado para esta dissertaccedilatildeo a comparaccedilatildeo deste plugin com

o plugin de Pauly [3] e a comparaccedilatildeo entre o meacutetodo de Adams e Dutreacute [2] e o

meacutetodo de Pauly [3]

61 Testes

Os testes foram feitos em um PC x86 Family 6 261600 KB de RAM sem

placa graacutefica sistema operacional Windows 2000 O plugin foi implementado na

linguagem C

Os modelos usados para os testes satildeo modelos disponibilizados no

PointShop [11] Vale lembrar que o meacutetodo implementado em nosso plugin eacute

restrito a modelos soacutelidos e portanto foram usados apenas estes modelos

soacutelidos para os testes

O modelo na Figura 29 que eacute um dos modelos disponibilizados no

PointShop [11] foi usado para mostrar o resultado das operaccedilotildees realizadas

pelo plugin implementado nesta dissertaccedilatildeo O modelo Igea eacute um modelo soacutelido

que conteacutem 134345 surfels

Resultados 62

Figura 29-Modelo do PointShop Igea

Para realizar as operaccedilotildees este modelo foi carregado na cena do

PointShop duas vezes e um deles colorido de vermelho As Figuras 30 31 32

mostram o resultado da operaccedilatildeo de uniatildeo interseccedilatildeo e diferenccedila

respectivamente Os nuacutemeros de surfels dos modelos resultantes satildeo mostrados

na Tabela 2

Resultados 63

Figura 30-Resultado da uniatildeo de duas Igeas

Figura 31-Resultado da interseccedilatildeo de duas Igeas

Resultados 64

Figura 32-Resultado da diferenccedila entre duas Igeas

Tabela 2-Nuacutemero de surfels dos modelos resultantes

Observamos que o nuacutemero de surfels dos modelos resultantes estaacute

coerente com as figuras dos seus modelos

Para avaliar o tempo de processamento das operaccedilotildees foram realizados

vaacuterios testes com o objetivo de obter uma meacutedia dos tempos de realizaccedilatildeo de

cada operaccedilatildeo Tambeacutem foram armazenados os tempos da criaccedilatildeo das duas

octrees e da classificaccedilatildeo de todos os surfels dos dois objetos (como dentro ou

fora do outro modelo) Estes testes foram feitos usando o modelo Igea A meacutedia

dos tempos de processamento foi calculada e os resultados satildeo mostrados na

Tabela 3 Verificamos que o maior tempo gasto eacute para criaccedilatildeo das octrees

Verificamos tambeacutem que este resultado apresentado eacute similar ao resultado

verificado empiricamente com o plugin de Pauly [3] Os tempos gastos para

realizar as operaccedilotildees satildeo similares e o maior tempo gasto no plugin de Pauly

tambeacutem eacute para inicializaccedilatildeo de suas estruturas de dados que incluem a kd-tree

Operaccedilatildeo Nuacutemero de surfels do modelo resultado

Uniatildeo 189715

Interseccedilatildeo 72225

Diferenccedila 134552

Resultados 65

Operaccedilatildeo Criaccedilatildeo das

Octrees (seg)

Classificaccedilatildeo

(seg)

Criaccedilatildeo do

resultado (seg)

Total (seg)

Uniatildeo 39375 1324 18925 7154

Interseccedilatildeo 38585 1585 09547 63982

Diferenccedila 399875 1504 1729 729475

Tabela 3- Meacutedia dos tempos de processamento para as operaccedilotildees com duas Igeas

Com o objetivo de expor melhor os resultados deste trabalho

apresentamos abaixo mais um teste das operaccedilotildees booleanas usando o nosso

plugin Os modelos usados para este segundo teste satildeo o Max Planck e o Male

ambos modelos soacutelidos disponibilizados no PointShop Estes modelos satildeo

mostrados nas figura 33 e 34

O primeiro Max Planck conteacutem 52809 surfels

Figura 33-Modelo do PointShop MaxPlanck

O segundo modelo abaixo Male conteacutem 148138 surfels

Resultados 66

Figura 34-Modelo do PointShop Male

As Figuras 353637 mostram o resultado da operaccedilatildeo de uniatildeo interseccedilatildeo

e diferenccedila respectivamente usando os dois modelos acima Podemos observar

pela figura 35 que o resultado da operaccedilatildeo de diferenccedila neste caso gerou um

modelo resultado com trecircs partes desconexas Os nuacutemeros de surfels de cada

modelo resultado satildeo mostrados na Tabela 5

Figura 35- Resultado da Uniatildeo do modelo Male com MaxPlanck

Resultados 67

Figura 36-Resultado da interseccedilatildeo do modelo Male com o MaxPlanck

Figura 37-Resultado da diferenccedila do modelo Male do modelo MaxPlanck

As meacutedias de tempos de processamento foram calculadas da mesma

forma que o primeiro teste com o modelo Igea acima apresentado Os

resultados satildeo mostrados na Tabela 4 Podemos observar que este teste

Resultados 68

apresenta tempos um pouco menores que o teste com o modelo Igea Isto se

deve ao fato de que o modelo MaxPlanck ser significativamente menor que o

modelo Igea MaxPlanck possui 52809 surfels e Igea conteacutem 134345 surfels

Operaccedilatildeo Criaccedilatildeo das

Octrees (seg)

Classificaccedilatildeo

(seg)

Criaccedilatildeo do

resultado (seg)

Total

(seg)

Uniatildeo 3012 1254 102 5285

Interseccedilatildeo 2985 0901 0861 4747

Diferenccedila 2965 0911 0791 4667

Tabela 4-Tempo de processamento das operaccedilotildees com os modelos MaxPlanck e Male

Operaccedilatildeo Nuacutemero de surfels do resultado

Uniatildeo 126532

Interseccedilatildeo 88414

Diferenccedila 77635

Tabela 5-Nuacutemero de surfels dos modelos resultados das operaccedilotildees com os modelos MaxPlanck e Male

Em seguida apresentaremos uma comparaccedilatildeo entre o nosso plugin e o

plugin de Pauly[3] e tambeacutem uma comparaccedilatildeo entre o meacutetodo de Adams e Dutreacute

[2] e o meacutetodo de Pauly [3]

62 Comparaccedilatildeo entre os dois meacutetodos que realizam operaccedilotildees booleanas

A comparaccedilatildeo entre os meacutetodos de Pauly[3] e de Adams e Dutreacute foi feita

em termos de tempo de processamento e em termos conceituais Em termos de

tempo de processamento comparamos o plugin de Pauly[3] com o nosso plugin

Em termos de tempo de processamento verifica-se empiricamente que os

dois meacutetodos apresentam tempos bastante similares Entretanto o tempo de

processamento do algoritmo aqui implementado ainda pode ser melhorado com

Resultados 69

o uso do meacutetodo TINN [19] que foi proposto em Adams[2] - para otimizar a

pesquisa do surfel mais proacuteximo a um ponto que estaacute localizado na regiatildeo de um

noacute que conteacutem surfels - veja seccedilatildeo 42 O uso deste meacutetodo natildeo foi

implementado para este trabalho e a sua implementaccedilatildeo melhoraria o tempo de

resposta do algoritmo Aleacutem disso o trabalho de Sara F Frisken [12] citado no

capiacutetulo 2 apresenta uma otimizaccedilatildeo no uso de octrees que pode ser

incorporada no algoritmo implementado neste trabalho

Em termos conceituais vamos fazer a comparaccedilatildeo do uso do que

chamamos aqui de Regra 2 do tratamento de interseccedilatildeo e do tratamento de

ldquoarestas vivasrdquo

Como vimos na seccedilatildeo 41 tanto o algoritmo implementado nesta

dissertaccedilatildeo baseado no trabalho de Adams e Dutreacute como o meacutetodo de Pauly

[3] parte do que chamamos aqui de Regra 2 para realizar operaccedilotildees booleanas

com pontos Mas cada um destes meacutetodos daacute um tratamento diferente para o

uso desta regra

O meacutetodo de Pauly usa a Regra 2 para classificaccedilatildeo de cada ponto ou de

cada surfel Para classificar um surfel de B sb como dentro ou fora de A eacute

encontrado o surfel de A sa mais proacuteximo a sb e sb eacute classificado a partir de sa

Para encontrar sa Pauly utiliza uma kd-tree Como esta pesquisa para encontrar

sa eacute cara (mesmo usando uma kd-tree) Pauly utiliza uma esfera que conteacutem

pontos com a mesma classificaccedilatildeo (seccedilatildeo 432) e diminui em 90 este nuacutemero

de pesquisas Pauly utiliza tambeacutem a representaccedilatildeo impliacutecita MLS (Moving Least

Squares) para casos em que a Regra 2 poderia falhar e para tratamento de

interseccedilotildees Entretanto o nuacutemero destes casos em que a Regra 2 poderia falhar

eacute muito pequeno E a representaccedilatildeo MLS natildeo eacute uma estrutura simples de ser

implementada Portanto natildeo encontramos vantagens em usar MLS para estes

casos O meacutetodo de Adams e Dutreacute natildeo trata estes casos e na praacutetica

apresenta resultados bastante satisfatoacuterios como foi mostrado Portanto

consideramos que valeria a pena fazer algum tratamento especial para estes

casos se fosse um procedimento simples Para a execuccedilatildeo do algoritmo de

Pauly o uso de MLS natildeo interfere significativamente porque a construccedilatildeo desta

representaccedilatildeo natildeo eacute feita somente para realizar operaccedilotildees booleanas Os testes

empiacutericos que fizemos com o algoritmo de Pauly natildeo incluem a construccedilatildeo desta

representaccedilatildeo

Aparentemente os dois algoritmos satildeo bastante parecidos um usa octrees

e o outro usa kd-tree As duas estruturas de dados satildeo simples e otimizam a

classificaccedilatildeo dos surfels de um modelo como dentro ou fora do outro modelo

Resultados 70

Mas existe uma diferenccedila conceitual entre dois que merece ser destacada O

algoritmo aqui implementado usa a Regra 2 para classificaccedilatildeo dos noacutes de uma

octree e armazena esta octree classificada (ver capiacutetulo 5) Assim na maioria dos

casos natildeo seraacute necessaacuterio encontrar o surfel mais proacuteximo para classificar um

ponto (ou um surfel) como fora ou dentro de um modelo Caso o ponto esteja em

uma aacuterea da octree classificada ele teraacute a classificaccedilatildeo dada agravequela aacuterea A

pesquisa ao surfel mais proacuteximo seraacute feita apenas nos casos em que o ponto a

ser classificado estaacute localizado entre os planos que subdividem um noacute cheio

O uso desta octree classificada levanta uma questatildeo que natildeo foi citada no

trabalho de Adams e Dutreacute que eacute a proximidade desta estrutura (armazenada)

de octree classificada com uma representaccedilatildeo volumeacutetrica do objeto Sendo

assim esta estrutura pode ser aproveitada para outras funccedilotildees aleacutem da

classificaccedilatildeo dos surfels Por exemplo podemos ter uma aproximaccedilatildeo do

volume de uma cena somando os volumes aproximados dos modelos que a

compotildeem Como o enfoque deste trabalho eacute operaccedilatildeo booleana natildeo vamos nos

aprofundar nesta questatildeo

Outra importante diferenccedila entre os dois trabalhos que jaacute foi explicada na

seccedilatildeo 432 eacute que o meacutetodo de Pauly aplica-se a modelos soacutelidos ou natildeo

soacutelidos enquanto que o meacutetodo de Adams e Dutreacute aplica-se somente a modelos

soacutelidos

Quanto ao tratamento de interseccedilatildeo em termos de visualizaccedilatildeo todos os

dois resolvem bem o problema O tratamento de interseccedilatildeo nos dois trabalhos

tambeacutem resolve o problema da validade da Regra 2 (ver seccedilatildeo 44) Entretanto

o tratamento de Adams e Dutreacute natildeo depende da renderizaccedilatildeo sendo portanto

mais portaacutevel Aleacutem disso uma desvantagem do meacutetodo de Pauly eacute o uso da

representaccedilatildeo impliacutecita MLS (ldquoMoving Least Squaresrdquo) do objeto para obter os

pontos exatamente na curva de interseccedilatildeo Esta representaccedilatildeo torna o

tratamento de interseccedilatildeo mais complexo e a vantagem apresentada natildeo eacute tatildeo

significativa para este tratamento de interseccedilatildeo

Conclusatildeo 71

7 Conclusatildeo

Concluiacutemos entatildeo que as escolhas de Adams e Dutreacute por usar uma

octree classificada e pelo tratamento dado agrave interseccedilatildeo satildeo mais abrangentes

que a escolha de Pauly E consideramos que quanto mais abrangente for uma

escolha conceitual mais resultados poderemos tirar dela No caso de Adams e

Dutreacute eles estendem o problema de classificar um ponto para classificar todo o

modelo Como foi citado ele quase fornece uma representaccedilatildeo volumeacutetrica do

modelo Esta aproximada representaccedilatildeo volumeacutetrica pode nos fornecer outras

informaccedilotildees como por exemplo o volume aproximado do modelo

Aleacutem disso o uso da representaccedilatildeo impliacutecita MLS no meacutetodo de Pauly cria

uma complexidade a mais para o meacutetodo sem apresentar vantagens para a

realizaccedilatildeo de operaccedilotildees booleanas que eacute o nosso enfoque

Logo podemos dizer que o meacutetodo de Adams e Dutreacute apresenta as

seguintes vantagens em relaccedilatildeo ao de Pauly

- a estrutura de octree classificada aleacutem de ser usada para classificaccedilatildeo

fornece informaccedilotildees adicionais como volume aproximado do objeto

- o tempo de processamento no meacutetodo de Adams e Dutreacute tende a ser

melhor que no meacutetodo de Pauly se implementadas as melhorias acima citadas e

se colocaacutessemos em consideraccedilatildeo o uso da representaccedilatildeo impliacutecita MLS

(Moving Least Squares)

- o tratamento de interseccedilatildeo de Adams e Dutreacute apresenta a vantagem da

portabilidade ou seja iraacute funcionar independente do algoritmo de renderizaccedilatildeo

utilizado

E as vantagens do meacutetodo de Pauly em relaccedilatildeo ao de Adams e Dutreacute

- a colocaccedilatildeo de surfels exatamente na curva de interseccedilatildeo

- a possibilidade de trabalhar com modelos soacutelidos ou natildeo soacutelidos

E finalizando concluiacutemos que o estudo relatado nesta dissertaccedilatildeo foi

importante por

- fornecer um breve estudo sobre modelagem por pontos uma nova e

promissora aacuterea dentro da computaccedilatildeo graacutefica

Conclusatildeo 72

- por apresentar uma avaliaccedilatildeo dos dois trabalhos existentes sobre

operaccedilotildees booleanas com pontos encontrando as vantagens de cada um

e levantando questotildees que natildeo tinham sido citadas nos trabalhos originais

- por propor e implementar melhorias ao trabalho de Adams e Dutreacute

71 Trabalhos Futuros

Nossa implementaccedilatildeo pode ser ainda evoluiacuteda com as propostas

apresentadas na seccedilatildeo 62 Como observamos o tempo de processamento do

algoritmo aqui implementado ainda pode ser melhorado com o uso do meacutetodo

TINN [19] - que foi proposto em Adams[2] - para otimizar a pesquisa do surfel

mais proacuteximo a um ponto que estaacute localizado na regiatildeo de um noacute que conteacutem

surfels Aleacutem disso o trabalho Simple and Efficient Trasversal Methods for

Quadtrees and Octrees de Sara F Frisken [12] citado no capiacutetulo 2 apresenta

uma otimizaccedilatildeo no uso de octrees Outra proposta para melhorar o tempo de

processamento do algoritmo aqui implementado eacute usar a forma de trabalhar com

octrees apresentada neste trabalho

O trabalho de Adams e Dutreacute [2] eacute aplicado apenas a objetos soacutelidos O

nosso plugin portanto aplica-se somente a este tipo de objeto Jaacute o trabalho de

Pauly[3] eacute aplicado tambeacutem a modelos natildeo soacutelidos Apresentamos como

proposta a um trabalho futuro a extensatildeo do algoritmo aqui implementado para

modelos natildeo soacutelidos O surfel pode conter uma informaccedilatildeo adicional que indica

se ele estaacute delimitando um volume ou natildeo Assim pode-se ter um modelo com

ldquopartes soacutelidasrdquo e ldquopartes natildeo soacutelidasrdquo Por exemplo a uniatildeo de um plano com

uma esfera poderia resultar numa esfera com ldquoabasrdquo (seriam as partes do plano

que estariam fora da esfera) O modelo resultado teria uma parte correspondente

a um espaccedilo 3D (esfera) e outra parte que seria uma superfiacutecie 2D posicionada

no espaccedilo 3D sem delimitar algum volume (abas)

Muitos trabalhos podem ser desenvolvidos aplicando-se o modelo por

pontos em animaccedilatildeo jogos visualizaccedilatildeo de terrenos criaccedilatildeo de protoacutetipos etc

considerando-se a eficiecircncia e simplicidade do modelo E mais especificamente

as operaccedilotildees booleanas com pontos podem ser aplicadas para criaccedilatildeo de

cenaacuterios testes de colisotildees e nestes casos a representaccedilatildeo usando octrees

pode ser mais explorada considerando-se o seu potencial de representaccedilatildeo

volumeacutetrica de um objeto

Referecircncias Bibliograacuteficas 73

8 Referecircncias Bibliograacuteficas

[1] MAumlNTYLAuml M An Introduction to Solid Modeling Computer Science Press 1988

[2] ADAMS B DUTREacute P Interactive Boolean Operations on Surfel-

Bounded Solids Proceedings of SIGGRAPH 2003 San Diego USA 2003

[3] PAULY M KEISER R KOBBELT L GROSS M Shape Modeling

with Point-Sampled Geometry SIGGRAPH 2003 Computer Graphics

Proceedings Annual Conference Series ACM Press ACM SIGGRAPH 2003

[4] LEVOY M WHITTED T The Use of Points as Display Primitives

Technical Report TR 85-022 The University of North Carolina at Chapel Hill

Department of Computer Science 1985

[5] PFISTER H ZWICKER M VAN BAAR J GROSS M 2000 Surfels

Surface Elements as Rendering Primitives SIGGRAPH 2000 pp 335ndash342 New

Orleans LA July 23-28 2000

[6] ZWICKER M PFISTER H VAN BAAR J GROSS M Surface

Splatting SIGGRAPH 2001

[7] PAULY M KOBBELT L GROSS M Multiresolution Modeling of

Point-Sampled Geometry CS Techinical Report 378 September 16 2002

[8] CURLESS B New Methods for Surface Reconstruction from Range Images PhD thesis Stanford University 1997

[9] RUSINKIEWICZ S Real-time Acquisition and Rendering of Large 3D Models PhD thesis Stanford University 2001

Referecircncias Bibliograacuteficas 74

[10] AMENTA N BERN M KAMVYSSELIS M A new Voronoi-Based

Surface Reconstruction Algorithm SIGGRAPH 98 Conference proceedings pp

415-421 New York 1998

[11] ZWICKER M PAULY M KNOLL O GROSS M Pointshop 3D an

Interactive System for Point-Based Surface Editing Proceedings of SIGGRAPH 2002 San Antonio TX July 2002

[12] FRISKEN S PERRY R Simple and Efficient Traversal Methods for

Quadtrees and Octrees Journal of Graphics Tools Vol 7 Issue 3 May 2003

[13] CORREcircA W T OLIVEIRA M M Silva C T Wang J

Modeling and Rendering of Real Environments

Revista de Informaacutetica Teoacuterica e Aplicada (Brazilian Journal of Theoretic and Applied Computing) 9(2)127-156 2002

[14] DAVIS J MARSCHNER S GARR M LEVOY M Filling Holes in

Complex Surfaces Using Volumetric Diffusion First International Symposium on 3D Data Processing Visualization Transmission June 2002

[15] RAumlSAumlNEN J Surface Splatting Theory Extensions and Implementation Masterrsquos Thesis Dept of Computer Science Helsinki

University of Technology May 28 2002

[16] PAULY M Point Primitives for Interactive Modeling and Processing of 3D Geometry PhD thesis Federal Institute of Technology (ETH)

of Zurich 2003

[17] HOPPE H DEROSE T DUCHAMP T MCDONALD J

STUELZLE W Surface Reconstruction from Unorganized Points Computer Graphics 26(2)71ndash78 July 1992

[18] ALEXA M BEHR J COHEN-OR D FLEISHMAN S LEVIN D

SILVA C T Point Set Surfaces IEEE Visualization 2001 pp 21ndash28 October

2001

Referecircncias Bibliograacuteficas 75

[19] GREENSPAN M GODIN G TALBOT J Acceleration of Binning

Nearest Neighbor Methods Proceedings of Vision Interface 2000 pp 337-

344

[20] MENCL R Reconstruction of Surfaces from Unorganized Three-Dimensional Point Clouds Dissertation Dortmund Univ 2001

[21] KRIVANEK J Representing and Rendering Surfaces With Points

httpciteseernjneccomkrivanek03representinghtml Acesso em 30 jul

2003

[22] KRISTJANSSON ET AL Approximate Boolean Operations on Free-

form Solids Proceedings of SIGGRAPH 01 2001

Operaccedilotildees Booleanas com Pontos 44

y є S que eacute o ponto de S mais proacuteximo a x um vetor ny normal a S em y e

orientado para fora de S temos que (x ndash y) ny gt 0 x notinV

A Figura 15 ilustra esta propriedade

Figura 15 Para verificar se o ponto x estaacute fora de um contorno C encontra-se o ponto y

de C Se o produto interno entre a normal em y e o vetor que liga y a x for maior que

zero entatildeo x estaacute fora de C senatildeo estaacute dentro de C

Pauly assume que tendo uma amostragem P da superfiacutecie S podemos

usar a Propriedade 1 substituindo y por p o surfel mais proacuteximo ao ponto x (x ndash

p) np gt 0 x notinV (Regra 2) Esta amostragem P em seu trabalho eacute

(aproximadamente) uma ldquoamostragem adequadardquo Tambeacutem seu tratamento de

interseccedilatildeo cria uma aproximaccedilatildeo dela (seccedilatildeo 43) Empiricamente a

ldquodiscretizaccedilatildeo da propriedaderdquo eacute vaacutelida a partir desta suposiccedilatildeo Mas isso natildeo foi

demonstrado teoricamente em seu trabalho

Pauly coloca em [16] que natildeo existe ainda uma teoria matemaacutetica rigorosa

de amostragem anaacuteloga a teoria de Fourier para superfiacutecies discretas

A melhor aproximaccedilatildeo teoacuterica para esta aacuterea eacute o uso do Eixo Medial que

foi colocado em [10] Vamos descrever este trabalho brevemente nesta seccedilatildeo

Este trabalho apresenta um algoritmo de reconstruccedilatildeo de superfiacutecie que parte de

uma amostragem adequada (abaixo definida) de pontos e obteacutem uma malha

que eacute topologicamente equivalente agrave superfiacutecie do objeto e agrave medida que a

densidade da amostragem cresce a saiacuteda converge para esta superfiacutecie

Para definir amostragem adequada o trabalho parte do conceito de Eixo

Medial

Operaccedilotildees Booleanas com Pontos 45

ldquoEixo Medialrdquo de uma superfiacutecie 2D posicionada no R3 eacute o conjunto

(fechado) de pontos pi para os quais buscando-se o ponto da superfiacutecie que

estaacute mais proacuteximo a pi mais de um ponto pertencentes a esta superfiacutecie satildeo

encontrados A Figura 16 abaixo ilustra o Eixo Medial em 2D

Figura 16 [10] As curvas de cor mais clara satildeo o Eixo Medial da curva em preto

Em duas dimensotildees os veacutertices de Voronoi de uma amostragem densa

aproximam o ldquoEixo Medialrdquo da amostragem (mas esta propriedade natildeo se

estende a 3D) A Figura 17 mostra o Eixo Medial em 3D

Figura 17 [10] Em 3D geralmente o Eixo Medial eacute uma superfiacutecie 2D (em cor mais

clara) Aqui o quadrado eacute o Eixo Medial da superfiacutecie transparente que o contorna

Podemos definir agora a amostragem adequada da seguinte forma

Supondo uma superfiacutecie suave que quer dizer uma 2-manifold duplamente

diferenciaacutevel posicionada no R3 uma ldquoamostragem adequadardquo desta superfiacutecie eacute

aquela na qual a densidade da amostragem eacute (pelo menos) inversamente

proporcional agrave distacircncia ao ldquoEixo Medialrdquo A Figura 18 mostra uma amostragem

adequada

Operaccedilotildees Booleanas com Pontos 46

Figura 18 [10] A figura mostra o diagrama de Voronoi de uma amostragem de pontos S

Da mesma forma que o a amostragem aproxima a curva os veacutertices de Voronoi

aproximam o Eixo Medial

Na praacutetica na reconstruccedilatildeo da superfiacutecie uma aproximaccedilatildeo deste ldquoEixo

Medialrdquo eacute computada (devido agrave dificuldade de computaacute-lo exatamente e em

alguns casos ateacute impossibilidade)

Melhorias Propostas 47

5 Melhorias Propostas

No capiacutetulo 4 apresentamos dois meacutetodos que realizam operaccedilotildees

booleanas em modelos por pontos o meacutetodo de Adams e Dutreacute [2] e o meacutetodo

de Pauly[3] Para esta dissertaccedilatildeo usamos o meacutetodo de Adams e Dutreacute [2] e

propomos as seguintes melhorias

- Alteramos o momento em que eacute feita a classificaccedilatildeo da octree Fazemos

esta classificaccedilatildeo durante a sua criaccedilatildeo Os noacutes filhos de um noacute pai P qualquer

satildeo classificados logo apoacutes a criaccedilatildeo de todos estes filhos de P

independentemente do restante da octree ter sido criada Isso pode ser feito

porque a octree eacute construiacuteda na ordem raiz-esquerda-direita (preorder

traversal) e portanto apoacutes todos os filhos de um noacute pai serem criados a parte

necessaacuteria da octree para a classificaccedilatildeo destes filhos jaacute estaacute criada

- A classificaccedilatildeo da octree eacute otimizada classificando-se os cantos dos seus

noacutes como dentro ou fora do modelo Na classificaccedilatildeo de um noacute n1 a partir de seu

vizinho n2 se os cantos que satildeo comuns a n1 e n2 tiverem a mesma

classificaccedilatildeo esta seraacute dada ao noacute Assim diminuiacutemos o nuacutemero de pesquisas

pelo surfel mais proacuteximo que eacute a parte criacutetica da classificaccedilatildeo dos noacutes da octree

em termos de tempo de processamento

- Acrescentamos um valor miacutenimo (maior que zero) para o nuacutemero de

surfels contidos em um noacute que eacute uma das condiccedilotildees de parada na criaccedilatildeo da

octree Verificamos que desta forma diminui-se a chance de erro na classificaccedilatildeo

de partes criacuteticas como ldquoarestas vivasrdquo

Uma comparaccedilatildeo entre a nossa implementaccedilatildeo e a de Pauly tambeacutem seraacute

feita no capiacutetulo 6

51 Descriccedilatildeo do algoritmo

O algoritmo implementado para esta dissertaccedilatildeo baseado no meacutetodo de

Adams e Dutreacute [2] pode ser dividido nas seguintes partes Criaccedilatildeo e

classificaccedilatildeo de uma octree para cada modelo Teste DentroFora Criaccedilatildeo do

modelo resultado Natildeo foi implementado tratamento especial algum de

interseccedilatildeo para o nosso plugin As proacuteximas seccedilotildees apresentam estas partes

Melhorias Propostas 48

511 Criaccedilatildeo e classificaccedilatildeo de uma octree para cada modelo

As ideacuteias do algoritmo satildeo aqui ilustradas em 2D mas a extensatildeo delas

para 3D eacute feita facilmente

Para cada modelo a octree eacute criada e classificada da seguinte forma

Figura 19-Quadtree classificada Os noacutes mais escuros estatildeo fora do modelo os mais claros dentro e os em tom intermediaacuterio satildeo noacutes de contorno

Gera-se uma ldquocaixa envolventerdquo do modelo contendo todos os surfels e

cria-se o noacute raiz da octree que corresponde a esta ldquocaixa envolventerdquo Este noacute

raiz eacute subdividido em oito filhos e seus surfels satildeo distribuiacutedos entre eles Ao

inveacutes de testarmos os valores de xy e z para cada surfel a fim de determinar

para qual filho ele iraacute utilizamos listas auxiliares Primeiro os surfels satildeo

subdivididos em dois grupos pelos valores de x e armazenados em uma lista

auxiliar Em seguida cada uma das listas eacute subdividida pelo valor de y e as

quatro listas obtidas seratildeo subdivididas pelo valor de z Ao final teremos 8 listas

de surfels cada uma delas pertencente a um filho

Cada noacute seraacute entatildeo novamente subdividido enquanto contiver um nuacutemero

de surfels gt nmin (valor preacute-definido) ou enquanto a profundidade da aacutervore lt pmax

(valor preacute-definido) Na figura 19 pmax = 3 e nmin = 3

Melhorias Propostas 49

Figura 20-O noacute cheio eacute dividido em trecircs partes agrave esquerda a regiatildeo estaacute dentro do modelo agrave direita estaacute fora e entre as duas linhas que dividem o noacute estaacute a regiatildeo que conteacutem os surfels

Os noacutes cheios recebem um tratamento especial Eles satildeo subdivididos em

trecircs partes da seguinte forma uma que estaacute fora do modelo outra que estaacute

dentro e uma que conteacutem os surfels Esta subdivisatildeo eacute feita por meio da criaccedilatildeo

de dois planos paralelos que dividem o noacute Para determinar estes planos

calcula-se o vetor nm igual agrave meacutedia das normais dos surfels do noacute nm = sum ns

sum ns onde ns eacute a normal de cada surfel do noacute Em seguida encontra-se o

surfel com maior produto interno entre a sua normal e a normal meacutedia

d1=Max(nm ٠ ns) Este surfel juntamente com a normal meacutedia define um dos

planos Encontra-se tambeacutem o surfel com menor produto interno entre a sua

normal e a normal meacutedia d2=Min (nm ٠ ns) Este surfel juntamente com a normal

meacutedia define o outro plano (Figura 20) Se o noacute conteacutem surfels de superfiacutecies de

orientaccedilotildees diferentes ele natildeo seraacute subdividido ou seja os planos coincidiratildeo

com os planos que delimitam o proacuteprio noacute Este teste foi implementado da

seguinte forma escolhe-se um surfel qualquer do noacute Calcula-se o produto

interno entre a normal deste surfel e as outras normais dos outros surfels deste

noacute Se algum produto interno for menor que zero este noacute natildeo seraacute subdividido

Apoacutes a etapa de subdivisatildeo classificam-se os oito cantos deste noacute como

dentro ou fora do modelo por meio da classificaccedilatildeo de um ponto que

descreveremos na sub-seccedilatildeo 5111

Melhorias Propostas 50

a b

c d

Figura 21-O noacute a eacute classificado pelo noacute c o noacute d tambeacutem eacute classificado pelo noacute c a classificaccedilatildeo do noacute a eacute propagada para o noacute b

Jaacute os noacutes vazios da octree seratildeo classificados como ldquodentrordquo ou ldquoforardquo do

modelo da seguinte forma cada noacute folha vazio eacute classificado a partir de um de

seus irmatildeos vizinhos adjacentes Se ele possuir um vizinho adjacente cheio ele

seraacute classificado por este vizinho se natildeo possuir os vizinhos adjacentes seratildeo

classificados primeiro e ele teraacute esta mesma classificaccedilatildeo (Figura 21) Como tem

que existir sempre pelo menos um noacute cheio entre os filhos de um noacute pai entatildeo

sempre esta classificaccedilatildeo poderaacute ser feita Com a classificaccedilatildeo de todos os

filhos tem-se tambeacutem a classificaccedilatildeo dos cantos do noacute pai

Mf03c003fmx a b

Figura 22-Os cantos a e b do noacute cheio possuem a mesma classificaccedilatildeo fora do modelo Esta classificaccedilatildeo foi dada ao noacute vazio adjacente

Melhorias Propostas 51

Para classificar um noacute vazio por meio de um noacute cheio verificam-se os

cantos comuns destes dois noacutes se todos os cantos tiverem a mesma

classificaccedilatildeo esta seraacute dada ao noacute vazio (Figura 22) Se houver classificaccedilotildees

diferentes escolhe-se o surfel do noacute cheio mais proacuteximo ao noacute vazio faz-se o

produto interno entre a normal deste surfel e o vetor que liga o centro do noacute

cheio ao centro do noacute vazio (ou o vetor que liga o surfel ao centro do noacute vazio)

Se o produto interno for maior que zero o noacute eacute classificado como ldquoforardquo senatildeo eacute

classificado como ldquodentrordquo Para encontrar o surfel (pertencente a um noacute cheio)

mais proacuteximo ao noacute vazio existem dois casos

- O noacute cheio eacute folha percorre-se toda a lista de surfels e escolhe o surfel

mais proacuteximo da fronteira entre o noacute cheio e o vazio

- O noacute cheio natildeo eacute um noacute folha percorrem-se os filhos do noacute cheio ou seja

esta pesquisa eacute feita descendo na octree a partir do noacute cheio procurando o

surfel mais proacuteximo agrave fronteira do pai com o noacute vazio a ser classificado

Classificando o centro do noacute vazio todo o noacute deve ter a mesma

classificaccedilatildeo pois este noacute natildeo conteacutem surfels Para encontrar o surfel do noacute

vazio mais proacuteximo da fronteira entre o noacute cheio e o vazio basta testar o valor da

coordenada se a fronteira eacute o lado direito do noacute cheio escolhe-se o surfel com

maior coordenada lsquoxrsquo se eacute o lado esquerdo escolhe-se o surfel com menor lsquoxrsquo

se lado superior surfel com maior lsquoyrsquo etc A seguir apresentamos a classificaccedilatildeo

de um ponto qualquer pertencente a um noacute cheio

Figura 23- Quadtree classificada

Melhorias Propostas 52

5111 Classificaccedilatildeo de um ponto de um noacute cheio

Figura 24 [2] A normal n eacute a normal meacutedia e os surfels s1 e s2 juntamente com a normal

n definem as retas que dividem o noacute O ponto a estaacute fora do modelo e o ponto b estaacute

dentro do modelo

Para um ponto localizado dentro do noacute faz-se o seguinte teste se o noacute foi

dividido testa-se de acordo com a divisatildeo do noacute se o ponto estaacute na parte do noacute

que estaacute dentro do modelo ele eacute classificado como ldquodentrordquo se o ponto estaacute na

parte que estaacute fora do modelo ele eacute classificado como ldquoforardquo (Figura 24) se o

ponto estaacute na parte que conteacutem os surfels encontra-se o surfel s pertencente ao

noacute mais proacuteximo do ponto e o classifica de acordo com s seja ns a normal em s

cs a coordenada de s cp a coordenada do ponto Se (cp - cs )٠ ns gt 0 o ponto

seraacute classificado como ldquoforardquo Senatildeo seraacute classificado como ldquodentrordquo

Se o noacute natildeo foi dividido em planos esta classificaccedilatildeo a partir do surfel

mais proacuteximo seraacute sempre feita

512 Teste DentroFora

Melhorias Propostas 53

Figura 25-Duas circunferecircncias e suas quadtrees correspondentes

O Teste DentroFora classifica os surfels de um modelo como dentro ou

fora de outro modelo ou na sua interseccedilatildeo Este teste foi aqui implementado

exatamente como foi proposto em Adams e Dutreacute [2] exceto que natildeo foi

implementado o meacutetodo TINN - Triangle Inequality Nearest Neighbour [19]

Cada octree eacute percorrida verificando-se se os seus noacutes ou surfels estatildeo dentro

fora ou no contorno do outro modelo (Figura 25) Sejam A e B duas octrees e

queremos classificar a octree A As duas octrees (AB) satildeo percorridas partindo

da raiz

Para cada noacute de A existem quatro casos (Figura 26) Para testar estas

situaccedilotildees os boxes dos noacutes satildeo aumentados de rmax o raio do maior surfel do

modelo Isto eacute feito para compensar o fato de que o surfel natildeo eacute apenas um

ponto mas sim considerado como um disco

Os quatro casos satildeo

Se o noacute de A natildeo intersecta B entatildeo todos os surfels deste noacute satildeo

classificados como fora

Se o noacute de A intersecta apenas noacutes de B que estatildeo fora do modelo

todos os surfels deste noacute satildeo fora

Se o noacute de A intersecta apenas noacutes de B que estatildeo dentro do modelo

todos os surfels deste noacute satildeo dentro

Melhorias Propostas 54

Se o noacute de A intersecta noacutes de B que estatildeo dentro e tambeacutem noacutes de B

que estatildeo fora testa-se se este noacute de A eacute ou natildeo folha Se natildeo for folha

percorre-se os filhos deste noacute de A ateacute encontrar um noacute folha cheio que

intersecta B Para cada surfel sa deste noacute folha de A encontra-se o surfel de B

mais proacuteximo e classifica-se a coordenada de sa da forma apresentada na seccedilatildeo

5111 Seja sb o surfel usado na classificaccedilatildeo de sa Se os discos de sb e sa

se intersectam sa eacute classificado como ldquointerseccedilatildeordquo

(a) (b)

(c) (d)

Figura 26- a modelos natildeo se intersectam b modelo intersecta noacutes fora c modelo intersecta apenas noacutes dentro d modelo intersecta noacutes dentro e noacutes fora

513 Criaccedilatildeo do modelo resultado

Um novo modelo eacute criado com os seguintes surfels (de acordo com a

operaccedilatildeo booleana escolhida pelo usuaacuterio - veja Regra 1 da seccedilatildeo 41)

Uniatildeo - surfels de A que estatildeo fora de B + surfels de B que estatildeo fora de A

Melhorias Propostas 55

Interseccedilatildeo - surfels de A que estatildeo dentro de B + surfels de B que estatildeo

dentro de A

Diferenccedila A-B - surfels de A que estatildeo fora de B + surfels de B que estatildeo

dentro de A (com orientaccedilatildeo invertida)

Como natildeo foi implementado tratamento especial algum de interseccedilatildeo para

o nosso plugin os surfels que se intersectam satildeo mantidos no modelo resultado

final sem modificaccedilotildees

Descrito o algoritmo vejamos a seguir a sua implementaccedilatildeo

52 Implementaccedilatildeo

Este algoritmo foi implementado na forma de um plugin para o software

PointShop 3D [11] Este plugin foi desenvolvido na linguagem C e no sistema

operacional Windows

A escolha deste tipo de implementaccedilatildeo permitiu-nos usar o software

PointShop para os testes do algoritmo Estes testes foram feitos com os modelos

disponibilizados para o PointShop [11] Nesta seccedilatildeo apresentaremos o software

PointShop e as principais estruturas de dados usadas em nosso plugin

O Pointshop eacute um software aberto com seu coacutedigo disponiacutevel e preparado

para trabalhar com plugins Eacute um software de ediccedilatildeo de modelos 3D por pontos

Ele permite aleacutem de visualizar o modelo alterar as suas caracteriacutesticas como

cor brilho e fazer mapeamento de textura iluminaccedilatildeo filtragem (Figura 27)

Melhorias Propostas 56

Figura 27-Software PointShop 3D com dois modelos carregados na sua cena

Aleacutem disso pode-se criar uma cena com vaacuterios modelos e visualizaacute-los de

qualquer ponto de vista Implementa o virtual trackball para rotacionaacute-los e

transladaacute-los Usa uma iluminaccedilatildeo simples direcional A sua arquitetura eacute

extensiacutevel permite que o usuaacuterio adicione seus proacuteprios componentes ao

sistema Possui trecircs tipos de componentes

ldquoToolsrdquo fornece funcionalidades para ediccedilatildeo interativa de superfiacutecie Satildeo

disponibilizados na ldquotoolbarrdquo

Plugins fornece funcionalidades para processar em um soacute passo

modelos ou partes deles selecionadas Satildeo disponibilizados no menu ldquoPluginsrdquo

Renderes fornece funcionalidades de display para os modelos

Para esta dissertaccedilatildeo foi escolhida a construccedilatildeo do componente Plugin

por adequar-se agrave nossa proposta e ser a mais simples de ser construiacuteda O

PointShop [11] jaacute conteacutem uma tool que executa operaccedilotildees booleanas e

deformaccedilatildeo free-form sobre os modelos carregados na cena usando o meacutetodo

de Pauly [3] apresentado no capiacutetulo 4 O nosso plugin Operaccedilotildees Booleanas

implementa o algoritmo descrito na seccedilatildeo anterior baseado na proposta de

Melhorias Propostas 57

Adams e Dutreacute [2] Uma comparaccedilatildeo entre o nosso plugin e a tool de Pauly [3] eacute

feita no capiacutetulo 6

Figura 28-Menu do PointShop com o plugin e as opccedilotildees para operaccedilotildees booleanas

Para se executar o plugin o usuaacuterio precisa carregar dois modelos na

cena do PointShop acionar o plugin informando a operaccedilatildeo que seraacute executada

O plugin executaraacute o algoritmo acima proposto e carregaraacute o resultado na cena

do Pointshop retirando os modelos anteriores

521 Estruturas de Dados

Como vimos o software PointShop [11] trabalha com modelos por pontos

Um modelo deste software descrito na seccedilatildeo 42 conteacutem todas as informaccedilotildees

que o algoritmo proposto em Bart [2] necessita Abaixo relacionamos as

Melhorias Propostas 58

principais estruturas de dados do PointShop usadas no plugin e as principais

estruturas de dados do nosso plugin

As principais classes do PointShop usadas no plugin satildeo

Classe Scene

Classe Objects

Classe SurfelColections

Classe Surfel

Classe StatusBar

Classe Transformer

A hierarquia de dados eacute a seguinte a Scene conteacutem vaacuterios Objects os

quais conteacutem SurfelColections Cada SurfelColections conteacutem Surfels que

suportam uma ou mais propriedades tais como cor difusa cor especular

Classe Scene Classe que representa uma cena que conteacutem modelos

Classe Object Um modelo eacute representado pela classe Object que

conteacutem uma SurfelCollection e as matrizes de transformaccedilatildeo para rotaccedilatildeo

escala e translaccedilatildeo Cada Object eacute identificado pelo seu nome que eacute uacutenico na

Scene O meacutetodo getUniqueName retorna um nome uacutenico Cada Object tem sua

proacutepria matriz de transformaccedilatildeo que pode ser modificada com setRotation

rotate setPosition translate setScale e scale Objects podem ser copiados com

copy Objects consiste em um conjunto de surfels os quais podem ser

recuperados pela getSurfelCollection O Object pode ser ativado com

setActiveObject e recuperado com getActiveObject

Objects podem ser adicionados ou removidos com addObject e

removeObject Os Objects podem ser obtidos pela getFirstObject e

getNextObject

Classe SurfelCollection representa o conjunto de surfels de um modelo

Cada surfelcollection consiste em um conjunto de surfels (SurfelInterface) de

tamanho obtido por getNofSurfels Os surfels podem ser recuperados com

getFirstSurfel getCurrentSurfel e getNextSurfel

A SurfelCollection conteacutem um PropertyDescriptor e uma SurfelList

A SurfelList eacute uma lista duplamente encadeada de surfels Possui os

atributos firstSurfel lastSurfel currentSurfel que satildeo ponteiros para uma

SurfelInterface nSurfels que eacute o nuacutemero de Surfels

A SurfelInterface define a API para os surfels que satildeo os menores

elementos que compotildeem um Object Podem ser considerados como pontos com

uma normal que define a orientaccedilatildeo do ciacuterculo (ou elipse) que seraacute desenhado

Melhorias Propostas 59

tatildeo logo o surfel seja renderizado Tem como atributos dois ponteiros (next e

prev) para SurfelInterface

PropertyDescriptor consiste em ateacute 32 valores descrevendo quais as

propriedades a SurfelInterface suporta

Classe Surfel classe que representa o surfel

Classe StatusBar classe que imprime mensagens na tela Os plugins

podem mandar mensagens para o usuaacuterio pela StatusBar

Mensagens texto podem ser impressas com showMessage O progresso

de uma operaccedilatildeo pode ser indicado com setProgress ou resetProgress

Classe Transformer representa a transformaccedilatildeo entre sistemas de

coordenadas Esta classe fornece meacutetodos para transformar pontos e vetores

entre os diferentes sistemas de coordenadas do Pointshop

A seguir apresentamos as principais estruturas de dados do plugin

Operaccedilotildees Booleanas

As principais estruturas de dados do plugin satildeo boundingbox tree no

lista_surfel surfel

Boundingbox conteacutem dois pontos 3D que definem uma caixa que conteacutem

o modelo um ponto com menores coordenadas xy e z e outro ponto com

maiores xyz

Tree representa a octree do modelo Cada registro conteacutem um ponteiro

para um noacute e oito ponteiros para as 8 octrees filhas

No representa um noacute da octree Conteacutem os seguintes dados

- localizaccedilatildeo do noacute que eacute o canto inferior esquerdo do noacute

- lista_surfel (preenchida apenas para noacutes folha cheios)

- quantidade de surfels do noacute

- classificaccedilatildeo do noacute como dentro fora ou contorno

- classificaccedilatildeo do noacute em relaccedilatildeo a outro modelo

- indica se o noacute eacute folha ou natildeo

- vetor que eacute a meacutedia das normais dos surfels do noacute

- ponto que eacute a meacutedia das localizaccedilotildees dos surfels do noacute

- surfel que tem (entre todos os surfels do noacute) o maior produto interno

entre a sua normal e a normal meacutedia

- surfel que tem (entre todos os surfels do noacute) o menor produto interno

entre a sua normal e a normal meacutedia

- produto interno maacuteximo e miacutenimo entre as normais dos surfels do noacute e a

normal meacutedia deste noacute

Melhorias Propostas 60

- indica se o noacute conteacutem surfels com normais em sentido oposto (produto

interno entre elas eacute menor que zero)

- classificaccedilatildeo dos oito cantos do noacute

lista_surfels lista em que cada registro conteacutem um apontador para um

surfel e um apontador para o proacuteximo registro

surfel representa o surfel da octree Conteacutem a classificaccedilatildeo em relaccedilatildeo a

outro modelo e um ponteiro para o surfel do Poinshop

Resultados 61

6 Resultados

Neste capiacutetulo apresentamos os testes realizados com o plugin para o

PointShop implementado para esta dissertaccedilatildeo a comparaccedilatildeo deste plugin com

o plugin de Pauly [3] e a comparaccedilatildeo entre o meacutetodo de Adams e Dutreacute [2] e o

meacutetodo de Pauly [3]

61 Testes

Os testes foram feitos em um PC x86 Family 6 261600 KB de RAM sem

placa graacutefica sistema operacional Windows 2000 O plugin foi implementado na

linguagem C

Os modelos usados para os testes satildeo modelos disponibilizados no

PointShop [11] Vale lembrar que o meacutetodo implementado em nosso plugin eacute

restrito a modelos soacutelidos e portanto foram usados apenas estes modelos

soacutelidos para os testes

O modelo na Figura 29 que eacute um dos modelos disponibilizados no

PointShop [11] foi usado para mostrar o resultado das operaccedilotildees realizadas

pelo plugin implementado nesta dissertaccedilatildeo O modelo Igea eacute um modelo soacutelido

que conteacutem 134345 surfels

Resultados 62

Figura 29-Modelo do PointShop Igea

Para realizar as operaccedilotildees este modelo foi carregado na cena do

PointShop duas vezes e um deles colorido de vermelho As Figuras 30 31 32

mostram o resultado da operaccedilatildeo de uniatildeo interseccedilatildeo e diferenccedila

respectivamente Os nuacutemeros de surfels dos modelos resultantes satildeo mostrados

na Tabela 2

Resultados 63

Figura 30-Resultado da uniatildeo de duas Igeas

Figura 31-Resultado da interseccedilatildeo de duas Igeas

Resultados 64

Figura 32-Resultado da diferenccedila entre duas Igeas

Tabela 2-Nuacutemero de surfels dos modelos resultantes

Observamos que o nuacutemero de surfels dos modelos resultantes estaacute

coerente com as figuras dos seus modelos

Para avaliar o tempo de processamento das operaccedilotildees foram realizados

vaacuterios testes com o objetivo de obter uma meacutedia dos tempos de realizaccedilatildeo de

cada operaccedilatildeo Tambeacutem foram armazenados os tempos da criaccedilatildeo das duas

octrees e da classificaccedilatildeo de todos os surfels dos dois objetos (como dentro ou

fora do outro modelo) Estes testes foram feitos usando o modelo Igea A meacutedia

dos tempos de processamento foi calculada e os resultados satildeo mostrados na

Tabela 3 Verificamos que o maior tempo gasto eacute para criaccedilatildeo das octrees

Verificamos tambeacutem que este resultado apresentado eacute similar ao resultado

verificado empiricamente com o plugin de Pauly [3] Os tempos gastos para

realizar as operaccedilotildees satildeo similares e o maior tempo gasto no plugin de Pauly

tambeacutem eacute para inicializaccedilatildeo de suas estruturas de dados que incluem a kd-tree

Operaccedilatildeo Nuacutemero de surfels do modelo resultado

Uniatildeo 189715

Interseccedilatildeo 72225

Diferenccedila 134552

Resultados 65

Operaccedilatildeo Criaccedilatildeo das

Octrees (seg)

Classificaccedilatildeo

(seg)

Criaccedilatildeo do

resultado (seg)

Total (seg)

Uniatildeo 39375 1324 18925 7154

Interseccedilatildeo 38585 1585 09547 63982

Diferenccedila 399875 1504 1729 729475

Tabela 3- Meacutedia dos tempos de processamento para as operaccedilotildees com duas Igeas

Com o objetivo de expor melhor os resultados deste trabalho

apresentamos abaixo mais um teste das operaccedilotildees booleanas usando o nosso

plugin Os modelos usados para este segundo teste satildeo o Max Planck e o Male

ambos modelos soacutelidos disponibilizados no PointShop Estes modelos satildeo

mostrados nas figura 33 e 34

O primeiro Max Planck conteacutem 52809 surfels

Figura 33-Modelo do PointShop MaxPlanck

O segundo modelo abaixo Male conteacutem 148138 surfels

Resultados 66

Figura 34-Modelo do PointShop Male

As Figuras 353637 mostram o resultado da operaccedilatildeo de uniatildeo interseccedilatildeo

e diferenccedila respectivamente usando os dois modelos acima Podemos observar

pela figura 35 que o resultado da operaccedilatildeo de diferenccedila neste caso gerou um

modelo resultado com trecircs partes desconexas Os nuacutemeros de surfels de cada

modelo resultado satildeo mostrados na Tabela 5

Figura 35- Resultado da Uniatildeo do modelo Male com MaxPlanck

Resultados 67

Figura 36-Resultado da interseccedilatildeo do modelo Male com o MaxPlanck

Figura 37-Resultado da diferenccedila do modelo Male do modelo MaxPlanck

As meacutedias de tempos de processamento foram calculadas da mesma

forma que o primeiro teste com o modelo Igea acima apresentado Os

resultados satildeo mostrados na Tabela 4 Podemos observar que este teste

Resultados 68

apresenta tempos um pouco menores que o teste com o modelo Igea Isto se

deve ao fato de que o modelo MaxPlanck ser significativamente menor que o

modelo Igea MaxPlanck possui 52809 surfels e Igea conteacutem 134345 surfels

Operaccedilatildeo Criaccedilatildeo das

Octrees (seg)

Classificaccedilatildeo

(seg)

Criaccedilatildeo do

resultado (seg)

Total

(seg)

Uniatildeo 3012 1254 102 5285

Interseccedilatildeo 2985 0901 0861 4747

Diferenccedila 2965 0911 0791 4667

Tabela 4-Tempo de processamento das operaccedilotildees com os modelos MaxPlanck e Male

Operaccedilatildeo Nuacutemero de surfels do resultado

Uniatildeo 126532

Interseccedilatildeo 88414

Diferenccedila 77635

Tabela 5-Nuacutemero de surfels dos modelos resultados das operaccedilotildees com os modelos MaxPlanck e Male

Em seguida apresentaremos uma comparaccedilatildeo entre o nosso plugin e o

plugin de Pauly[3] e tambeacutem uma comparaccedilatildeo entre o meacutetodo de Adams e Dutreacute

[2] e o meacutetodo de Pauly [3]

62 Comparaccedilatildeo entre os dois meacutetodos que realizam operaccedilotildees booleanas

A comparaccedilatildeo entre os meacutetodos de Pauly[3] e de Adams e Dutreacute foi feita

em termos de tempo de processamento e em termos conceituais Em termos de

tempo de processamento comparamos o plugin de Pauly[3] com o nosso plugin

Em termos de tempo de processamento verifica-se empiricamente que os

dois meacutetodos apresentam tempos bastante similares Entretanto o tempo de

processamento do algoritmo aqui implementado ainda pode ser melhorado com

Resultados 69

o uso do meacutetodo TINN [19] que foi proposto em Adams[2] - para otimizar a

pesquisa do surfel mais proacuteximo a um ponto que estaacute localizado na regiatildeo de um

noacute que conteacutem surfels - veja seccedilatildeo 42 O uso deste meacutetodo natildeo foi

implementado para este trabalho e a sua implementaccedilatildeo melhoraria o tempo de

resposta do algoritmo Aleacutem disso o trabalho de Sara F Frisken [12] citado no

capiacutetulo 2 apresenta uma otimizaccedilatildeo no uso de octrees que pode ser

incorporada no algoritmo implementado neste trabalho

Em termos conceituais vamos fazer a comparaccedilatildeo do uso do que

chamamos aqui de Regra 2 do tratamento de interseccedilatildeo e do tratamento de

ldquoarestas vivasrdquo

Como vimos na seccedilatildeo 41 tanto o algoritmo implementado nesta

dissertaccedilatildeo baseado no trabalho de Adams e Dutreacute como o meacutetodo de Pauly

[3] parte do que chamamos aqui de Regra 2 para realizar operaccedilotildees booleanas

com pontos Mas cada um destes meacutetodos daacute um tratamento diferente para o

uso desta regra

O meacutetodo de Pauly usa a Regra 2 para classificaccedilatildeo de cada ponto ou de

cada surfel Para classificar um surfel de B sb como dentro ou fora de A eacute

encontrado o surfel de A sa mais proacuteximo a sb e sb eacute classificado a partir de sa

Para encontrar sa Pauly utiliza uma kd-tree Como esta pesquisa para encontrar

sa eacute cara (mesmo usando uma kd-tree) Pauly utiliza uma esfera que conteacutem

pontos com a mesma classificaccedilatildeo (seccedilatildeo 432) e diminui em 90 este nuacutemero

de pesquisas Pauly utiliza tambeacutem a representaccedilatildeo impliacutecita MLS (Moving Least

Squares) para casos em que a Regra 2 poderia falhar e para tratamento de

interseccedilotildees Entretanto o nuacutemero destes casos em que a Regra 2 poderia falhar

eacute muito pequeno E a representaccedilatildeo MLS natildeo eacute uma estrutura simples de ser

implementada Portanto natildeo encontramos vantagens em usar MLS para estes

casos O meacutetodo de Adams e Dutreacute natildeo trata estes casos e na praacutetica

apresenta resultados bastante satisfatoacuterios como foi mostrado Portanto

consideramos que valeria a pena fazer algum tratamento especial para estes

casos se fosse um procedimento simples Para a execuccedilatildeo do algoritmo de

Pauly o uso de MLS natildeo interfere significativamente porque a construccedilatildeo desta

representaccedilatildeo natildeo eacute feita somente para realizar operaccedilotildees booleanas Os testes

empiacutericos que fizemos com o algoritmo de Pauly natildeo incluem a construccedilatildeo desta

representaccedilatildeo

Aparentemente os dois algoritmos satildeo bastante parecidos um usa octrees

e o outro usa kd-tree As duas estruturas de dados satildeo simples e otimizam a

classificaccedilatildeo dos surfels de um modelo como dentro ou fora do outro modelo

Resultados 70

Mas existe uma diferenccedila conceitual entre dois que merece ser destacada O

algoritmo aqui implementado usa a Regra 2 para classificaccedilatildeo dos noacutes de uma

octree e armazena esta octree classificada (ver capiacutetulo 5) Assim na maioria dos

casos natildeo seraacute necessaacuterio encontrar o surfel mais proacuteximo para classificar um

ponto (ou um surfel) como fora ou dentro de um modelo Caso o ponto esteja em

uma aacuterea da octree classificada ele teraacute a classificaccedilatildeo dada agravequela aacuterea A

pesquisa ao surfel mais proacuteximo seraacute feita apenas nos casos em que o ponto a

ser classificado estaacute localizado entre os planos que subdividem um noacute cheio

O uso desta octree classificada levanta uma questatildeo que natildeo foi citada no

trabalho de Adams e Dutreacute que eacute a proximidade desta estrutura (armazenada)

de octree classificada com uma representaccedilatildeo volumeacutetrica do objeto Sendo

assim esta estrutura pode ser aproveitada para outras funccedilotildees aleacutem da

classificaccedilatildeo dos surfels Por exemplo podemos ter uma aproximaccedilatildeo do

volume de uma cena somando os volumes aproximados dos modelos que a

compotildeem Como o enfoque deste trabalho eacute operaccedilatildeo booleana natildeo vamos nos

aprofundar nesta questatildeo

Outra importante diferenccedila entre os dois trabalhos que jaacute foi explicada na

seccedilatildeo 432 eacute que o meacutetodo de Pauly aplica-se a modelos soacutelidos ou natildeo

soacutelidos enquanto que o meacutetodo de Adams e Dutreacute aplica-se somente a modelos

soacutelidos

Quanto ao tratamento de interseccedilatildeo em termos de visualizaccedilatildeo todos os

dois resolvem bem o problema O tratamento de interseccedilatildeo nos dois trabalhos

tambeacutem resolve o problema da validade da Regra 2 (ver seccedilatildeo 44) Entretanto

o tratamento de Adams e Dutreacute natildeo depende da renderizaccedilatildeo sendo portanto

mais portaacutevel Aleacutem disso uma desvantagem do meacutetodo de Pauly eacute o uso da

representaccedilatildeo impliacutecita MLS (ldquoMoving Least Squaresrdquo) do objeto para obter os

pontos exatamente na curva de interseccedilatildeo Esta representaccedilatildeo torna o

tratamento de interseccedilatildeo mais complexo e a vantagem apresentada natildeo eacute tatildeo

significativa para este tratamento de interseccedilatildeo

Conclusatildeo 71

7 Conclusatildeo

Concluiacutemos entatildeo que as escolhas de Adams e Dutreacute por usar uma

octree classificada e pelo tratamento dado agrave interseccedilatildeo satildeo mais abrangentes

que a escolha de Pauly E consideramos que quanto mais abrangente for uma

escolha conceitual mais resultados poderemos tirar dela No caso de Adams e

Dutreacute eles estendem o problema de classificar um ponto para classificar todo o

modelo Como foi citado ele quase fornece uma representaccedilatildeo volumeacutetrica do

modelo Esta aproximada representaccedilatildeo volumeacutetrica pode nos fornecer outras

informaccedilotildees como por exemplo o volume aproximado do modelo

Aleacutem disso o uso da representaccedilatildeo impliacutecita MLS no meacutetodo de Pauly cria

uma complexidade a mais para o meacutetodo sem apresentar vantagens para a

realizaccedilatildeo de operaccedilotildees booleanas que eacute o nosso enfoque

Logo podemos dizer que o meacutetodo de Adams e Dutreacute apresenta as

seguintes vantagens em relaccedilatildeo ao de Pauly

- a estrutura de octree classificada aleacutem de ser usada para classificaccedilatildeo

fornece informaccedilotildees adicionais como volume aproximado do objeto

- o tempo de processamento no meacutetodo de Adams e Dutreacute tende a ser

melhor que no meacutetodo de Pauly se implementadas as melhorias acima citadas e

se colocaacutessemos em consideraccedilatildeo o uso da representaccedilatildeo impliacutecita MLS

(Moving Least Squares)

- o tratamento de interseccedilatildeo de Adams e Dutreacute apresenta a vantagem da

portabilidade ou seja iraacute funcionar independente do algoritmo de renderizaccedilatildeo

utilizado

E as vantagens do meacutetodo de Pauly em relaccedilatildeo ao de Adams e Dutreacute

- a colocaccedilatildeo de surfels exatamente na curva de interseccedilatildeo

- a possibilidade de trabalhar com modelos soacutelidos ou natildeo soacutelidos

E finalizando concluiacutemos que o estudo relatado nesta dissertaccedilatildeo foi

importante por

- fornecer um breve estudo sobre modelagem por pontos uma nova e

promissora aacuterea dentro da computaccedilatildeo graacutefica

Conclusatildeo 72

- por apresentar uma avaliaccedilatildeo dos dois trabalhos existentes sobre

operaccedilotildees booleanas com pontos encontrando as vantagens de cada um

e levantando questotildees que natildeo tinham sido citadas nos trabalhos originais

- por propor e implementar melhorias ao trabalho de Adams e Dutreacute

71 Trabalhos Futuros

Nossa implementaccedilatildeo pode ser ainda evoluiacuteda com as propostas

apresentadas na seccedilatildeo 62 Como observamos o tempo de processamento do

algoritmo aqui implementado ainda pode ser melhorado com o uso do meacutetodo

TINN [19] - que foi proposto em Adams[2] - para otimizar a pesquisa do surfel

mais proacuteximo a um ponto que estaacute localizado na regiatildeo de um noacute que conteacutem

surfels Aleacutem disso o trabalho Simple and Efficient Trasversal Methods for

Quadtrees and Octrees de Sara F Frisken [12] citado no capiacutetulo 2 apresenta

uma otimizaccedilatildeo no uso de octrees Outra proposta para melhorar o tempo de

processamento do algoritmo aqui implementado eacute usar a forma de trabalhar com

octrees apresentada neste trabalho

O trabalho de Adams e Dutreacute [2] eacute aplicado apenas a objetos soacutelidos O

nosso plugin portanto aplica-se somente a este tipo de objeto Jaacute o trabalho de

Pauly[3] eacute aplicado tambeacutem a modelos natildeo soacutelidos Apresentamos como

proposta a um trabalho futuro a extensatildeo do algoritmo aqui implementado para

modelos natildeo soacutelidos O surfel pode conter uma informaccedilatildeo adicional que indica

se ele estaacute delimitando um volume ou natildeo Assim pode-se ter um modelo com

ldquopartes soacutelidasrdquo e ldquopartes natildeo soacutelidasrdquo Por exemplo a uniatildeo de um plano com

uma esfera poderia resultar numa esfera com ldquoabasrdquo (seriam as partes do plano

que estariam fora da esfera) O modelo resultado teria uma parte correspondente

a um espaccedilo 3D (esfera) e outra parte que seria uma superfiacutecie 2D posicionada

no espaccedilo 3D sem delimitar algum volume (abas)

Muitos trabalhos podem ser desenvolvidos aplicando-se o modelo por

pontos em animaccedilatildeo jogos visualizaccedilatildeo de terrenos criaccedilatildeo de protoacutetipos etc

considerando-se a eficiecircncia e simplicidade do modelo E mais especificamente

as operaccedilotildees booleanas com pontos podem ser aplicadas para criaccedilatildeo de

cenaacuterios testes de colisotildees e nestes casos a representaccedilatildeo usando octrees

pode ser mais explorada considerando-se o seu potencial de representaccedilatildeo

volumeacutetrica de um objeto

Referecircncias Bibliograacuteficas 73

8 Referecircncias Bibliograacuteficas

[1] MAumlNTYLAuml M An Introduction to Solid Modeling Computer Science Press 1988

[2] ADAMS B DUTREacute P Interactive Boolean Operations on Surfel-

Bounded Solids Proceedings of SIGGRAPH 2003 San Diego USA 2003

[3] PAULY M KEISER R KOBBELT L GROSS M Shape Modeling

with Point-Sampled Geometry SIGGRAPH 2003 Computer Graphics

Proceedings Annual Conference Series ACM Press ACM SIGGRAPH 2003

[4] LEVOY M WHITTED T The Use of Points as Display Primitives

Technical Report TR 85-022 The University of North Carolina at Chapel Hill

Department of Computer Science 1985

[5] PFISTER H ZWICKER M VAN BAAR J GROSS M 2000 Surfels

Surface Elements as Rendering Primitives SIGGRAPH 2000 pp 335ndash342 New

Orleans LA July 23-28 2000

[6] ZWICKER M PFISTER H VAN BAAR J GROSS M Surface

Splatting SIGGRAPH 2001

[7] PAULY M KOBBELT L GROSS M Multiresolution Modeling of

Point-Sampled Geometry CS Techinical Report 378 September 16 2002

[8] CURLESS B New Methods for Surface Reconstruction from Range Images PhD thesis Stanford University 1997

[9] RUSINKIEWICZ S Real-time Acquisition and Rendering of Large 3D Models PhD thesis Stanford University 2001

Referecircncias Bibliograacuteficas 74

[10] AMENTA N BERN M KAMVYSSELIS M A new Voronoi-Based

Surface Reconstruction Algorithm SIGGRAPH 98 Conference proceedings pp

415-421 New York 1998

[11] ZWICKER M PAULY M KNOLL O GROSS M Pointshop 3D an

Interactive System for Point-Based Surface Editing Proceedings of SIGGRAPH 2002 San Antonio TX July 2002

[12] FRISKEN S PERRY R Simple and Efficient Traversal Methods for

Quadtrees and Octrees Journal of Graphics Tools Vol 7 Issue 3 May 2003

[13] CORREcircA W T OLIVEIRA M M Silva C T Wang J

Modeling and Rendering of Real Environments

Revista de Informaacutetica Teoacuterica e Aplicada (Brazilian Journal of Theoretic and Applied Computing) 9(2)127-156 2002

[14] DAVIS J MARSCHNER S GARR M LEVOY M Filling Holes in

Complex Surfaces Using Volumetric Diffusion First International Symposium on 3D Data Processing Visualization Transmission June 2002

[15] RAumlSAumlNEN J Surface Splatting Theory Extensions and Implementation Masterrsquos Thesis Dept of Computer Science Helsinki

University of Technology May 28 2002

[16] PAULY M Point Primitives for Interactive Modeling and Processing of 3D Geometry PhD thesis Federal Institute of Technology (ETH)

of Zurich 2003

[17] HOPPE H DEROSE T DUCHAMP T MCDONALD J

STUELZLE W Surface Reconstruction from Unorganized Points Computer Graphics 26(2)71ndash78 July 1992

[18] ALEXA M BEHR J COHEN-OR D FLEISHMAN S LEVIN D

SILVA C T Point Set Surfaces IEEE Visualization 2001 pp 21ndash28 October

2001

Referecircncias Bibliograacuteficas 75

[19] GREENSPAN M GODIN G TALBOT J Acceleration of Binning

Nearest Neighbor Methods Proceedings of Vision Interface 2000 pp 337-

344

[20] MENCL R Reconstruction of Surfaces from Unorganized Three-Dimensional Point Clouds Dissertation Dortmund Univ 2001

[21] KRIVANEK J Representing and Rendering Surfaces With Points

httpciteseernjneccomkrivanek03representinghtml Acesso em 30 jul

2003

[22] KRISTJANSSON ET AL Approximate Boolean Operations on Free-

form Solids Proceedings of SIGGRAPH 01 2001

Operaccedilotildees Booleanas com Pontos 45

ldquoEixo Medialrdquo de uma superfiacutecie 2D posicionada no R3 eacute o conjunto

(fechado) de pontos pi para os quais buscando-se o ponto da superfiacutecie que

estaacute mais proacuteximo a pi mais de um ponto pertencentes a esta superfiacutecie satildeo

encontrados A Figura 16 abaixo ilustra o Eixo Medial em 2D

Figura 16 [10] As curvas de cor mais clara satildeo o Eixo Medial da curva em preto

Em duas dimensotildees os veacutertices de Voronoi de uma amostragem densa

aproximam o ldquoEixo Medialrdquo da amostragem (mas esta propriedade natildeo se

estende a 3D) A Figura 17 mostra o Eixo Medial em 3D

Figura 17 [10] Em 3D geralmente o Eixo Medial eacute uma superfiacutecie 2D (em cor mais

clara) Aqui o quadrado eacute o Eixo Medial da superfiacutecie transparente que o contorna

Podemos definir agora a amostragem adequada da seguinte forma

Supondo uma superfiacutecie suave que quer dizer uma 2-manifold duplamente

diferenciaacutevel posicionada no R3 uma ldquoamostragem adequadardquo desta superfiacutecie eacute

aquela na qual a densidade da amostragem eacute (pelo menos) inversamente

proporcional agrave distacircncia ao ldquoEixo Medialrdquo A Figura 18 mostra uma amostragem

adequada

Operaccedilotildees Booleanas com Pontos 46

Figura 18 [10] A figura mostra o diagrama de Voronoi de uma amostragem de pontos S

Da mesma forma que o a amostragem aproxima a curva os veacutertices de Voronoi

aproximam o Eixo Medial

Na praacutetica na reconstruccedilatildeo da superfiacutecie uma aproximaccedilatildeo deste ldquoEixo

Medialrdquo eacute computada (devido agrave dificuldade de computaacute-lo exatamente e em

alguns casos ateacute impossibilidade)

Melhorias Propostas 47

5 Melhorias Propostas

No capiacutetulo 4 apresentamos dois meacutetodos que realizam operaccedilotildees

booleanas em modelos por pontos o meacutetodo de Adams e Dutreacute [2] e o meacutetodo

de Pauly[3] Para esta dissertaccedilatildeo usamos o meacutetodo de Adams e Dutreacute [2] e

propomos as seguintes melhorias

- Alteramos o momento em que eacute feita a classificaccedilatildeo da octree Fazemos

esta classificaccedilatildeo durante a sua criaccedilatildeo Os noacutes filhos de um noacute pai P qualquer

satildeo classificados logo apoacutes a criaccedilatildeo de todos estes filhos de P

independentemente do restante da octree ter sido criada Isso pode ser feito

porque a octree eacute construiacuteda na ordem raiz-esquerda-direita (preorder

traversal) e portanto apoacutes todos os filhos de um noacute pai serem criados a parte

necessaacuteria da octree para a classificaccedilatildeo destes filhos jaacute estaacute criada

- A classificaccedilatildeo da octree eacute otimizada classificando-se os cantos dos seus

noacutes como dentro ou fora do modelo Na classificaccedilatildeo de um noacute n1 a partir de seu

vizinho n2 se os cantos que satildeo comuns a n1 e n2 tiverem a mesma

classificaccedilatildeo esta seraacute dada ao noacute Assim diminuiacutemos o nuacutemero de pesquisas

pelo surfel mais proacuteximo que eacute a parte criacutetica da classificaccedilatildeo dos noacutes da octree

em termos de tempo de processamento

- Acrescentamos um valor miacutenimo (maior que zero) para o nuacutemero de

surfels contidos em um noacute que eacute uma das condiccedilotildees de parada na criaccedilatildeo da

octree Verificamos que desta forma diminui-se a chance de erro na classificaccedilatildeo

de partes criacuteticas como ldquoarestas vivasrdquo

Uma comparaccedilatildeo entre a nossa implementaccedilatildeo e a de Pauly tambeacutem seraacute

feita no capiacutetulo 6

51 Descriccedilatildeo do algoritmo

O algoritmo implementado para esta dissertaccedilatildeo baseado no meacutetodo de

Adams e Dutreacute [2] pode ser dividido nas seguintes partes Criaccedilatildeo e

classificaccedilatildeo de uma octree para cada modelo Teste DentroFora Criaccedilatildeo do

modelo resultado Natildeo foi implementado tratamento especial algum de

interseccedilatildeo para o nosso plugin As proacuteximas seccedilotildees apresentam estas partes

Melhorias Propostas 48

511 Criaccedilatildeo e classificaccedilatildeo de uma octree para cada modelo

As ideacuteias do algoritmo satildeo aqui ilustradas em 2D mas a extensatildeo delas

para 3D eacute feita facilmente

Para cada modelo a octree eacute criada e classificada da seguinte forma

Figura 19-Quadtree classificada Os noacutes mais escuros estatildeo fora do modelo os mais claros dentro e os em tom intermediaacuterio satildeo noacutes de contorno

Gera-se uma ldquocaixa envolventerdquo do modelo contendo todos os surfels e

cria-se o noacute raiz da octree que corresponde a esta ldquocaixa envolventerdquo Este noacute

raiz eacute subdividido em oito filhos e seus surfels satildeo distribuiacutedos entre eles Ao

inveacutes de testarmos os valores de xy e z para cada surfel a fim de determinar

para qual filho ele iraacute utilizamos listas auxiliares Primeiro os surfels satildeo

subdivididos em dois grupos pelos valores de x e armazenados em uma lista

auxiliar Em seguida cada uma das listas eacute subdividida pelo valor de y e as

quatro listas obtidas seratildeo subdivididas pelo valor de z Ao final teremos 8 listas

de surfels cada uma delas pertencente a um filho

Cada noacute seraacute entatildeo novamente subdividido enquanto contiver um nuacutemero

de surfels gt nmin (valor preacute-definido) ou enquanto a profundidade da aacutervore lt pmax

(valor preacute-definido) Na figura 19 pmax = 3 e nmin = 3

Melhorias Propostas 49

Figura 20-O noacute cheio eacute dividido em trecircs partes agrave esquerda a regiatildeo estaacute dentro do modelo agrave direita estaacute fora e entre as duas linhas que dividem o noacute estaacute a regiatildeo que conteacutem os surfels

Os noacutes cheios recebem um tratamento especial Eles satildeo subdivididos em

trecircs partes da seguinte forma uma que estaacute fora do modelo outra que estaacute

dentro e uma que conteacutem os surfels Esta subdivisatildeo eacute feita por meio da criaccedilatildeo

de dois planos paralelos que dividem o noacute Para determinar estes planos

calcula-se o vetor nm igual agrave meacutedia das normais dos surfels do noacute nm = sum ns

sum ns onde ns eacute a normal de cada surfel do noacute Em seguida encontra-se o

surfel com maior produto interno entre a sua normal e a normal meacutedia

d1=Max(nm ٠ ns) Este surfel juntamente com a normal meacutedia define um dos

planos Encontra-se tambeacutem o surfel com menor produto interno entre a sua

normal e a normal meacutedia d2=Min (nm ٠ ns) Este surfel juntamente com a normal

meacutedia define o outro plano (Figura 20) Se o noacute conteacutem surfels de superfiacutecies de

orientaccedilotildees diferentes ele natildeo seraacute subdividido ou seja os planos coincidiratildeo

com os planos que delimitam o proacuteprio noacute Este teste foi implementado da

seguinte forma escolhe-se um surfel qualquer do noacute Calcula-se o produto

interno entre a normal deste surfel e as outras normais dos outros surfels deste

noacute Se algum produto interno for menor que zero este noacute natildeo seraacute subdividido

Apoacutes a etapa de subdivisatildeo classificam-se os oito cantos deste noacute como

dentro ou fora do modelo por meio da classificaccedilatildeo de um ponto que

descreveremos na sub-seccedilatildeo 5111

Melhorias Propostas 50

a b

c d

Figura 21-O noacute a eacute classificado pelo noacute c o noacute d tambeacutem eacute classificado pelo noacute c a classificaccedilatildeo do noacute a eacute propagada para o noacute b

Jaacute os noacutes vazios da octree seratildeo classificados como ldquodentrordquo ou ldquoforardquo do

modelo da seguinte forma cada noacute folha vazio eacute classificado a partir de um de

seus irmatildeos vizinhos adjacentes Se ele possuir um vizinho adjacente cheio ele

seraacute classificado por este vizinho se natildeo possuir os vizinhos adjacentes seratildeo

classificados primeiro e ele teraacute esta mesma classificaccedilatildeo (Figura 21) Como tem

que existir sempre pelo menos um noacute cheio entre os filhos de um noacute pai entatildeo

sempre esta classificaccedilatildeo poderaacute ser feita Com a classificaccedilatildeo de todos os

filhos tem-se tambeacutem a classificaccedilatildeo dos cantos do noacute pai

Mf03c003fmx a b

Figura 22-Os cantos a e b do noacute cheio possuem a mesma classificaccedilatildeo fora do modelo Esta classificaccedilatildeo foi dada ao noacute vazio adjacente

Melhorias Propostas 51

Para classificar um noacute vazio por meio de um noacute cheio verificam-se os

cantos comuns destes dois noacutes se todos os cantos tiverem a mesma

classificaccedilatildeo esta seraacute dada ao noacute vazio (Figura 22) Se houver classificaccedilotildees

diferentes escolhe-se o surfel do noacute cheio mais proacuteximo ao noacute vazio faz-se o

produto interno entre a normal deste surfel e o vetor que liga o centro do noacute

cheio ao centro do noacute vazio (ou o vetor que liga o surfel ao centro do noacute vazio)

Se o produto interno for maior que zero o noacute eacute classificado como ldquoforardquo senatildeo eacute

classificado como ldquodentrordquo Para encontrar o surfel (pertencente a um noacute cheio)

mais proacuteximo ao noacute vazio existem dois casos

- O noacute cheio eacute folha percorre-se toda a lista de surfels e escolhe o surfel

mais proacuteximo da fronteira entre o noacute cheio e o vazio

- O noacute cheio natildeo eacute um noacute folha percorrem-se os filhos do noacute cheio ou seja

esta pesquisa eacute feita descendo na octree a partir do noacute cheio procurando o

surfel mais proacuteximo agrave fronteira do pai com o noacute vazio a ser classificado

Classificando o centro do noacute vazio todo o noacute deve ter a mesma

classificaccedilatildeo pois este noacute natildeo conteacutem surfels Para encontrar o surfel do noacute

vazio mais proacuteximo da fronteira entre o noacute cheio e o vazio basta testar o valor da

coordenada se a fronteira eacute o lado direito do noacute cheio escolhe-se o surfel com

maior coordenada lsquoxrsquo se eacute o lado esquerdo escolhe-se o surfel com menor lsquoxrsquo

se lado superior surfel com maior lsquoyrsquo etc A seguir apresentamos a classificaccedilatildeo

de um ponto qualquer pertencente a um noacute cheio

Figura 23- Quadtree classificada

Melhorias Propostas 52

5111 Classificaccedilatildeo de um ponto de um noacute cheio

Figura 24 [2] A normal n eacute a normal meacutedia e os surfels s1 e s2 juntamente com a normal

n definem as retas que dividem o noacute O ponto a estaacute fora do modelo e o ponto b estaacute

dentro do modelo

Para um ponto localizado dentro do noacute faz-se o seguinte teste se o noacute foi

dividido testa-se de acordo com a divisatildeo do noacute se o ponto estaacute na parte do noacute

que estaacute dentro do modelo ele eacute classificado como ldquodentrordquo se o ponto estaacute na

parte que estaacute fora do modelo ele eacute classificado como ldquoforardquo (Figura 24) se o

ponto estaacute na parte que conteacutem os surfels encontra-se o surfel s pertencente ao

noacute mais proacuteximo do ponto e o classifica de acordo com s seja ns a normal em s

cs a coordenada de s cp a coordenada do ponto Se (cp - cs )٠ ns gt 0 o ponto

seraacute classificado como ldquoforardquo Senatildeo seraacute classificado como ldquodentrordquo

Se o noacute natildeo foi dividido em planos esta classificaccedilatildeo a partir do surfel

mais proacuteximo seraacute sempre feita

512 Teste DentroFora

Melhorias Propostas 53

Figura 25-Duas circunferecircncias e suas quadtrees correspondentes

O Teste DentroFora classifica os surfels de um modelo como dentro ou

fora de outro modelo ou na sua interseccedilatildeo Este teste foi aqui implementado

exatamente como foi proposto em Adams e Dutreacute [2] exceto que natildeo foi

implementado o meacutetodo TINN - Triangle Inequality Nearest Neighbour [19]

Cada octree eacute percorrida verificando-se se os seus noacutes ou surfels estatildeo dentro

fora ou no contorno do outro modelo (Figura 25) Sejam A e B duas octrees e

queremos classificar a octree A As duas octrees (AB) satildeo percorridas partindo

da raiz

Para cada noacute de A existem quatro casos (Figura 26) Para testar estas

situaccedilotildees os boxes dos noacutes satildeo aumentados de rmax o raio do maior surfel do

modelo Isto eacute feito para compensar o fato de que o surfel natildeo eacute apenas um

ponto mas sim considerado como um disco

Os quatro casos satildeo

Se o noacute de A natildeo intersecta B entatildeo todos os surfels deste noacute satildeo

classificados como fora

Se o noacute de A intersecta apenas noacutes de B que estatildeo fora do modelo

todos os surfels deste noacute satildeo fora

Se o noacute de A intersecta apenas noacutes de B que estatildeo dentro do modelo

todos os surfels deste noacute satildeo dentro

Melhorias Propostas 54

Se o noacute de A intersecta noacutes de B que estatildeo dentro e tambeacutem noacutes de B

que estatildeo fora testa-se se este noacute de A eacute ou natildeo folha Se natildeo for folha

percorre-se os filhos deste noacute de A ateacute encontrar um noacute folha cheio que

intersecta B Para cada surfel sa deste noacute folha de A encontra-se o surfel de B

mais proacuteximo e classifica-se a coordenada de sa da forma apresentada na seccedilatildeo

5111 Seja sb o surfel usado na classificaccedilatildeo de sa Se os discos de sb e sa

se intersectam sa eacute classificado como ldquointerseccedilatildeordquo

(a) (b)

(c) (d)

Figura 26- a modelos natildeo se intersectam b modelo intersecta noacutes fora c modelo intersecta apenas noacutes dentro d modelo intersecta noacutes dentro e noacutes fora

513 Criaccedilatildeo do modelo resultado

Um novo modelo eacute criado com os seguintes surfels (de acordo com a

operaccedilatildeo booleana escolhida pelo usuaacuterio - veja Regra 1 da seccedilatildeo 41)

Uniatildeo - surfels de A que estatildeo fora de B + surfels de B que estatildeo fora de A

Melhorias Propostas 55

Interseccedilatildeo - surfels de A que estatildeo dentro de B + surfels de B que estatildeo

dentro de A

Diferenccedila A-B - surfels de A que estatildeo fora de B + surfels de B que estatildeo

dentro de A (com orientaccedilatildeo invertida)

Como natildeo foi implementado tratamento especial algum de interseccedilatildeo para

o nosso plugin os surfels que se intersectam satildeo mantidos no modelo resultado

final sem modificaccedilotildees

Descrito o algoritmo vejamos a seguir a sua implementaccedilatildeo

52 Implementaccedilatildeo

Este algoritmo foi implementado na forma de um plugin para o software

PointShop 3D [11] Este plugin foi desenvolvido na linguagem C e no sistema

operacional Windows

A escolha deste tipo de implementaccedilatildeo permitiu-nos usar o software

PointShop para os testes do algoritmo Estes testes foram feitos com os modelos

disponibilizados para o PointShop [11] Nesta seccedilatildeo apresentaremos o software

PointShop e as principais estruturas de dados usadas em nosso plugin

O Pointshop eacute um software aberto com seu coacutedigo disponiacutevel e preparado

para trabalhar com plugins Eacute um software de ediccedilatildeo de modelos 3D por pontos

Ele permite aleacutem de visualizar o modelo alterar as suas caracteriacutesticas como

cor brilho e fazer mapeamento de textura iluminaccedilatildeo filtragem (Figura 27)

Melhorias Propostas 56

Figura 27-Software PointShop 3D com dois modelos carregados na sua cena

Aleacutem disso pode-se criar uma cena com vaacuterios modelos e visualizaacute-los de

qualquer ponto de vista Implementa o virtual trackball para rotacionaacute-los e

transladaacute-los Usa uma iluminaccedilatildeo simples direcional A sua arquitetura eacute

extensiacutevel permite que o usuaacuterio adicione seus proacuteprios componentes ao

sistema Possui trecircs tipos de componentes

ldquoToolsrdquo fornece funcionalidades para ediccedilatildeo interativa de superfiacutecie Satildeo

disponibilizados na ldquotoolbarrdquo

Plugins fornece funcionalidades para processar em um soacute passo

modelos ou partes deles selecionadas Satildeo disponibilizados no menu ldquoPluginsrdquo

Renderes fornece funcionalidades de display para os modelos

Para esta dissertaccedilatildeo foi escolhida a construccedilatildeo do componente Plugin

por adequar-se agrave nossa proposta e ser a mais simples de ser construiacuteda O

PointShop [11] jaacute conteacutem uma tool que executa operaccedilotildees booleanas e

deformaccedilatildeo free-form sobre os modelos carregados na cena usando o meacutetodo

de Pauly [3] apresentado no capiacutetulo 4 O nosso plugin Operaccedilotildees Booleanas

implementa o algoritmo descrito na seccedilatildeo anterior baseado na proposta de

Melhorias Propostas 57

Adams e Dutreacute [2] Uma comparaccedilatildeo entre o nosso plugin e a tool de Pauly [3] eacute

feita no capiacutetulo 6

Figura 28-Menu do PointShop com o plugin e as opccedilotildees para operaccedilotildees booleanas

Para se executar o plugin o usuaacuterio precisa carregar dois modelos na

cena do PointShop acionar o plugin informando a operaccedilatildeo que seraacute executada

O plugin executaraacute o algoritmo acima proposto e carregaraacute o resultado na cena

do Pointshop retirando os modelos anteriores

521 Estruturas de Dados

Como vimos o software PointShop [11] trabalha com modelos por pontos

Um modelo deste software descrito na seccedilatildeo 42 conteacutem todas as informaccedilotildees

que o algoritmo proposto em Bart [2] necessita Abaixo relacionamos as

Melhorias Propostas 58

principais estruturas de dados do PointShop usadas no plugin e as principais

estruturas de dados do nosso plugin

As principais classes do PointShop usadas no plugin satildeo

Classe Scene

Classe Objects

Classe SurfelColections

Classe Surfel

Classe StatusBar

Classe Transformer

A hierarquia de dados eacute a seguinte a Scene conteacutem vaacuterios Objects os

quais conteacutem SurfelColections Cada SurfelColections conteacutem Surfels que

suportam uma ou mais propriedades tais como cor difusa cor especular

Classe Scene Classe que representa uma cena que conteacutem modelos

Classe Object Um modelo eacute representado pela classe Object que

conteacutem uma SurfelCollection e as matrizes de transformaccedilatildeo para rotaccedilatildeo

escala e translaccedilatildeo Cada Object eacute identificado pelo seu nome que eacute uacutenico na

Scene O meacutetodo getUniqueName retorna um nome uacutenico Cada Object tem sua

proacutepria matriz de transformaccedilatildeo que pode ser modificada com setRotation

rotate setPosition translate setScale e scale Objects podem ser copiados com

copy Objects consiste em um conjunto de surfels os quais podem ser

recuperados pela getSurfelCollection O Object pode ser ativado com

setActiveObject e recuperado com getActiveObject

Objects podem ser adicionados ou removidos com addObject e

removeObject Os Objects podem ser obtidos pela getFirstObject e

getNextObject

Classe SurfelCollection representa o conjunto de surfels de um modelo

Cada surfelcollection consiste em um conjunto de surfels (SurfelInterface) de

tamanho obtido por getNofSurfels Os surfels podem ser recuperados com

getFirstSurfel getCurrentSurfel e getNextSurfel

A SurfelCollection conteacutem um PropertyDescriptor e uma SurfelList

A SurfelList eacute uma lista duplamente encadeada de surfels Possui os

atributos firstSurfel lastSurfel currentSurfel que satildeo ponteiros para uma

SurfelInterface nSurfels que eacute o nuacutemero de Surfels

A SurfelInterface define a API para os surfels que satildeo os menores

elementos que compotildeem um Object Podem ser considerados como pontos com

uma normal que define a orientaccedilatildeo do ciacuterculo (ou elipse) que seraacute desenhado

Melhorias Propostas 59

tatildeo logo o surfel seja renderizado Tem como atributos dois ponteiros (next e

prev) para SurfelInterface

PropertyDescriptor consiste em ateacute 32 valores descrevendo quais as

propriedades a SurfelInterface suporta

Classe Surfel classe que representa o surfel

Classe StatusBar classe que imprime mensagens na tela Os plugins

podem mandar mensagens para o usuaacuterio pela StatusBar

Mensagens texto podem ser impressas com showMessage O progresso

de uma operaccedilatildeo pode ser indicado com setProgress ou resetProgress

Classe Transformer representa a transformaccedilatildeo entre sistemas de

coordenadas Esta classe fornece meacutetodos para transformar pontos e vetores

entre os diferentes sistemas de coordenadas do Pointshop

A seguir apresentamos as principais estruturas de dados do plugin

Operaccedilotildees Booleanas

As principais estruturas de dados do plugin satildeo boundingbox tree no

lista_surfel surfel

Boundingbox conteacutem dois pontos 3D que definem uma caixa que conteacutem

o modelo um ponto com menores coordenadas xy e z e outro ponto com

maiores xyz

Tree representa a octree do modelo Cada registro conteacutem um ponteiro

para um noacute e oito ponteiros para as 8 octrees filhas

No representa um noacute da octree Conteacutem os seguintes dados

- localizaccedilatildeo do noacute que eacute o canto inferior esquerdo do noacute

- lista_surfel (preenchida apenas para noacutes folha cheios)

- quantidade de surfels do noacute

- classificaccedilatildeo do noacute como dentro fora ou contorno

- classificaccedilatildeo do noacute em relaccedilatildeo a outro modelo

- indica se o noacute eacute folha ou natildeo

- vetor que eacute a meacutedia das normais dos surfels do noacute

- ponto que eacute a meacutedia das localizaccedilotildees dos surfels do noacute

- surfel que tem (entre todos os surfels do noacute) o maior produto interno

entre a sua normal e a normal meacutedia

- surfel que tem (entre todos os surfels do noacute) o menor produto interno

entre a sua normal e a normal meacutedia

- produto interno maacuteximo e miacutenimo entre as normais dos surfels do noacute e a

normal meacutedia deste noacute

Melhorias Propostas 60

- indica se o noacute conteacutem surfels com normais em sentido oposto (produto

interno entre elas eacute menor que zero)

- classificaccedilatildeo dos oito cantos do noacute

lista_surfels lista em que cada registro conteacutem um apontador para um

surfel e um apontador para o proacuteximo registro

surfel representa o surfel da octree Conteacutem a classificaccedilatildeo em relaccedilatildeo a

outro modelo e um ponteiro para o surfel do Poinshop

Resultados 61

6 Resultados

Neste capiacutetulo apresentamos os testes realizados com o plugin para o

PointShop implementado para esta dissertaccedilatildeo a comparaccedilatildeo deste plugin com

o plugin de Pauly [3] e a comparaccedilatildeo entre o meacutetodo de Adams e Dutreacute [2] e o

meacutetodo de Pauly [3]

61 Testes

Os testes foram feitos em um PC x86 Family 6 261600 KB de RAM sem

placa graacutefica sistema operacional Windows 2000 O plugin foi implementado na

linguagem C

Os modelos usados para os testes satildeo modelos disponibilizados no

PointShop [11] Vale lembrar que o meacutetodo implementado em nosso plugin eacute

restrito a modelos soacutelidos e portanto foram usados apenas estes modelos

soacutelidos para os testes

O modelo na Figura 29 que eacute um dos modelos disponibilizados no

PointShop [11] foi usado para mostrar o resultado das operaccedilotildees realizadas

pelo plugin implementado nesta dissertaccedilatildeo O modelo Igea eacute um modelo soacutelido

que conteacutem 134345 surfels

Resultados 62

Figura 29-Modelo do PointShop Igea

Para realizar as operaccedilotildees este modelo foi carregado na cena do

PointShop duas vezes e um deles colorido de vermelho As Figuras 30 31 32

mostram o resultado da operaccedilatildeo de uniatildeo interseccedilatildeo e diferenccedila

respectivamente Os nuacutemeros de surfels dos modelos resultantes satildeo mostrados

na Tabela 2

Resultados 63

Figura 30-Resultado da uniatildeo de duas Igeas

Figura 31-Resultado da interseccedilatildeo de duas Igeas

Resultados 64

Figura 32-Resultado da diferenccedila entre duas Igeas

Tabela 2-Nuacutemero de surfels dos modelos resultantes

Observamos que o nuacutemero de surfels dos modelos resultantes estaacute

coerente com as figuras dos seus modelos

Para avaliar o tempo de processamento das operaccedilotildees foram realizados

vaacuterios testes com o objetivo de obter uma meacutedia dos tempos de realizaccedilatildeo de

cada operaccedilatildeo Tambeacutem foram armazenados os tempos da criaccedilatildeo das duas

octrees e da classificaccedilatildeo de todos os surfels dos dois objetos (como dentro ou

fora do outro modelo) Estes testes foram feitos usando o modelo Igea A meacutedia

dos tempos de processamento foi calculada e os resultados satildeo mostrados na

Tabela 3 Verificamos que o maior tempo gasto eacute para criaccedilatildeo das octrees

Verificamos tambeacutem que este resultado apresentado eacute similar ao resultado

verificado empiricamente com o plugin de Pauly [3] Os tempos gastos para

realizar as operaccedilotildees satildeo similares e o maior tempo gasto no plugin de Pauly

tambeacutem eacute para inicializaccedilatildeo de suas estruturas de dados que incluem a kd-tree

Operaccedilatildeo Nuacutemero de surfels do modelo resultado

Uniatildeo 189715

Interseccedilatildeo 72225

Diferenccedila 134552

Resultados 65

Operaccedilatildeo Criaccedilatildeo das

Octrees (seg)

Classificaccedilatildeo

(seg)

Criaccedilatildeo do

resultado (seg)

Total (seg)

Uniatildeo 39375 1324 18925 7154

Interseccedilatildeo 38585 1585 09547 63982

Diferenccedila 399875 1504 1729 729475

Tabela 3- Meacutedia dos tempos de processamento para as operaccedilotildees com duas Igeas

Com o objetivo de expor melhor os resultados deste trabalho

apresentamos abaixo mais um teste das operaccedilotildees booleanas usando o nosso

plugin Os modelos usados para este segundo teste satildeo o Max Planck e o Male

ambos modelos soacutelidos disponibilizados no PointShop Estes modelos satildeo

mostrados nas figura 33 e 34

O primeiro Max Planck conteacutem 52809 surfels

Figura 33-Modelo do PointShop MaxPlanck

O segundo modelo abaixo Male conteacutem 148138 surfels

Resultados 66

Figura 34-Modelo do PointShop Male

As Figuras 353637 mostram o resultado da operaccedilatildeo de uniatildeo interseccedilatildeo

e diferenccedila respectivamente usando os dois modelos acima Podemos observar

pela figura 35 que o resultado da operaccedilatildeo de diferenccedila neste caso gerou um

modelo resultado com trecircs partes desconexas Os nuacutemeros de surfels de cada

modelo resultado satildeo mostrados na Tabela 5

Figura 35- Resultado da Uniatildeo do modelo Male com MaxPlanck

Resultados 67

Figura 36-Resultado da interseccedilatildeo do modelo Male com o MaxPlanck

Figura 37-Resultado da diferenccedila do modelo Male do modelo MaxPlanck

As meacutedias de tempos de processamento foram calculadas da mesma

forma que o primeiro teste com o modelo Igea acima apresentado Os

resultados satildeo mostrados na Tabela 4 Podemos observar que este teste

Resultados 68

apresenta tempos um pouco menores que o teste com o modelo Igea Isto se

deve ao fato de que o modelo MaxPlanck ser significativamente menor que o

modelo Igea MaxPlanck possui 52809 surfels e Igea conteacutem 134345 surfels

Operaccedilatildeo Criaccedilatildeo das

Octrees (seg)

Classificaccedilatildeo

(seg)

Criaccedilatildeo do

resultado (seg)

Total

(seg)

Uniatildeo 3012 1254 102 5285

Interseccedilatildeo 2985 0901 0861 4747

Diferenccedila 2965 0911 0791 4667

Tabela 4-Tempo de processamento das operaccedilotildees com os modelos MaxPlanck e Male

Operaccedilatildeo Nuacutemero de surfels do resultado

Uniatildeo 126532

Interseccedilatildeo 88414

Diferenccedila 77635

Tabela 5-Nuacutemero de surfels dos modelos resultados das operaccedilotildees com os modelos MaxPlanck e Male

Em seguida apresentaremos uma comparaccedilatildeo entre o nosso plugin e o

plugin de Pauly[3] e tambeacutem uma comparaccedilatildeo entre o meacutetodo de Adams e Dutreacute

[2] e o meacutetodo de Pauly [3]

62 Comparaccedilatildeo entre os dois meacutetodos que realizam operaccedilotildees booleanas

A comparaccedilatildeo entre os meacutetodos de Pauly[3] e de Adams e Dutreacute foi feita

em termos de tempo de processamento e em termos conceituais Em termos de

tempo de processamento comparamos o plugin de Pauly[3] com o nosso plugin

Em termos de tempo de processamento verifica-se empiricamente que os

dois meacutetodos apresentam tempos bastante similares Entretanto o tempo de

processamento do algoritmo aqui implementado ainda pode ser melhorado com

Resultados 69

o uso do meacutetodo TINN [19] que foi proposto em Adams[2] - para otimizar a

pesquisa do surfel mais proacuteximo a um ponto que estaacute localizado na regiatildeo de um

noacute que conteacutem surfels - veja seccedilatildeo 42 O uso deste meacutetodo natildeo foi

implementado para este trabalho e a sua implementaccedilatildeo melhoraria o tempo de

resposta do algoritmo Aleacutem disso o trabalho de Sara F Frisken [12] citado no

capiacutetulo 2 apresenta uma otimizaccedilatildeo no uso de octrees que pode ser

incorporada no algoritmo implementado neste trabalho

Em termos conceituais vamos fazer a comparaccedilatildeo do uso do que

chamamos aqui de Regra 2 do tratamento de interseccedilatildeo e do tratamento de

ldquoarestas vivasrdquo

Como vimos na seccedilatildeo 41 tanto o algoritmo implementado nesta

dissertaccedilatildeo baseado no trabalho de Adams e Dutreacute como o meacutetodo de Pauly

[3] parte do que chamamos aqui de Regra 2 para realizar operaccedilotildees booleanas

com pontos Mas cada um destes meacutetodos daacute um tratamento diferente para o

uso desta regra

O meacutetodo de Pauly usa a Regra 2 para classificaccedilatildeo de cada ponto ou de

cada surfel Para classificar um surfel de B sb como dentro ou fora de A eacute

encontrado o surfel de A sa mais proacuteximo a sb e sb eacute classificado a partir de sa

Para encontrar sa Pauly utiliza uma kd-tree Como esta pesquisa para encontrar

sa eacute cara (mesmo usando uma kd-tree) Pauly utiliza uma esfera que conteacutem

pontos com a mesma classificaccedilatildeo (seccedilatildeo 432) e diminui em 90 este nuacutemero

de pesquisas Pauly utiliza tambeacutem a representaccedilatildeo impliacutecita MLS (Moving Least

Squares) para casos em que a Regra 2 poderia falhar e para tratamento de

interseccedilotildees Entretanto o nuacutemero destes casos em que a Regra 2 poderia falhar

eacute muito pequeno E a representaccedilatildeo MLS natildeo eacute uma estrutura simples de ser

implementada Portanto natildeo encontramos vantagens em usar MLS para estes

casos O meacutetodo de Adams e Dutreacute natildeo trata estes casos e na praacutetica

apresenta resultados bastante satisfatoacuterios como foi mostrado Portanto

consideramos que valeria a pena fazer algum tratamento especial para estes

casos se fosse um procedimento simples Para a execuccedilatildeo do algoritmo de

Pauly o uso de MLS natildeo interfere significativamente porque a construccedilatildeo desta

representaccedilatildeo natildeo eacute feita somente para realizar operaccedilotildees booleanas Os testes

empiacutericos que fizemos com o algoritmo de Pauly natildeo incluem a construccedilatildeo desta

representaccedilatildeo

Aparentemente os dois algoritmos satildeo bastante parecidos um usa octrees

e o outro usa kd-tree As duas estruturas de dados satildeo simples e otimizam a

classificaccedilatildeo dos surfels de um modelo como dentro ou fora do outro modelo

Resultados 70

Mas existe uma diferenccedila conceitual entre dois que merece ser destacada O

algoritmo aqui implementado usa a Regra 2 para classificaccedilatildeo dos noacutes de uma

octree e armazena esta octree classificada (ver capiacutetulo 5) Assim na maioria dos

casos natildeo seraacute necessaacuterio encontrar o surfel mais proacuteximo para classificar um

ponto (ou um surfel) como fora ou dentro de um modelo Caso o ponto esteja em

uma aacuterea da octree classificada ele teraacute a classificaccedilatildeo dada agravequela aacuterea A

pesquisa ao surfel mais proacuteximo seraacute feita apenas nos casos em que o ponto a

ser classificado estaacute localizado entre os planos que subdividem um noacute cheio

O uso desta octree classificada levanta uma questatildeo que natildeo foi citada no

trabalho de Adams e Dutreacute que eacute a proximidade desta estrutura (armazenada)

de octree classificada com uma representaccedilatildeo volumeacutetrica do objeto Sendo

assim esta estrutura pode ser aproveitada para outras funccedilotildees aleacutem da

classificaccedilatildeo dos surfels Por exemplo podemos ter uma aproximaccedilatildeo do

volume de uma cena somando os volumes aproximados dos modelos que a

compotildeem Como o enfoque deste trabalho eacute operaccedilatildeo booleana natildeo vamos nos

aprofundar nesta questatildeo

Outra importante diferenccedila entre os dois trabalhos que jaacute foi explicada na

seccedilatildeo 432 eacute que o meacutetodo de Pauly aplica-se a modelos soacutelidos ou natildeo

soacutelidos enquanto que o meacutetodo de Adams e Dutreacute aplica-se somente a modelos

soacutelidos

Quanto ao tratamento de interseccedilatildeo em termos de visualizaccedilatildeo todos os

dois resolvem bem o problema O tratamento de interseccedilatildeo nos dois trabalhos

tambeacutem resolve o problema da validade da Regra 2 (ver seccedilatildeo 44) Entretanto

o tratamento de Adams e Dutreacute natildeo depende da renderizaccedilatildeo sendo portanto

mais portaacutevel Aleacutem disso uma desvantagem do meacutetodo de Pauly eacute o uso da

representaccedilatildeo impliacutecita MLS (ldquoMoving Least Squaresrdquo) do objeto para obter os

pontos exatamente na curva de interseccedilatildeo Esta representaccedilatildeo torna o

tratamento de interseccedilatildeo mais complexo e a vantagem apresentada natildeo eacute tatildeo

significativa para este tratamento de interseccedilatildeo

Conclusatildeo 71

7 Conclusatildeo

Concluiacutemos entatildeo que as escolhas de Adams e Dutreacute por usar uma

octree classificada e pelo tratamento dado agrave interseccedilatildeo satildeo mais abrangentes

que a escolha de Pauly E consideramos que quanto mais abrangente for uma

escolha conceitual mais resultados poderemos tirar dela No caso de Adams e

Dutreacute eles estendem o problema de classificar um ponto para classificar todo o

modelo Como foi citado ele quase fornece uma representaccedilatildeo volumeacutetrica do

modelo Esta aproximada representaccedilatildeo volumeacutetrica pode nos fornecer outras

informaccedilotildees como por exemplo o volume aproximado do modelo

Aleacutem disso o uso da representaccedilatildeo impliacutecita MLS no meacutetodo de Pauly cria

uma complexidade a mais para o meacutetodo sem apresentar vantagens para a

realizaccedilatildeo de operaccedilotildees booleanas que eacute o nosso enfoque

Logo podemos dizer que o meacutetodo de Adams e Dutreacute apresenta as

seguintes vantagens em relaccedilatildeo ao de Pauly

- a estrutura de octree classificada aleacutem de ser usada para classificaccedilatildeo

fornece informaccedilotildees adicionais como volume aproximado do objeto

- o tempo de processamento no meacutetodo de Adams e Dutreacute tende a ser

melhor que no meacutetodo de Pauly se implementadas as melhorias acima citadas e

se colocaacutessemos em consideraccedilatildeo o uso da representaccedilatildeo impliacutecita MLS

(Moving Least Squares)

- o tratamento de interseccedilatildeo de Adams e Dutreacute apresenta a vantagem da

portabilidade ou seja iraacute funcionar independente do algoritmo de renderizaccedilatildeo

utilizado

E as vantagens do meacutetodo de Pauly em relaccedilatildeo ao de Adams e Dutreacute

- a colocaccedilatildeo de surfels exatamente na curva de interseccedilatildeo

- a possibilidade de trabalhar com modelos soacutelidos ou natildeo soacutelidos

E finalizando concluiacutemos que o estudo relatado nesta dissertaccedilatildeo foi

importante por

- fornecer um breve estudo sobre modelagem por pontos uma nova e

promissora aacuterea dentro da computaccedilatildeo graacutefica

Conclusatildeo 72

- por apresentar uma avaliaccedilatildeo dos dois trabalhos existentes sobre

operaccedilotildees booleanas com pontos encontrando as vantagens de cada um

e levantando questotildees que natildeo tinham sido citadas nos trabalhos originais

- por propor e implementar melhorias ao trabalho de Adams e Dutreacute

71 Trabalhos Futuros

Nossa implementaccedilatildeo pode ser ainda evoluiacuteda com as propostas

apresentadas na seccedilatildeo 62 Como observamos o tempo de processamento do

algoritmo aqui implementado ainda pode ser melhorado com o uso do meacutetodo

TINN [19] - que foi proposto em Adams[2] - para otimizar a pesquisa do surfel

mais proacuteximo a um ponto que estaacute localizado na regiatildeo de um noacute que conteacutem

surfels Aleacutem disso o trabalho Simple and Efficient Trasversal Methods for

Quadtrees and Octrees de Sara F Frisken [12] citado no capiacutetulo 2 apresenta

uma otimizaccedilatildeo no uso de octrees Outra proposta para melhorar o tempo de

processamento do algoritmo aqui implementado eacute usar a forma de trabalhar com

octrees apresentada neste trabalho

O trabalho de Adams e Dutreacute [2] eacute aplicado apenas a objetos soacutelidos O

nosso plugin portanto aplica-se somente a este tipo de objeto Jaacute o trabalho de

Pauly[3] eacute aplicado tambeacutem a modelos natildeo soacutelidos Apresentamos como

proposta a um trabalho futuro a extensatildeo do algoritmo aqui implementado para

modelos natildeo soacutelidos O surfel pode conter uma informaccedilatildeo adicional que indica

se ele estaacute delimitando um volume ou natildeo Assim pode-se ter um modelo com

ldquopartes soacutelidasrdquo e ldquopartes natildeo soacutelidasrdquo Por exemplo a uniatildeo de um plano com

uma esfera poderia resultar numa esfera com ldquoabasrdquo (seriam as partes do plano

que estariam fora da esfera) O modelo resultado teria uma parte correspondente

a um espaccedilo 3D (esfera) e outra parte que seria uma superfiacutecie 2D posicionada

no espaccedilo 3D sem delimitar algum volume (abas)

Muitos trabalhos podem ser desenvolvidos aplicando-se o modelo por

pontos em animaccedilatildeo jogos visualizaccedilatildeo de terrenos criaccedilatildeo de protoacutetipos etc

considerando-se a eficiecircncia e simplicidade do modelo E mais especificamente

as operaccedilotildees booleanas com pontos podem ser aplicadas para criaccedilatildeo de

cenaacuterios testes de colisotildees e nestes casos a representaccedilatildeo usando octrees

pode ser mais explorada considerando-se o seu potencial de representaccedilatildeo

volumeacutetrica de um objeto

Referecircncias Bibliograacuteficas 73

8 Referecircncias Bibliograacuteficas

[1] MAumlNTYLAuml M An Introduction to Solid Modeling Computer Science Press 1988

[2] ADAMS B DUTREacute P Interactive Boolean Operations on Surfel-

Bounded Solids Proceedings of SIGGRAPH 2003 San Diego USA 2003

[3] PAULY M KEISER R KOBBELT L GROSS M Shape Modeling

with Point-Sampled Geometry SIGGRAPH 2003 Computer Graphics

Proceedings Annual Conference Series ACM Press ACM SIGGRAPH 2003

[4] LEVOY M WHITTED T The Use of Points as Display Primitives

Technical Report TR 85-022 The University of North Carolina at Chapel Hill

Department of Computer Science 1985

[5] PFISTER H ZWICKER M VAN BAAR J GROSS M 2000 Surfels

Surface Elements as Rendering Primitives SIGGRAPH 2000 pp 335ndash342 New

Orleans LA July 23-28 2000

[6] ZWICKER M PFISTER H VAN BAAR J GROSS M Surface

Splatting SIGGRAPH 2001

[7] PAULY M KOBBELT L GROSS M Multiresolution Modeling of

Point-Sampled Geometry CS Techinical Report 378 September 16 2002

[8] CURLESS B New Methods for Surface Reconstruction from Range Images PhD thesis Stanford University 1997

[9] RUSINKIEWICZ S Real-time Acquisition and Rendering of Large 3D Models PhD thesis Stanford University 2001

Referecircncias Bibliograacuteficas 74

[10] AMENTA N BERN M KAMVYSSELIS M A new Voronoi-Based

Surface Reconstruction Algorithm SIGGRAPH 98 Conference proceedings pp

415-421 New York 1998

[11] ZWICKER M PAULY M KNOLL O GROSS M Pointshop 3D an

Interactive System for Point-Based Surface Editing Proceedings of SIGGRAPH 2002 San Antonio TX July 2002

[12] FRISKEN S PERRY R Simple and Efficient Traversal Methods for

Quadtrees and Octrees Journal of Graphics Tools Vol 7 Issue 3 May 2003

[13] CORREcircA W T OLIVEIRA M M Silva C T Wang J

Modeling and Rendering of Real Environments

Revista de Informaacutetica Teoacuterica e Aplicada (Brazilian Journal of Theoretic and Applied Computing) 9(2)127-156 2002

[14] DAVIS J MARSCHNER S GARR M LEVOY M Filling Holes in

Complex Surfaces Using Volumetric Diffusion First International Symposium on 3D Data Processing Visualization Transmission June 2002

[15] RAumlSAumlNEN J Surface Splatting Theory Extensions and Implementation Masterrsquos Thesis Dept of Computer Science Helsinki

University of Technology May 28 2002

[16] PAULY M Point Primitives for Interactive Modeling and Processing of 3D Geometry PhD thesis Federal Institute of Technology (ETH)

of Zurich 2003

[17] HOPPE H DEROSE T DUCHAMP T MCDONALD J

STUELZLE W Surface Reconstruction from Unorganized Points Computer Graphics 26(2)71ndash78 July 1992

[18] ALEXA M BEHR J COHEN-OR D FLEISHMAN S LEVIN D

SILVA C T Point Set Surfaces IEEE Visualization 2001 pp 21ndash28 October

2001

Referecircncias Bibliograacuteficas 75

[19] GREENSPAN M GODIN G TALBOT J Acceleration of Binning

Nearest Neighbor Methods Proceedings of Vision Interface 2000 pp 337-

344

[20] MENCL R Reconstruction of Surfaces from Unorganized Three-Dimensional Point Clouds Dissertation Dortmund Univ 2001

[21] KRIVANEK J Representing and Rendering Surfaces With Points

httpciteseernjneccomkrivanek03representinghtml Acesso em 30 jul

2003

[22] KRISTJANSSON ET AL Approximate Boolean Operations on Free-

form Solids Proceedings of SIGGRAPH 01 2001

Operaccedilotildees Booleanas com Pontos 46

Figura 18 [10] A figura mostra o diagrama de Voronoi de uma amostragem de pontos S

Da mesma forma que o a amostragem aproxima a curva os veacutertices de Voronoi

aproximam o Eixo Medial

Na praacutetica na reconstruccedilatildeo da superfiacutecie uma aproximaccedilatildeo deste ldquoEixo

Medialrdquo eacute computada (devido agrave dificuldade de computaacute-lo exatamente e em

alguns casos ateacute impossibilidade)

Melhorias Propostas 47

5 Melhorias Propostas

No capiacutetulo 4 apresentamos dois meacutetodos que realizam operaccedilotildees

booleanas em modelos por pontos o meacutetodo de Adams e Dutreacute [2] e o meacutetodo

de Pauly[3] Para esta dissertaccedilatildeo usamos o meacutetodo de Adams e Dutreacute [2] e

propomos as seguintes melhorias

- Alteramos o momento em que eacute feita a classificaccedilatildeo da octree Fazemos

esta classificaccedilatildeo durante a sua criaccedilatildeo Os noacutes filhos de um noacute pai P qualquer

satildeo classificados logo apoacutes a criaccedilatildeo de todos estes filhos de P

independentemente do restante da octree ter sido criada Isso pode ser feito

porque a octree eacute construiacuteda na ordem raiz-esquerda-direita (preorder

traversal) e portanto apoacutes todos os filhos de um noacute pai serem criados a parte

necessaacuteria da octree para a classificaccedilatildeo destes filhos jaacute estaacute criada

- A classificaccedilatildeo da octree eacute otimizada classificando-se os cantos dos seus

noacutes como dentro ou fora do modelo Na classificaccedilatildeo de um noacute n1 a partir de seu

vizinho n2 se os cantos que satildeo comuns a n1 e n2 tiverem a mesma

classificaccedilatildeo esta seraacute dada ao noacute Assim diminuiacutemos o nuacutemero de pesquisas

pelo surfel mais proacuteximo que eacute a parte criacutetica da classificaccedilatildeo dos noacutes da octree

em termos de tempo de processamento

- Acrescentamos um valor miacutenimo (maior que zero) para o nuacutemero de

surfels contidos em um noacute que eacute uma das condiccedilotildees de parada na criaccedilatildeo da

octree Verificamos que desta forma diminui-se a chance de erro na classificaccedilatildeo

de partes criacuteticas como ldquoarestas vivasrdquo

Uma comparaccedilatildeo entre a nossa implementaccedilatildeo e a de Pauly tambeacutem seraacute

feita no capiacutetulo 6

51 Descriccedilatildeo do algoritmo

O algoritmo implementado para esta dissertaccedilatildeo baseado no meacutetodo de

Adams e Dutreacute [2] pode ser dividido nas seguintes partes Criaccedilatildeo e

classificaccedilatildeo de uma octree para cada modelo Teste DentroFora Criaccedilatildeo do

modelo resultado Natildeo foi implementado tratamento especial algum de

interseccedilatildeo para o nosso plugin As proacuteximas seccedilotildees apresentam estas partes

Melhorias Propostas 48

511 Criaccedilatildeo e classificaccedilatildeo de uma octree para cada modelo

As ideacuteias do algoritmo satildeo aqui ilustradas em 2D mas a extensatildeo delas

para 3D eacute feita facilmente

Para cada modelo a octree eacute criada e classificada da seguinte forma

Figura 19-Quadtree classificada Os noacutes mais escuros estatildeo fora do modelo os mais claros dentro e os em tom intermediaacuterio satildeo noacutes de contorno

Gera-se uma ldquocaixa envolventerdquo do modelo contendo todos os surfels e

cria-se o noacute raiz da octree que corresponde a esta ldquocaixa envolventerdquo Este noacute

raiz eacute subdividido em oito filhos e seus surfels satildeo distribuiacutedos entre eles Ao

inveacutes de testarmos os valores de xy e z para cada surfel a fim de determinar

para qual filho ele iraacute utilizamos listas auxiliares Primeiro os surfels satildeo

subdivididos em dois grupos pelos valores de x e armazenados em uma lista

auxiliar Em seguida cada uma das listas eacute subdividida pelo valor de y e as

quatro listas obtidas seratildeo subdivididas pelo valor de z Ao final teremos 8 listas

de surfels cada uma delas pertencente a um filho

Cada noacute seraacute entatildeo novamente subdividido enquanto contiver um nuacutemero

de surfels gt nmin (valor preacute-definido) ou enquanto a profundidade da aacutervore lt pmax

(valor preacute-definido) Na figura 19 pmax = 3 e nmin = 3

Melhorias Propostas 49

Figura 20-O noacute cheio eacute dividido em trecircs partes agrave esquerda a regiatildeo estaacute dentro do modelo agrave direita estaacute fora e entre as duas linhas que dividem o noacute estaacute a regiatildeo que conteacutem os surfels

Os noacutes cheios recebem um tratamento especial Eles satildeo subdivididos em

trecircs partes da seguinte forma uma que estaacute fora do modelo outra que estaacute

dentro e uma que conteacutem os surfels Esta subdivisatildeo eacute feita por meio da criaccedilatildeo

de dois planos paralelos que dividem o noacute Para determinar estes planos

calcula-se o vetor nm igual agrave meacutedia das normais dos surfels do noacute nm = sum ns

sum ns onde ns eacute a normal de cada surfel do noacute Em seguida encontra-se o

surfel com maior produto interno entre a sua normal e a normal meacutedia

d1=Max(nm ٠ ns) Este surfel juntamente com a normal meacutedia define um dos

planos Encontra-se tambeacutem o surfel com menor produto interno entre a sua

normal e a normal meacutedia d2=Min (nm ٠ ns) Este surfel juntamente com a normal

meacutedia define o outro plano (Figura 20) Se o noacute conteacutem surfels de superfiacutecies de

orientaccedilotildees diferentes ele natildeo seraacute subdividido ou seja os planos coincidiratildeo

com os planos que delimitam o proacuteprio noacute Este teste foi implementado da

seguinte forma escolhe-se um surfel qualquer do noacute Calcula-se o produto

interno entre a normal deste surfel e as outras normais dos outros surfels deste

noacute Se algum produto interno for menor que zero este noacute natildeo seraacute subdividido

Apoacutes a etapa de subdivisatildeo classificam-se os oito cantos deste noacute como

dentro ou fora do modelo por meio da classificaccedilatildeo de um ponto que

descreveremos na sub-seccedilatildeo 5111

Melhorias Propostas 50

a b

c d

Figura 21-O noacute a eacute classificado pelo noacute c o noacute d tambeacutem eacute classificado pelo noacute c a classificaccedilatildeo do noacute a eacute propagada para o noacute b

Jaacute os noacutes vazios da octree seratildeo classificados como ldquodentrordquo ou ldquoforardquo do

modelo da seguinte forma cada noacute folha vazio eacute classificado a partir de um de

seus irmatildeos vizinhos adjacentes Se ele possuir um vizinho adjacente cheio ele

seraacute classificado por este vizinho se natildeo possuir os vizinhos adjacentes seratildeo

classificados primeiro e ele teraacute esta mesma classificaccedilatildeo (Figura 21) Como tem

que existir sempre pelo menos um noacute cheio entre os filhos de um noacute pai entatildeo

sempre esta classificaccedilatildeo poderaacute ser feita Com a classificaccedilatildeo de todos os

filhos tem-se tambeacutem a classificaccedilatildeo dos cantos do noacute pai

Mf03c003fmx a b

Figura 22-Os cantos a e b do noacute cheio possuem a mesma classificaccedilatildeo fora do modelo Esta classificaccedilatildeo foi dada ao noacute vazio adjacente

Melhorias Propostas 51

Para classificar um noacute vazio por meio de um noacute cheio verificam-se os

cantos comuns destes dois noacutes se todos os cantos tiverem a mesma

classificaccedilatildeo esta seraacute dada ao noacute vazio (Figura 22) Se houver classificaccedilotildees

diferentes escolhe-se o surfel do noacute cheio mais proacuteximo ao noacute vazio faz-se o

produto interno entre a normal deste surfel e o vetor que liga o centro do noacute

cheio ao centro do noacute vazio (ou o vetor que liga o surfel ao centro do noacute vazio)

Se o produto interno for maior que zero o noacute eacute classificado como ldquoforardquo senatildeo eacute

classificado como ldquodentrordquo Para encontrar o surfel (pertencente a um noacute cheio)

mais proacuteximo ao noacute vazio existem dois casos

- O noacute cheio eacute folha percorre-se toda a lista de surfels e escolhe o surfel

mais proacuteximo da fronteira entre o noacute cheio e o vazio

- O noacute cheio natildeo eacute um noacute folha percorrem-se os filhos do noacute cheio ou seja

esta pesquisa eacute feita descendo na octree a partir do noacute cheio procurando o

surfel mais proacuteximo agrave fronteira do pai com o noacute vazio a ser classificado

Classificando o centro do noacute vazio todo o noacute deve ter a mesma

classificaccedilatildeo pois este noacute natildeo conteacutem surfels Para encontrar o surfel do noacute

vazio mais proacuteximo da fronteira entre o noacute cheio e o vazio basta testar o valor da

coordenada se a fronteira eacute o lado direito do noacute cheio escolhe-se o surfel com

maior coordenada lsquoxrsquo se eacute o lado esquerdo escolhe-se o surfel com menor lsquoxrsquo

se lado superior surfel com maior lsquoyrsquo etc A seguir apresentamos a classificaccedilatildeo

de um ponto qualquer pertencente a um noacute cheio

Figura 23- Quadtree classificada

Melhorias Propostas 52

5111 Classificaccedilatildeo de um ponto de um noacute cheio

Figura 24 [2] A normal n eacute a normal meacutedia e os surfels s1 e s2 juntamente com a normal

n definem as retas que dividem o noacute O ponto a estaacute fora do modelo e o ponto b estaacute

dentro do modelo

Para um ponto localizado dentro do noacute faz-se o seguinte teste se o noacute foi

dividido testa-se de acordo com a divisatildeo do noacute se o ponto estaacute na parte do noacute

que estaacute dentro do modelo ele eacute classificado como ldquodentrordquo se o ponto estaacute na

parte que estaacute fora do modelo ele eacute classificado como ldquoforardquo (Figura 24) se o

ponto estaacute na parte que conteacutem os surfels encontra-se o surfel s pertencente ao

noacute mais proacuteximo do ponto e o classifica de acordo com s seja ns a normal em s

cs a coordenada de s cp a coordenada do ponto Se (cp - cs )٠ ns gt 0 o ponto

seraacute classificado como ldquoforardquo Senatildeo seraacute classificado como ldquodentrordquo

Se o noacute natildeo foi dividido em planos esta classificaccedilatildeo a partir do surfel

mais proacuteximo seraacute sempre feita

512 Teste DentroFora

Melhorias Propostas 53

Figura 25-Duas circunferecircncias e suas quadtrees correspondentes

O Teste DentroFora classifica os surfels de um modelo como dentro ou

fora de outro modelo ou na sua interseccedilatildeo Este teste foi aqui implementado

exatamente como foi proposto em Adams e Dutreacute [2] exceto que natildeo foi

implementado o meacutetodo TINN - Triangle Inequality Nearest Neighbour [19]

Cada octree eacute percorrida verificando-se se os seus noacutes ou surfels estatildeo dentro

fora ou no contorno do outro modelo (Figura 25) Sejam A e B duas octrees e

queremos classificar a octree A As duas octrees (AB) satildeo percorridas partindo

da raiz

Para cada noacute de A existem quatro casos (Figura 26) Para testar estas

situaccedilotildees os boxes dos noacutes satildeo aumentados de rmax o raio do maior surfel do

modelo Isto eacute feito para compensar o fato de que o surfel natildeo eacute apenas um

ponto mas sim considerado como um disco

Os quatro casos satildeo

Se o noacute de A natildeo intersecta B entatildeo todos os surfels deste noacute satildeo

classificados como fora

Se o noacute de A intersecta apenas noacutes de B que estatildeo fora do modelo

todos os surfels deste noacute satildeo fora

Se o noacute de A intersecta apenas noacutes de B que estatildeo dentro do modelo

todos os surfels deste noacute satildeo dentro

Melhorias Propostas 54

Se o noacute de A intersecta noacutes de B que estatildeo dentro e tambeacutem noacutes de B

que estatildeo fora testa-se se este noacute de A eacute ou natildeo folha Se natildeo for folha

percorre-se os filhos deste noacute de A ateacute encontrar um noacute folha cheio que

intersecta B Para cada surfel sa deste noacute folha de A encontra-se o surfel de B

mais proacuteximo e classifica-se a coordenada de sa da forma apresentada na seccedilatildeo

5111 Seja sb o surfel usado na classificaccedilatildeo de sa Se os discos de sb e sa

se intersectam sa eacute classificado como ldquointerseccedilatildeordquo

(a) (b)

(c) (d)

Figura 26- a modelos natildeo se intersectam b modelo intersecta noacutes fora c modelo intersecta apenas noacutes dentro d modelo intersecta noacutes dentro e noacutes fora

513 Criaccedilatildeo do modelo resultado

Um novo modelo eacute criado com os seguintes surfels (de acordo com a

operaccedilatildeo booleana escolhida pelo usuaacuterio - veja Regra 1 da seccedilatildeo 41)

Uniatildeo - surfels de A que estatildeo fora de B + surfels de B que estatildeo fora de A

Melhorias Propostas 55

Interseccedilatildeo - surfels de A que estatildeo dentro de B + surfels de B que estatildeo

dentro de A

Diferenccedila A-B - surfels de A que estatildeo fora de B + surfels de B que estatildeo

dentro de A (com orientaccedilatildeo invertida)

Como natildeo foi implementado tratamento especial algum de interseccedilatildeo para

o nosso plugin os surfels que se intersectam satildeo mantidos no modelo resultado

final sem modificaccedilotildees

Descrito o algoritmo vejamos a seguir a sua implementaccedilatildeo

52 Implementaccedilatildeo

Este algoritmo foi implementado na forma de um plugin para o software

PointShop 3D [11] Este plugin foi desenvolvido na linguagem C e no sistema

operacional Windows

A escolha deste tipo de implementaccedilatildeo permitiu-nos usar o software

PointShop para os testes do algoritmo Estes testes foram feitos com os modelos

disponibilizados para o PointShop [11] Nesta seccedilatildeo apresentaremos o software

PointShop e as principais estruturas de dados usadas em nosso plugin

O Pointshop eacute um software aberto com seu coacutedigo disponiacutevel e preparado

para trabalhar com plugins Eacute um software de ediccedilatildeo de modelos 3D por pontos

Ele permite aleacutem de visualizar o modelo alterar as suas caracteriacutesticas como

cor brilho e fazer mapeamento de textura iluminaccedilatildeo filtragem (Figura 27)

Melhorias Propostas 56

Figura 27-Software PointShop 3D com dois modelos carregados na sua cena

Aleacutem disso pode-se criar uma cena com vaacuterios modelos e visualizaacute-los de

qualquer ponto de vista Implementa o virtual trackball para rotacionaacute-los e

transladaacute-los Usa uma iluminaccedilatildeo simples direcional A sua arquitetura eacute

extensiacutevel permite que o usuaacuterio adicione seus proacuteprios componentes ao

sistema Possui trecircs tipos de componentes

ldquoToolsrdquo fornece funcionalidades para ediccedilatildeo interativa de superfiacutecie Satildeo

disponibilizados na ldquotoolbarrdquo

Plugins fornece funcionalidades para processar em um soacute passo

modelos ou partes deles selecionadas Satildeo disponibilizados no menu ldquoPluginsrdquo

Renderes fornece funcionalidades de display para os modelos

Para esta dissertaccedilatildeo foi escolhida a construccedilatildeo do componente Plugin

por adequar-se agrave nossa proposta e ser a mais simples de ser construiacuteda O

PointShop [11] jaacute conteacutem uma tool que executa operaccedilotildees booleanas e

deformaccedilatildeo free-form sobre os modelos carregados na cena usando o meacutetodo

de Pauly [3] apresentado no capiacutetulo 4 O nosso plugin Operaccedilotildees Booleanas

implementa o algoritmo descrito na seccedilatildeo anterior baseado na proposta de

Melhorias Propostas 57

Adams e Dutreacute [2] Uma comparaccedilatildeo entre o nosso plugin e a tool de Pauly [3] eacute

feita no capiacutetulo 6

Figura 28-Menu do PointShop com o plugin e as opccedilotildees para operaccedilotildees booleanas

Para se executar o plugin o usuaacuterio precisa carregar dois modelos na

cena do PointShop acionar o plugin informando a operaccedilatildeo que seraacute executada

O plugin executaraacute o algoritmo acima proposto e carregaraacute o resultado na cena

do Pointshop retirando os modelos anteriores

521 Estruturas de Dados

Como vimos o software PointShop [11] trabalha com modelos por pontos

Um modelo deste software descrito na seccedilatildeo 42 conteacutem todas as informaccedilotildees

que o algoritmo proposto em Bart [2] necessita Abaixo relacionamos as

Melhorias Propostas 58

principais estruturas de dados do PointShop usadas no plugin e as principais

estruturas de dados do nosso plugin

As principais classes do PointShop usadas no plugin satildeo

Classe Scene

Classe Objects

Classe SurfelColections

Classe Surfel

Classe StatusBar

Classe Transformer

A hierarquia de dados eacute a seguinte a Scene conteacutem vaacuterios Objects os

quais conteacutem SurfelColections Cada SurfelColections conteacutem Surfels que

suportam uma ou mais propriedades tais como cor difusa cor especular

Classe Scene Classe que representa uma cena que conteacutem modelos

Classe Object Um modelo eacute representado pela classe Object que

conteacutem uma SurfelCollection e as matrizes de transformaccedilatildeo para rotaccedilatildeo

escala e translaccedilatildeo Cada Object eacute identificado pelo seu nome que eacute uacutenico na

Scene O meacutetodo getUniqueName retorna um nome uacutenico Cada Object tem sua

proacutepria matriz de transformaccedilatildeo que pode ser modificada com setRotation

rotate setPosition translate setScale e scale Objects podem ser copiados com

copy Objects consiste em um conjunto de surfels os quais podem ser

recuperados pela getSurfelCollection O Object pode ser ativado com

setActiveObject e recuperado com getActiveObject

Objects podem ser adicionados ou removidos com addObject e

removeObject Os Objects podem ser obtidos pela getFirstObject e

getNextObject

Classe SurfelCollection representa o conjunto de surfels de um modelo

Cada surfelcollection consiste em um conjunto de surfels (SurfelInterface) de

tamanho obtido por getNofSurfels Os surfels podem ser recuperados com

getFirstSurfel getCurrentSurfel e getNextSurfel

A SurfelCollection conteacutem um PropertyDescriptor e uma SurfelList

A SurfelList eacute uma lista duplamente encadeada de surfels Possui os

atributos firstSurfel lastSurfel currentSurfel que satildeo ponteiros para uma

SurfelInterface nSurfels que eacute o nuacutemero de Surfels

A SurfelInterface define a API para os surfels que satildeo os menores

elementos que compotildeem um Object Podem ser considerados como pontos com

uma normal que define a orientaccedilatildeo do ciacuterculo (ou elipse) que seraacute desenhado

Melhorias Propostas 59

tatildeo logo o surfel seja renderizado Tem como atributos dois ponteiros (next e

prev) para SurfelInterface

PropertyDescriptor consiste em ateacute 32 valores descrevendo quais as

propriedades a SurfelInterface suporta

Classe Surfel classe que representa o surfel

Classe StatusBar classe que imprime mensagens na tela Os plugins

podem mandar mensagens para o usuaacuterio pela StatusBar

Mensagens texto podem ser impressas com showMessage O progresso

de uma operaccedilatildeo pode ser indicado com setProgress ou resetProgress

Classe Transformer representa a transformaccedilatildeo entre sistemas de

coordenadas Esta classe fornece meacutetodos para transformar pontos e vetores

entre os diferentes sistemas de coordenadas do Pointshop

A seguir apresentamos as principais estruturas de dados do plugin

Operaccedilotildees Booleanas

As principais estruturas de dados do plugin satildeo boundingbox tree no

lista_surfel surfel

Boundingbox conteacutem dois pontos 3D que definem uma caixa que conteacutem

o modelo um ponto com menores coordenadas xy e z e outro ponto com

maiores xyz

Tree representa a octree do modelo Cada registro conteacutem um ponteiro

para um noacute e oito ponteiros para as 8 octrees filhas

No representa um noacute da octree Conteacutem os seguintes dados

- localizaccedilatildeo do noacute que eacute o canto inferior esquerdo do noacute

- lista_surfel (preenchida apenas para noacutes folha cheios)

- quantidade de surfels do noacute

- classificaccedilatildeo do noacute como dentro fora ou contorno

- classificaccedilatildeo do noacute em relaccedilatildeo a outro modelo

- indica se o noacute eacute folha ou natildeo

- vetor que eacute a meacutedia das normais dos surfels do noacute

- ponto que eacute a meacutedia das localizaccedilotildees dos surfels do noacute

- surfel que tem (entre todos os surfels do noacute) o maior produto interno

entre a sua normal e a normal meacutedia

- surfel que tem (entre todos os surfels do noacute) o menor produto interno

entre a sua normal e a normal meacutedia

- produto interno maacuteximo e miacutenimo entre as normais dos surfels do noacute e a

normal meacutedia deste noacute

Melhorias Propostas 60

- indica se o noacute conteacutem surfels com normais em sentido oposto (produto

interno entre elas eacute menor que zero)

- classificaccedilatildeo dos oito cantos do noacute

lista_surfels lista em que cada registro conteacutem um apontador para um

surfel e um apontador para o proacuteximo registro

surfel representa o surfel da octree Conteacutem a classificaccedilatildeo em relaccedilatildeo a

outro modelo e um ponteiro para o surfel do Poinshop

Resultados 61

6 Resultados

Neste capiacutetulo apresentamos os testes realizados com o plugin para o

PointShop implementado para esta dissertaccedilatildeo a comparaccedilatildeo deste plugin com

o plugin de Pauly [3] e a comparaccedilatildeo entre o meacutetodo de Adams e Dutreacute [2] e o

meacutetodo de Pauly [3]

61 Testes

Os testes foram feitos em um PC x86 Family 6 261600 KB de RAM sem

placa graacutefica sistema operacional Windows 2000 O plugin foi implementado na

linguagem C

Os modelos usados para os testes satildeo modelos disponibilizados no

PointShop [11] Vale lembrar que o meacutetodo implementado em nosso plugin eacute

restrito a modelos soacutelidos e portanto foram usados apenas estes modelos

soacutelidos para os testes

O modelo na Figura 29 que eacute um dos modelos disponibilizados no

PointShop [11] foi usado para mostrar o resultado das operaccedilotildees realizadas

pelo plugin implementado nesta dissertaccedilatildeo O modelo Igea eacute um modelo soacutelido

que conteacutem 134345 surfels

Resultados 62

Figura 29-Modelo do PointShop Igea

Para realizar as operaccedilotildees este modelo foi carregado na cena do

PointShop duas vezes e um deles colorido de vermelho As Figuras 30 31 32

mostram o resultado da operaccedilatildeo de uniatildeo interseccedilatildeo e diferenccedila

respectivamente Os nuacutemeros de surfels dos modelos resultantes satildeo mostrados

na Tabela 2

Resultados 63

Figura 30-Resultado da uniatildeo de duas Igeas

Figura 31-Resultado da interseccedilatildeo de duas Igeas

Resultados 64

Figura 32-Resultado da diferenccedila entre duas Igeas

Tabela 2-Nuacutemero de surfels dos modelos resultantes

Observamos que o nuacutemero de surfels dos modelos resultantes estaacute

coerente com as figuras dos seus modelos

Para avaliar o tempo de processamento das operaccedilotildees foram realizados

vaacuterios testes com o objetivo de obter uma meacutedia dos tempos de realizaccedilatildeo de

cada operaccedilatildeo Tambeacutem foram armazenados os tempos da criaccedilatildeo das duas

octrees e da classificaccedilatildeo de todos os surfels dos dois objetos (como dentro ou

fora do outro modelo) Estes testes foram feitos usando o modelo Igea A meacutedia

dos tempos de processamento foi calculada e os resultados satildeo mostrados na

Tabela 3 Verificamos que o maior tempo gasto eacute para criaccedilatildeo das octrees

Verificamos tambeacutem que este resultado apresentado eacute similar ao resultado

verificado empiricamente com o plugin de Pauly [3] Os tempos gastos para

realizar as operaccedilotildees satildeo similares e o maior tempo gasto no plugin de Pauly

tambeacutem eacute para inicializaccedilatildeo de suas estruturas de dados que incluem a kd-tree

Operaccedilatildeo Nuacutemero de surfels do modelo resultado

Uniatildeo 189715

Interseccedilatildeo 72225

Diferenccedila 134552

Resultados 65

Operaccedilatildeo Criaccedilatildeo das

Octrees (seg)

Classificaccedilatildeo

(seg)

Criaccedilatildeo do

resultado (seg)

Total (seg)

Uniatildeo 39375 1324 18925 7154

Interseccedilatildeo 38585 1585 09547 63982

Diferenccedila 399875 1504 1729 729475

Tabela 3- Meacutedia dos tempos de processamento para as operaccedilotildees com duas Igeas

Com o objetivo de expor melhor os resultados deste trabalho

apresentamos abaixo mais um teste das operaccedilotildees booleanas usando o nosso

plugin Os modelos usados para este segundo teste satildeo o Max Planck e o Male

ambos modelos soacutelidos disponibilizados no PointShop Estes modelos satildeo

mostrados nas figura 33 e 34

O primeiro Max Planck conteacutem 52809 surfels

Figura 33-Modelo do PointShop MaxPlanck

O segundo modelo abaixo Male conteacutem 148138 surfels

Resultados 66

Figura 34-Modelo do PointShop Male

As Figuras 353637 mostram o resultado da operaccedilatildeo de uniatildeo interseccedilatildeo

e diferenccedila respectivamente usando os dois modelos acima Podemos observar

pela figura 35 que o resultado da operaccedilatildeo de diferenccedila neste caso gerou um

modelo resultado com trecircs partes desconexas Os nuacutemeros de surfels de cada

modelo resultado satildeo mostrados na Tabela 5

Figura 35- Resultado da Uniatildeo do modelo Male com MaxPlanck

Resultados 67

Figura 36-Resultado da interseccedilatildeo do modelo Male com o MaxPlanck

Figura 37-Resultado da diferenccedila do modelo Male do modelo MaxPlanck

As meacutedias de tempos de processamento foram calculadas da mesma

forma que o primeiro teste com o modelo Igea acima apresentado Os

resultados satildeo mostrados na Tabela 4 Podemos observar que este teste

Resultados 68

apresenta tempos um pouco menores que o teste com o modelo Igea Isto se

deve ao fato de que o modelo MaxPlanck ser significativamente menor que o

modelo Igea MaxPlanck possui 52809 surfels e Igea conteacutem 134345 surfels

Operaccedilatildeo Criaccedilatildeo das

Octrees (seg)

Classificaccedilatildeo

(seg)

Criaccedilatildeo do

resultado (seg)

Total

(seg)

Uniatildeo 3012 1254 102 5285

Interseccedilatildeo 2985 0901 0861 4747

Diferenccedila 2965 0911 0791 4667

Tabela 4-Tempo de processamento das operaccedilotildees com os modelos MaxPlanck e Male

Operaccedilatildeo Nuacutemero de surfels do resultado

Uniatildeo 126532

Interseccedilatildeo 88414

Diferenccedila 77635

Tabela 5-Nuacutemero de surfels dos modelos resultados das operaccedilotildees com os modelos MaxPlanck e Male

Em seguida apresentaremos uma comparaccedilatildeo entre o nosso plugin e o

plugin de Pauly[3] e tambeacutem uma comparaccedilatildeo entre o meacutetodo de Adams e Dutreacute

[2] e o meacutetodo de Pauly [3]

62 Comparaccedilatildeo entre os dois meacutetodos que realizam operaccedilotildees booleanas

A comparaccedilatildeo entre os meacutetodos de Pauly[3] e de Adams e Dutreacute foi feita

em termos de tempo de processamento e em termos conceituais Em termos de

tempo de processamento comparamos o plugin de Pauly[3] com o nosso plugin

Em termos de tempo de processamento verifica-se empiricamente que os

dois meacutetodos apresentam tempos bastante similares Entretanto o tempo de

processamento do algoritmo aqui implementado ainda pode ser melhorado com

Resultados 69

o uso do meacutetodo TINN [19] que foi proposto em Adams[2] - para otimizar a

pesquisa do surfel mais proacuteximo a um ponto que estaacute localizado na regiatildeo de um

noacute que conteacutem surfels - veja seccedilatildeo 42 O uso deste meacutetodo natildeo foi

implementado para este trabalho e a sua implementaccedilatildeo melhoraria o tempo de

resposta do algoritmo Aleacutem disso o trabalho de Sara F Frisken [12] citado no

capiacutetulo 2 apresenta uma otimizaccedilatildeo no uso de octrees que pode ser

incorporada no algoritmo implementado neste trabalho

Em termos conceituais vamos fazer a comparaccedilatildeo do uso do que

chamamos aqui de Regra 2 do tratamento de interseccedilatildeo e do tratamento de

ldquoarestas vivasrdquo

Como vimos na seccedilatildeo 41 tanto o algoritmo implementado nesta

dissertaccedilatildeo baseado no trabalho de Adams e Dutreacute como o meacutetodo de Pauly

[3] parte do que chamamos aqui de Regra 2 para realizar operaccedilotildees booleanas

com pontos Mas cada um destes meacutetodos daacute um tratamento diferente para o

uso desta regra

O meacutetodo de Pauly usa a Regra 2 para classificaccedilatildeo de cada ponto ou de

cada surfel Para classificar um surfel de B sb como dentro ou fora de A eacute

encontrado o surfel de A sa mais proacuteximo a sb e sb eacute classificado a partir de sa

Para encontrar sa Pauly utiliza uma kd-tree Como esta pesquisa para encontrar

sa eacute cara (mesmo usando uma kd-tree) Pauly utiliza uma esfera que conteacutem

pontos com a mesma classificaccedilatildeo (seccedilatildeo 432) e diminui em 90 este nuacutemero

de pesquisas Pauly utiliza tambeacutem a representaccedilatildeo impliacutecita MLS (Moving Least

Squares) para casos em que a Regra 2 poderia falhar e para tratamento de

interseccedilotildees Entretanto o nuacutemero destes casos em que a Regra 2 poderia falhar

eacute muito pequeno E a representaccedilatildeo MLS natildeo eacute uma estrutura simples de ser

implementada Portanto natildeo encontramos vantagens em usar MLS para estes

casos O meacutetodo de Adams e Dutreacute natildeo trata estes casos e na praacutetica

apresenta resultados bastante satisfatoacuterios como foi mostrado Portanto

consideramos que valeria a pena fazer algum tratamento especial para estes

casos se fosse um procedimento simples Para a execuccedilatildeo do algoritmo de

Pauly o uso de MLS natildeo interfere significativamente porque a construccedilatildeo desta

representaccedilatildeo natildeo eacute feita somente para realizar operaccedilotildees booleanas Os testes

empiacutericos que fizemos com o algoritmo de Pauly natildeo incluem a construccedilatildeo desta

representaccedilatildeo

Aparentemente os dois algoritmos satildeo bastante parecidos um usa octrees

e o outro usa kd-tree As duas estruturas de dados satildeo simples e otimizam a

classificaccedilatildeo dos surfels de um modelo como dentro ou fora do outro modelo

Resultados 70

Mas existe uma diferenccedila conceitual entre dois que merece ser destacada O

algoritmo aqui implementado usa a Regra 2 para classificaccedilatildeo dos noacutes de uma

octree e armazena esta octree classificada (ver capiacutetulo 5) Assim na maioria dos

casos natildeo seraacute necessaacuterio encontrar o surfel mais proacuteximo para classificar um

ponto (ou um surfel) como fora ou dentro de um modelo Caso o ponto esteja em

uma aacuterea da octree classificada ele teraacute a classificaccedilatildeo dada agravequela aacuterea A

pesquisa ao surfel mais proacuteximo seraacute feita apenas nos casos em que o ponto a

ser classificado estaacute localizado entre os planos que subdividem um noacute cheio

O uso desta octree classificada levanta uma questatildeo que natildeo foi citada no

trabalho de Adams e Dutreacute que eacute a proximidade desta estrutura (armazenada)

de octree classificada com uma representaccedilatildeo volumeacutetrica do objeto Sendo

assim esta estrutura pode ser aproveitada para outras funccedilotildees aleacutem da

classificaccedilatildeo dos surfels Por exemplo podemos ter uma aproximaccedilatildeo do

volume de uma cena somando os volumes aproximados dos modelos que a

compotildeem Como o enfoque deste trabalho eacute operaccedilatildeo booleana natildeo vamos nos

aprofundar nesta questatildeo

Outra importante diferenccedila entre os dois trabalhos que jaacute foi explicada na

seccedilatildeo 432 eacute que o meacutetodo de Pauly aplica-se a modelos soacutelidos ou natildeo

soacutelidos enquanto que o meacutetodo de Adams e Dutreacute aplica-se somente a modelos

soacutelidos

Quanto ao tratamento de interseccedilatildeo em termos de visualizaccedilatildeo todos os

dois resolvem bem o problema O tratamento de interseccedilatildeo nos dois trabalhos

tambeacutem resolve o problema da validade da Regra 2 (ver seccedilatildeo 44) Entretanto

o tratamento de Adams e Dutreacute natildeo depende da renderizaccedilatildeo sendo portanto

mais portaacutevel Aleacutem disso uma desvantagem do meacutetodo de Pauly eacute o uso da

representaccedilatildeo impliacutecita MLS (ldquoMoving Least Squaresrdquo) do objeto para obter os

pontos exatamente na curva de interseccedilatildeo Esta representaccedilatildeo torna o

tratamento de interseccedilatildeo mais complexo e a vantagem apresentada natildeo eacute tatildeo

significativa para este tratamento de interseccedilatildeo

Conclusatildeo 71

7 Conclusatildeo

Concluiacutemos entatildeo que as escolhas de Adams e Dutreacute por usar uma

octree classificada e pelo tratamento dado agrave interseccedilatildeo satildeo mais abrangentes

que a escolha de Pauly E consideramos que quanto mais abrangente for uma

escolha conceitual mais resultados poderemos tirar dela No caso de Adams e

Dutreacute eles estendem o problema de classificar um ponto para classificar todo o

modelo Como foi citado ele quase fornece uma representaccedilatildeo volumeacutetrica do

modelo Esta aproximada representaccedilatildeo volumeacutetrica pode nos fornecer outras

informaccedilotildees como por exemplo o volume aproximado do modelo

Aleacutem disso o uso da representaccedilatildeo impliacutecita MLS no meacutetodo de Pauly cria

uma complexidade a mais para o meacutetodo sem apresentar vantagens para a

realizaccedilatildeo de operaccedilotildees booleanas que eacute o nosso enfoque

Logo podemos dizer que o meacutetodo de Adams e Dutreacute apresenta as

seguintes vantagens em relaccedilatildeo ao de Pauly

- a estrutura de octree classificada aleacutem de ser usada para classificaccedilatildeo

fornece informaccedilotildees adicionais como volume aproximado do objeto

- o tempo de processamento no meacutetodo de Adams e Dutreacute tende a ser

melhor que no meacutetodo de Pauly se implementadas as melhorias acima citadas e

se colocaacutessemos em consideraccedilatildeo o uso da representaccedilatildeo impliacutecita MLS

(Moving Least Squares)

- o tratamento de interseccedilatildeo de Adams e Dutreacute apresenta a vantagem da

portabilidade ou seja iraacute funcionar independente do algoritmo de renderizaccedilatildeo

utilizado

E as vantagens do meacutetodo de Pauly em relaccedilatildeo ao de Adams e Dutreacute

- a colocaccedilatildeo de surfels exatamente na curva de interseccedilatildeo

- a possibilidade de trabalhar com modelos soacutelidos ou natildeo soacutelidos

E finalizando concluiacutemos que o estudo relatado nesta dissertaccedilatildeo foi

importante por

- fornecer um breve estudo sobre modelagem por pontos uma nova e

promissora aacuterea dentro da computaccedilatildeo graacutefica

Conclusatildeo 72

- por apresentar uma avaliaccedilatildeo dos dois trabalhos existentes sobre

operaccedilotildees booleanas com pontos encontrando as vantagens de cada um

e levantando questotildees que natildeo tinham sido citadas nos trabalhos originais

- por propor e implementar melhorias ao trabalho de Adams e Dutreacute

71 Trabalhos Futuros

Nossa implementaccedilatildeo pode ser ainda evoluiacuteda com as propostas

apresentadas na seccedilatildeo 62 Como observamos o tempo de processamento do

algoritmo aqui implementado ainda pode ser melhorado com o uso do meacutetodo

TINN [19] - que foi proposto em Adams[2] - para otimizar a pesquisa do surfel

mais proacuteximo a um ponto que estaacute localizado na regiatildeo de um noacute que conteacutem

surfels Aleacutem disso o trabalho Simple and Efficient Trasversal Methods for

Quadtrees and Octrees de Sara F Frisken [12] citado no capiacutetulo 2 apresenta

uma otimizaccedilatildeo no uso de octrees Outra proposta para melhorar o tempo de

processamento do algoritmo aqui implementado eacute usar a forma de trabalhar com

octrees apresentada neste trabalho

O trabalho de Adams e Dutreacute [2] eacute aplicado apenas a objetos soacutelidos O

nosso plugin portanto aplica-se somente a este tipo de objeto Jaacute o trabalho de

Pauly[3] eacute aplicado tambeacutem a modelos natildeo soacutelidos Apresentamos como

proposta a um trabalho futuro a extensatildeo do algoritmo aqui implementado para

modelos natildeo soacutelidos O surfel pode conter uma informaccedilatildeo adicional que indica

se ele estaacute delimitando um volume ou natildeo Assim pode-se ter um modelo com

ldquopartes soacutelidasrdquo e ldquopartes natildeo soacutelidasrdquo Por exemplo a uniatildeo de um plano com

uma esfera poderia resultar numa esfera com ldquoabasrdquo (seriam as partes do plano

que estariam fora da esfera) O modelo resultado teria uma parte correspondente

a um espaccedilo 3D (esfera) e outra parte que seria uma superfiacutecie 2D posicionada

no espaccedilo 3D sem delimitar algum volume (abas)

Muitos trabalhos podem ser desenvolvidos aplicando-se o modelo por

pontos em animaccedilatildeo jogos visualizaccedilatildeo de terrenos criaccedilatildeo de protoacutetipos etc

considerando-se a eficiecircncia e simplicidade do modelo E mais especificamente

as operaccedilotildees booleanas com pontos podem ser aplicadas para criaccedilatildeo de

cenaacuterios testes de colisotildees e nestes casos a representaccedilatildeo usando octrees

pode ser mais explorada considerando-se o seu potencial de representaccedilatildeo

volumeacutetrica de um objeto

Referecircncias Bibliograacuteficas 73

8 Referecircncias Bibliograacuteficas

[1] MAumlNTYLAuml M An Introduction to Solid Modeling Computer Science Press 1988

[2] ADAMS B DUTREacute P Interactive Boolean Operations on Surfel-

Bounded Solids Proceedings of SIGGRAPH 2003 San Diego USA 2003

[3] PAULY M KEISER R KOBBELT L GROSS M Shape Modeling

with Point-Sampled Geometry SIGGRAPH 2003 Computer Graphics

Proceedings Annual Conference Series ACM Press ACM SIGGRAPH 2003

[4] LEVOY M WHITTED T The Use of Points as Display Primitives

Technical Report TR 85-022 The University of North Carolina at Chapel Hill

Department of Computer Science 1985

[5] PFISTER H ZWICKER M VAN BAAR J GROSS M 2000 Surfels

Surface Elements as Rendering Primitives SIGGRAPH 2000 pp 335ndash342 New

Orleans LA July 23-28 2000

[6] ZWICKER M PFISTER H VAN BAAR J GROSS M Surface

Splatting SIGGRAPH 2001

[7] PAULY M KOBBELT L GROSS M Multiresolution Modeling of

Point-Sampled Geometry CS Techinical Report 378 September 16 2002

[8] CURLESS B New Methods for Surface Reconstruction from Range Images PhD thesis Stanford University 1997

[9] RUSINKIEWICZ S Real-time Acquisition and Rendering of Large 3D Models PhD thesis Stanford University 2001

Referecircncias Bibliograacuteficas 74

[10] AMENTA N BERN M KAMVYSSELIS M A new Voronoi-Based

Surface Reconstruction Algorithm SIGGRAPH 98 Conference proceedings pp

415-421 New York 1998

[11] ZWICKER M PAULY M KNOLL O GROSS M Pointshop 3D an

Interactive System for Point-Based Surface Editing Proceedings of SIGGRAPH 2002 San Antonio TX July 2002

[12] FRISKEN S PERRY R Simple and Efficient Traversal Methods for

Quadtrees and Octrees Journal of Graphics Tools Vol 7 Issue 3 May 2003

[13] CORREcircA W T OLIVEIRA M M Silva C T Wang J

Modeling and Rendering of Real Environments

Revista de Informaacutetica Teoacuterica e Aplicada (Brazilian Journal of Theoretic and Applied Computing) 9(2)127-156 2002

[14] DAVIS J MARSCHNER S GARR M LEVOY M Filling Holes in

Complex Surfaces Using Volumetric Diffusion First International Symposium on 3D Data Processing Visualization Transmission June 2002

[15] RAumlSAumlNEN J Surface Splatting Theory Extensions and Implementation Masterrsquos Thesis Dept of Computer Science Helsinki

University of Technology May 28 2002

[16] PAULY M Point Primitives for Interactive Modeling and Processing of 3D Geometry PhD thesis Federal Institute of Technology (ETH)

of Zurich 2003

[17] HOPPE H DEROSE T DUCHAMP T MCDONALD J

STUELZLE W Surface Reconstruction from Unorganized Points Computer Graphics 26(2)71ndash78 July 1992

[18] ALEXA M BEHR J COHEN-OR D FLEISHMAN S LEVIN D

SILVA C T Point Set Surfaces IEEE Visualization 2001 pp 21ndash28 October

2001

Referecircncias Bibliograacuteficas 75

[19] GREENSPAN M GODIN G TALBOT J Acceleration of Binning

Nearest Neighbor Methods Proceedings of Vision Interface 2000 pp 337-

344

[20] MENCL R Reconstruction of Surfaces from Unorganized Three-Dimensional Point Clouds Dissertation Dortmund Univ 2001

[21] KRIVANEK J Representing and Rendering Surfaces With Points

httpciteseernjneccomkrivanek03representinghtml Acesso em 30 jul

2003

[22] KRISTJANSSON ET AL Approximate Boolean Operations on Free-

form Solids Proceedings of SIGGRAPH 01 2001

Melhorias Propostas 47

5 Melhorias Propostas

No capiacutetulo 4 apresentamos dois meacutetodos que realizam operaccedilotildees

booleanas em modelos por pontos o meacutetodo de Adams e Dutreacute [2] e o meacutetodo

de Pauly[3] Para esta dissertaccedilatildeo usamos o meacutetodo de Adams e Dutreacute [2] e

propomos as seguintes melhorias

- Alteramos o momento em que eacute feita a classificaccedilatildeo da octree Fazemos

esta classificaccedilatildeo durante a sua criaccedilatildeo Os noacutes filhos de um noacute pai P qualquer

satildeo classificados logo apoacutes a criaccedilatildeo de todos estes filhos de P

independentemente do restante da octree ter sido criada Isso pode ser feito

porque a octree eacute construiacuteda na ordem raiz-esquerda-direita (preorder

traversal) e portanto apoacutes todos os filhos de um noacute pai serem criados a parte

necessaacuteria da octree para a classificaccedilatildeo destes filhos jaacute estaacute criada

- A classificaccedilatildeo da octree eacute otimizada classificando-se os cantos dos seus

noacutes como dentro ou fora do modelo Na classificaccedilatildeo de um noacute n1 a partir de seu

vizinho n2 se os cantos que satildeo comuns a n1 e n2 tiverem a mesma

classificaccedilatildeo esta seraacute dada ao noacute Assim diminuiacutemos o nuacutemero de pesquisas

pelo surfel mais proacuteximo que eacute a parte criacutetica da classificaccedilatildeo dos noacutes da octree

em termos de tempo de processamento

- Acrescentamos um valor miacutenimo (maior que zero) para o nuacutemero de

surfels contidos em um noacute que eacute uma das condiccedilotildees de parada na criaccedilatildeo da

octree Verificamos que desta forma diminui-se a chance de erro na classificaccedilatildeo

de partes criacuteticas como ldquoarestas vivasrdquo

Uma comparaccedilatildeo entre a nossa implementaccedilatildeo e a de Pauly tambeacutem seraacute

feita no capiacutetulo 6

51 Descriccedilatildeo do algoritmo

O algoritmo implementado para esta dissertaccedilatildeo baseado no meacutetodo de

Adams e Dutreacute [2] pode ser dividido nas seguintes partes Criaccedilatildeo e

classificaccedilatildeo de uma octree para cada modelo Teste DentroFora Criaccedilatildeo do

modelo resultado Natildeo foi implementado tratamento especial algum de

interseccedilatildeo para o nosso plugin As proacuteximas seccedilotildees apresentam estas partes

Melhorias Propostas 48

511 Criaccedilatildeo e classificaccedilatildeo de uma octree para cada modelo

As ideacuteias do algoritmo satildeo aqui ilustradas em 2D mas a extensatildeo delas

para 3D eacute feita facilmente

Para cada modelo a octree eacute criada e classificada da seguinte forma

Figura 19-Quadtree classificada Os noacutes mais escuros estatildeo fora do modelo os mais claros dentro e os em tom intermediaacuterio satildeo noacutes de contorno

Gera-se uma ldquocaixa envolventerdquo do modelo contendo todos os surfels e

cria-se o noacute raiz da octree que corresponde a esta ldquocaixa envolventerdquo Este noacute

raiz eacute subdividido em oito filhos e seus surfels satildeo distribuiacutedos entre eles Ao

inveacutes de testarmos os valores de xy e z para cada surfel a fim de determinar

para qual filho ele iraacute utilizamos listas auxiliares Primeiro os surfels satildeo

subdivididos em dois grupos pelos valores de x e armazenados em uma lista

auxiliar Em seguida cada uma das listas eacute subdividida pelo valor de y e as

quatro listas obtidas seratildeo subdivididas pelo valor de z Ao final teremos 8 listas

de surfels cada uma delas pertencente a um filho

Cada noacute seraacute entatildeo novamente subdividido enquanto contiver um nuacutemero

de surfels gt nmin (valor preacute-definido) ou enquanto a profundidade da aacutervore lt pmax

(valor preacute-definido) Na figura 19 pmax = 3 e nmin = 3

Melhorias Propostas 49

Figura 20-O noacute cheio eacute dividido em trecircs partes agrave esquerda a regiatildeo estaacute dentro do modelo agrave direita estaacute fora e entre as duas linhas que dividem o noacute estaacute a regiatildeo que conteacutem os surfels

Os noacutes cheios recebem um tratamento especial Eles satildeo subdivididos em

trecircs partes da seguinte forma uma que estaacute fora do modelo outra que estaacute

dentro e uma que conteacutem os surfels Esta subdivisatildeo eacute feita por meio da criaccedilatildeo

de dois planos paralelos que dividem o noacute Para determinar estes planos

calcula-se o vetor nm igual agrave meacutedia das normais dos surfels do noacute nm = sum ns

sum ns onde ns eacute a normal de cada surfel do noacute Em seguida encontra-se o

surfel com maior produto interno entre a sua normal e a normal meacutedia

d1=Max(nm ٠ ns) Este surfel juntamente com a normal meacutedia define um dos

planos Encontra-se tambeacutem o surfel com menor produto interno entre a sua

normal e a normal meacutedia d2=Min (nm ٠ ns) Este surfel juntamente com a normal

meacutedia define o outro plano (Figura 20) Se o noacute conteacutem surfels de superfiacutecies de

orientaccedilotildees diferentes ele natildeo seraacute subdividido ou seja os planos coincidiratildeo

com os planos que delimitam o proacuteprio noacute Este teste foi implementado da

seguinte forma escolhe-se um surfel qualquer do noacute Calcula-se o produto

interno entre a normal deste surfel e as outras normais dos outros surfels deste

noacute Se algum produto interno for menor que zero este noacute natildeo seraacute subdividido

Apoacutes a etapa de subdivisatildeo classificam-se os oito cantos deste noacute como

dentro ou fora do modelo por meio da classificaccedilatildeo de um ponto que

descreveremos na sub-seccedilatildeo 5111

Melhorias Propostas 50

a b

c d

Figura 21-O noacute a eacute classificado pelo noacute c o noacute d tambeacutem eacute classificado pelo noacute c a classificaccedilatildeo do noacute a eacute propagada para o noacute b

Jaacute os noacutes vazios da octree seratildeo classificados como ldquodentrordquo ou ldquoforardquo do

modelo da seguinte forma cada noacute folha vazio eacute classificado a partir de um de

seus irmatildeos vizinhos adjacentes Se ele possuir um vizinho adjacente cheio ele

seraacute classificado por este vizinho se natildeo possuir os vizinhos adjacentes seratildeo

classificados primeiro e ele teraacute esta mesma classificaccedilatildeo (Figura 21) Como tem

que existir sempre pelo menos um noacute cheio entre os filhos de um noacute pai entatildeo

sempre esta classificaccedilatildeo poderaacute ser feita Com a classificaccedilatildeo de todos os

filhos tem-se tambeacutem a classificaccedilatildeo dos cantos do noacute pai

Mf03c003fmx a b

Figura 22-Os cantos a e b do noacute cheio possuem a mesma classificaccedilatildeo fora do modelo Esta classificaccedilatildeo foi dada ao noacute vazio adjacente

Melhorias Propostas 51

Para classificar um noacute vazio por meio de um noacute cheio verificam-se os

cantos comuns destes dois noacutes se todos os cantos tiverem a mesma

classificaccedilatildeo esta seraacute dada ao noacute vazio (Figura 22) Se houver classificaccedilotildees

diferentes escolhe-se o surfel do noacute cheio mais proacuteximo ao noacute vazio faz-se o

produto interno entre a normal deste surfel e o vetor que liga o centro do noacute

cheio ao centro do noacute vazio (ou o vetor que liga o surfel ao centro do noacute vazio)

Se o produto interno for maior que zero o noacute eacute classificado como ldquoforardquo senatildeo eacute

classificado como ldquodentrordquo Para encontrar o surfel (pertencente a um noacute cheio)

mais proacuteximo ao noacute vazio existem dois casos

- O noacute cheio eacute folha percorre-se toda a lista de surfels e escolhe o surfel

mais proacuteximo da fronteira entre o noacute cheio e o vazio

- O noacute cheio natildeo eacute um noacute folha percorrem-se os filhos do noacute cheio ou seja

esta pesquisa eacute feita descendo na octree a partir do noacute cheio procurando o

surfel mais proacuteximo agrave fronteira do pai com o noacute vazio a ser classificado

Classificando o centro do noacute vazio todo o noacute deve ter a mesma

classificaccedilatildeo pois este noacute natildeo conteacutem surfels Para encontrar o surfel do noacute

vazio mais proacuteximo da fronteira entre o noacute cheio e o vazio basta testar o valor da

coordenada se a fronteira eacute o lado direito do noacute cheio escolhe-se o surfel com

maior coordenada lsquoxrsquo se eacute o lado esquerdo escolhe-se o surfel com menor lsquoxrsquo

se lado superior surfel com maior lsquoyrsquo etc A seguir apresentamos a classificaccedilatildeo

de um ponto qualquer pertencente a um noacute cheio

Figura 23- Quadtree classificada

Melhorias Propostas 52

5111 Classificaccedilatildeo de um ponto de um noacute cheio

Figura 24 [2] A normal n eacute a normal meacutedia e os surfels s1 e s2 juntamente com a normal

n definem as retas que dividem o noacute O ponto a estaacute fora do modelo e o ponto b estaacute

dentro do modelo

Para um ponto localizado dentro do noacute faz-se o seguinte teste se o noacute foi

dividido testa-se de acordo com a divisatildeo do noacute se o ponto estaacute na parte do noacute

que estaacute dentro do modelo ele eacute classificado como ldquodentrordquo se o ponto estaacute na

parte que estaacute fora do modelo ele eacute classificado como ldquoforardquo (Figura 24) se o

ponto estaacute na parte que conteacutem os surfels encontra-se o surfel s pertencente ao

noacute mais proacuteximo do ponto e o classifica de acordo com s seja ns a normal em s

cs a coordenada de s cp a coordenada do ponto Se (cp - cs )٠ ns gt 0 o ponto

seraacute classificado como ldquoforardquo Senatildeo seraacute classificado como ldquodentrordquo

Se o noacute natildeo foi dividido em planos esta classificaccedilatildeo a partir do surfel

mais proacuteximo seraacute sempre feita

512 Teste DentroFora

Melhorias Propostas 53

Figura 25-Duas circunferecircncias e suas quadtrees correspondentes

O Teste DentroFora classifica os surfels de um modelo como dentro ou

fora de outro modelo ou na sua interseccedilatildeo Este teste foi aqui implementado

exatamente como foi proposto em Adams e Dutreacute [2] exceto que natildeo foi

implementado o meacutetodo TINN - Triangle Inequality Nearest Neighbour [19]

Cada octree eacute percorrida verificando-se se os seus noacutes ou surfels estatildeo dentro

fora ou no contorno do outro modelo (Figura 25) Sejam A e B duas octrees e

queremos classificar a octree A As duas octrees (AB) satildeo percorridas partindo

da raiz

Para cada noacute de A existem quatro casos (Figura 26) Para testar estas

situaccedilotildees os boxes dos noacutes satildeo aumentados de rmax o raio do maior surfel do

modelo Isto eacute feito para compensar o fato de que o surfel natildeo eacute apenas um

ponto mas sim considerado como um disco

Os quatro casos satildeo

Se o noacute de A natildeo intersecta B entatildeo todos os surfels deste noacute satildeo

classificados como fora

Se o noacute de A intersecta apenas noacutes de B que estatildeo fora do modelo

todos os surfels deste noacute satildeo fora

Se o noacute de A intersecta apenas noacutes de B que estatildeo dentro do modelo

todos os surfels deste noacute satildeo dentro

Melhorias Propostas 54

Se o noacute de A intersecta noacutes de B que estatildeo dentro e tambeacutem noacutes de B

que estatildeo fora testa-se se este noacute de A eacute ou natildeo folha Se natildeo for folha

percorre-se os filhos deste noacute de A ateacute encontrar um noacute folha cheio que

intersecta B Para cada surfel sa deste noacute folha de A encontra-se o surfel de B

mais proacuteximo e classifica-se a coordenada de sa da forma apresentada na seccedilatildeo

5111 Seja sb o surfel usado na classificaccedilatildeo de sa Se os discos de sb e sa

se intersectam sa eacute classificado como ldquointerseccedilatildeordquo

(a) (b)

(c) (d)

Figura 26- a modelos natildeo se intersectam b modelo intersecta noacutes fora c modelo intersecta apenas noacutes dentro d modelo intersecta noacutes dentro e noacutes fora

513 Criaccedilatildeo do modelo resultado

Um novo modelo eacute criado com os seguintes surfels (de acordo com a

operaccedilatildeo booleana escolhida pelo usuaacuterio - veja Regra 1 da seccedilatildeo 41)

Uniatildeo - surfels de A que estatildeo fora de B + surfels de B que estatildeo fora de A

Melhorias Propostas 55

Interseccedilatildeo - surfels de A que estatildeo dentro de B + surfels de B que estatildeo

dentro de A

Diferenccedila A-B - surfels de A que estatildeo fora de B + surfels de B que estatildeo

dentro de A (com orientaccedilatildeo invertida)

Como natildeo foi implementado tratamento especial algum de interseccedilatildeo para

o nosso plugin os surfels que se intersectam satildeo mantidos no modelo resultado

final sem modificaccedilotildees

Descrito o algoritmo vejamos a seguir a sua implementaccedilatildeo

52 Implementaccedilatildeo

Este algoritmo foi implementado na forma de um plugin para o software

PointShop 3D [11] Este plugin foi desenvolvido na linguagem C e no sistema

operacional Windows

A escolha deste tipo de implementaccedilatildeo permitiu-nos usar o software

PointShop para os testes do algoritmo Estes testes foram feitos com os modelos

disponibilizados para o PointShop [11] Nesta seccedilatildeo apresentaremos o software

PointShop e as principais estruturas de dados usadas em nosso plugin

O Pointshop eacute um software aberto com seu coacutedigo disponiacutevel e preparado

para trabalhar com plugins Eacute um software de ediccedilatildeo de modelos 3D por pontos

Ele permite aleacutem de visualizar o modelo alterar as suas caracteriacutesticas como

cor brilho e fazer mapeamento de textura iluminaccedilatildeo filtragem (Figura 27)

Melhorias Propostas 56

Figura 27-Software PointShop 3D com dois modelos carregados na sua cena

Aleacutem disso pode-se criar uma cena com vaacuterios modelos e visualizaacute-los de

qualquer ponto de vista Implementa o virtual trackball para rotacionaacute-los e

transladaacute-los Usa uma iluminaccedilatildeo simples direcional A sua arquitetura eacute

extensiacutevel permite que o usuaacuterio adicione seus proacuteprios componentes ao

sistema Possui trecircs tipos de componentes

ldquoToolsrdquo fornece funcionalidades para ediccedilatildeo interativa de superfiacutecie Satildeo

disponibilizados na ldquotoolbarrdquo

Plugins fornece funcionalidades para processar em um soacute passo

modelos ou partes deles selecionadas Satildeo disponibilizados no menu ldquoPluginsrdquo

Renderes fornece funcionalidades de display para os modelos

Para esta dissertaccedilatildeo foi escolhida a construccedilatildeo do componente Plugin

por adequar-se agrave nossa proposta e ser a mais simples de ser construiacuteda O

PointShop [11] jaacute conteacutem uma tool que executa operaccedilotildees booleanas e

deformaccedilatildeo free-form sobre os modelos carregados na cena usando o meacutetodo

de Pauly [3] apresentado no capiacutetulo 4 O nosso plugin Operaccedilotildees Booleanas

implementa o algoritmo descrito na seccedilatildeo anterior baseado na proposta de

Melhorias Propostas 57

Adams e Dutreacute [2] Uma comparaccedilatildeo entre o nosso plugin e a tool de Pauly [3] eacute

feita no capiacutetulo 6

Figura 28-Menu do PointShop com o plugin e as opccedilotildees para operaccedilotildees booleanas

Para se executar o plugin o usuaacuterio precisa carregar dois modelos na

cena do PointShop acionar o plugin informando a operaccedilatildeo que seraacute executada

O plugin executaraacute o algoritmo acima proposto e carregaraacute o resultado na cena

do Pointshop retirando os modelos anteriores

521 Estruturas de Dados

Como vimos o software PointShop [11] trabalha com modelos por pontos

Um modelo deste software descrito na seccedilatildeo 42 conteacutem todas as informaccedilotildees

que o algoritmo proposto em Bart [2] necessita Abaixo relacionamos as

Melhorias Propostas 58

principais estruturas de dados do PointShop usadas no plugin e as principais

estruturas de dados do nosso plugin

As principais classes do PointShop usadas no plugin satildeo

Classe Scene

Classe Objects

Classe SurfelColections

Classe Surfel

Classe StatusBar

Classe Transformer

A hierarquia de dados eacute a seguinte a Scene conteacutem vaacuterios Objects os

quais conteacutem SurfelColections Cada SurfelColections conteacutem Surfels que

suportam uma ou mais propriedades tais como cor difusa cor especular

Classe Scene Classe que representa uma cena que conteacutem modelos

Classe Object Um modelo eacute representado pela classe Object que

conteacutem uma SurfelCollection e as matrizes de transformaccedilatildeo para rotaccedilatildeo

escala e translaccedilatildeo Cada Object eacute identificado pelo seu nome que eacute uacutenico na

Scene O meacutetodo getUniqueName retorna um nome uacutenico Cada Object tem sua

proacutepria matriz de transformaccedilatildeo que pode ser modificada com setRotation

rotate setPosition translate setScale e scale Objects podem ser copiados com

copy Objects consiste em um conjunto de surfels os quais podem ser

recuperados pela getSurfelCollection O Object pode ser ativado com

setActiveObject e recuperado com getActiveObject

Objects podem ser adicionados ou removidos com addObject e

removeObject Os Objects podem ser obtidos pela getFirstObject e

getNextObject

Classe SurfelCollection representa o conjunto de surfels de um modelo

Cada surfelcollection consiste em um conjunto de surfels (SurfelInterface) de

tamanho obtido por getNofSurfels Os surfels podem ser recuperados com

getFirstSurfel getCurrentSurfel e getNextSurfel

A SurfelCollection conteacutem um PropertyDescriptor e uma SurfelList

A SurfelList eacute uma lista duplamente encadeada de surfels Possui os

atributos firstSurfel lastSurfel currentSurfel que satildeo ponteiros para uma

SurfelInterface nSurfels que eacute o nuacutemero de Surfels

A SurfelInterface define a API para os surfels que satildeo os menores

elementos que compotildeem um Object Podem ser considerados como pontos com

uma normal que define a orientaccedilatildeo do ciacuterculo (ou elipse) que seraacute desenhado

Melhorias Propostas 59

tatildeo logo o surfel seja renderizado Tem como atributos dois ponteiros (next e

prev) para SurfelInterface

PropertyDescriptor consiste em ateacute 32 valores descrevendo quais as

propriedades a SurfelInterface suporta

Classe Surfel classe que representa o surfel

Classe StatusBar classe que imprime mensagens na tela Os plugins

podem mandar mensagens para o usuaacuterio pela StatusBar

Mensagens texto podem ser impressas com showMessage O progresso

de uma operaccedilatildeo pode ser indicado com setProgress ou resetProgress

Classe Transformer representa a transformaccedilatildeo entre sistemas de

coordenadas Esta classe fornece meacutetodos para transformar pontos e vetores

entre os diferentes sistemas de coordenadas do Pointshop

A seguir apresentamos as principais estruturas de dados do plugin

Operaccedilotildees Booleanas

As principais estruturas de dados do plugin satildeo boundingbox tree no

lista_surfel surfel

Boundingbox conteacutem dois pontos 3D que definem uma caixa que conteacutem

o modelo um ponto com menores coordenadas xy e z e outro ponto com

maiores xyz

Tree representa a octree do modelo Cada registro conteacutem um ponteiro

para um noacute e oito ponteiros para as 8 octrees filhas

No representa um noacute da octree Conteacutem os seguintes dados

- localizaccedilatildeo do noacute que eacute o canto inferior esquerdo do noacute

- lista_surfel (preenchida apenas para noacutes folha cheios)

- quantidade de surfels do noacute

- classificaccedilatildeo do noacute como dentro fora ou contorno

- classificaccedilatildeo do noacute em relaccedilatildeo a outro modelo

- indica se o noacute eacute folha ou natildeo

- vetor que eacute a meacutedia das normais dos surfels do noacute

- ponto que eacute a meacutedia das localizaccedilotildees dos surfels do noacute

- surfel que tem (entre todos os surfels do noacute) o maior produto interno

entre a sua normal e a normal meacutedia

- surfel que tem (entre todos os surfels do noacute) o menor produto interno

entre a sua normal e a normal meacutedia

- produto interno maacuteximo e miacutenimo entre as normais dos surfels do noacute e a

normal meacutedia deste noacute

Melhorias Propostas 60

- indica se o noacute conteacutem surfels com normais em sentido oposto (produto

interno entre elas eacute menor que zero)

- classificaccedilatildeo dos oito cantos do noacute

lista_surfels lista em que cada registro conteacutem um apontador para um

surfel e um apontador para o proacuteximo registro

surfel representa o surfel da octree Conteacutem a classificaccedilatildeo em relaccedilatildeo a

outro modelo e um ponteiro para o surfel do Poinshop

Resultados 61

6 Resultados

Neste capiacutetulo apresentamos os testes realizados com o plugin para o

PointShop implementado para esta dissertaccedilatildeo a comparaccedilatildeo deste plugin com

o plugin de Pauly [3] e a comparaccedilatildeo entre o meacutetodo de Adams e Dutreacute [2] e o

meacutetodo de Pauly [3]

61 Testes

Os testes foram feitos em um PC x86 Family 6 261600 KB de RAM sem

placa graacutefica sistema operacional Windows 2000 O plugin foi implementado na

linguagem C

Os modelos usados para os testes satildeo modelos disponibilizados no

PointShop [11] Vale lembrar que o meacutetodo implementado em nosso plugin eacute

restrito a modelos soacutelidos e portanto foram usados apenas estes modelos

soacutelidos para os testes

O modelo na Figura 29 que eacute um dos modelos disponibilizados no

PointShop [11] foi usado para mostrar o resultado das operaccedilotildees realizadas

pelo plugin implementado nesta dissertaccedilatildeo O modelo Igea eacute um modelo soacutelido

que conteacutem 134345 surfels

Resultados 62

Figura 29-Modelo do PointShop Igea

Para realizar as operaccedilotildees este modelo foi carregado na cena do

PointShop duas vezes e um deles colorido de vermelho As Figuras 30 31 32

mostram o resultado da operaccedilatildeo de uniatildeo interseccedilatildeo e diferenccedila

respectivamente Os nuacutemeros de surfels dos modelos resultantes satildeo mostrados

na Tabela 2

Resultados 63

Figura 30-Resultado da uniatildeo de duas Igeas

Figura 31-Resultado da interseccedilatildeo de duas Igeas

Resultados 64

Figura 32-Resultado da diferenccedila entre duas Igeas

Tabela 2-Nuacutemero de surfels dos modelos resultantes

Observamos que o nuacutemero de surfels dos modelos resultantes estaacute

coerente com as figuras dos seus modelos

Para avaliar o tempo de processamento das operaccedilotildees foram realizados

vaacuterios testes com o objetivo de obter uma meacutedia dos tempos de realizaccedilatildeo de

cada operaccedilatildeo Tambeacutem foram armazenados os tempos da criaccedilatildeo das duas

octrees e da classificaccedilatildeo de todos os surfels dos dois objetos (como dentro ou

fora do outro modelo) Estes testes foram feitos usando o modelo Igea A meacutedia

dos tempos de processamento foi calculada e os resultados satildeo mostrados na

Tabela 3 Verificamos que o maior tempo gasto eacute para criaccedilatildeo das octrees

Verificamos tambeacutem que este resultado apresentado eacute similar ao resultado

verificado empiricamente com o plugin de Pauly [3] Os tempos gastos para

realizar as operaccedilotildees satildeo similares e o maior tempo gasto no plugin de Pauly

tambeacutem eacute para inicializaccedilatildeo de suas estruturas de dados que incluem a kd-tree

Operaccedilatildeo Nuacutemero de surfels do modelo resultado

Uniatildeo 189715

Interseccedilatildeo 72225

Diferenccedila 134552

Resultados 65

Operaccedilatildeo Criaccedilatildeo das

Octrees (seg)

Classificaccedilatildeo

(seg)

Criaccedilatildeo do

resultado (seg)

Total (seg)

Uniatildeo 39375 1324 18925 7154

Interseccedilatildeo 38585 1585 09547 63982

Diferenccedila 399875 1504 1729 729475

Tabela 3- Meacutedia dos tempos de processamento para as operaccedilotildees com duas Igeas

Com o objetivo de expor melhor os resultados deste trabalho

apresentamos abaixo mais um teste das operaccedilotildees booleanas usando o nosso

plugin Os modelos usados para este segundo teste satildeo o Max Planck e o Male

ambos modelos soacutelidos disponibilizados no PointShop Estes modelos satildeo

mostrados nas figura 33 e 34

O primeiro Max Planck conteacutem 52809 surfels

Figura 33-Modelo do PointShop MaxPlanck

O segundo modelo abaixo Male conteacutem 148138 surfels

Resultados 66

Figura 34-Modelo do PointShop Male

As Figuras 353637 mostram o resultado da operaccedilatildeo de uniatildeo interseccedilatildeo

e diferenccedila respectivamente usando os dois modelos acima Podemos observar

pela figura 35 que o resultado da operaccedilatildeo de diferenccedila neste caso gerou um

modelo resultado com trecircs partes desconexas Os nuacutemeros de surfels de cada

modelo resultado satildeo mostrados na Tabela 5

Figura 35- Resultado da Uniatildeo do modelo Male com MaxPlanck

Resultados 67

Figura 36-Resultado da interseccedilatildeo do modelo Male com o MaxPlanck

Figura 37-Resultado da diferenccedila do modelo Male do modelo MaxPlanck

As meacutedias de tempos de processamento foram calculadas da mesma

forma que o primeiro teste com o modelo Igea acima apresentado Os

resultados satildeo mostrados na Tabela 4 Podemos observar que este teste

Resultados 68

apresenta tempos um pouco menores que o teste com o modelo Igea Isto se

deve ao fato de que o modelo MaxPlanck ser significativamente menor que o

modelo Igea MaxPlanck possui 52809 surfels e Igea conteacutem 134345 surfels

Operaccedilatildeo Criaccedilatildeo das

Octrees (seg)

Classificaccedilatildeo

(seg)

Criaccedilatildeo do

resultado (seg)

Total

(seg)

Uniatildeo 3012 1254 102 5285

Interseccedilatildeo 2985 0901 0861 4747

Diferenccedila 2965 0911 0791 4667

Tabela 4-Tempo de processamento das operaccedilotildees com os modelos MaxPlanck e Male

Operaccedilatildeo Nuacutemero de surfels do resultado

Uniatildeo 126532

Interseccedilatildeo 88414

Diferenccedila 77635

Tabela 5-Nuacutemero de surfels dos modelos resultados das operaccedilotildees com os modelos MaxPlanck e Male

Em seguida apresentaremos uma comparaccedilatildeo entre o nosso plugin e o

plugin de Pauly[3] e tambeacutem uma comparaccedilatildeo entre o meacutetodo de Adams e Dutreacute

[2] e o meacutetodo de Pauly [3]

62 Comparaccedilatildeo entre os dois meacutetodos que realizam operaccedilotildees booleanas

A comparaccedilatildeo entre os meacutetodos de Pauly[3] e de Adams e Dutreacute foi feita

em termos de tempo de processamento e em termos conceituais Em termos de

tempo de processamento comparamos o plugin de Pauly[3] com o nosso plugin

Em termos de tempo de processamento verifica-se empiricamente que os

dois meacutetodos apresentam tempos bastante similares Entretanto o tempo de

processamento do algoritmo aqui implementado ainda pode ser melhorado com

Resultados 69

o uso do meacutetodo TINN [19] que foi proposto em Adams[2] - para otimizar a

pesquisa do surfel mais proacuteximo a um ponto que estaacute localizado na regiatildeo de um

noacute que conteacutem surfels - veja seccedilatildeo 42 O uso deste meacutetodo natildeo foi

implementado para este trabalho e a sua implementaccedilatildeo melhoraria o tempo de

resposta do algoritmo Aleacutem disso o trabalho de Sara F Frisken [12] citado no

capiacutetulo 2 apresenta uma otimizaccedilatildeo no uso de octrees que pode ser

incorporada no algoritmo implementado neste trabalho

Em termos conceituais vamos fazer a comparaccedilatildeo do uso do que

chamamos aqui de Regra 2 do tratamento de interseccedilatildeo e do tratamento de

ldquoarestas vivasrdquo

Como vimos na seccedilatildeo 41 tanto o algoritmo implementado nesta

dissertaccedilatildeo baseado no trabalho de Adams e Dutreacute como o meacutetodo de Pauly

[3] parte do que chamamos aqui de Regra 2 para realizar operaccedilotildees booleanas

com pontos Mas cada um destes meacutetodos daacute um tratamento diferente para o

uso desta regra

O meacutetodo de Pauly usa a Regra 2 para classificaccedilatildeo de cada ponto ou de

cada surfel Para classificar um surfel de B sb como dentro ou fora de A eacute

encontrado o surfel de A sa mais proacuteximo a sb e sb eacute classificado a partir de sa

Para encontrar sa Pauly utiliza uma kd-tree Como esta pesquisa para encontrar

sa eacute cara (mesmo usando uma kd-tree) Pauly utiliza uma esfera que conteacutem

pontos com a mesma classificaccedilatildeo (seccedilatildeo 432) e diminui em 90 este nuacutemero

de pesquisas Pauly utiliza tambeacutem a representaccedilatildeo impliacutecita MLS (Moving Least

Squares) para casos em que a Regra 2 poderia falhar e para tratamento de

interseccedilotildees Entretanto o nuacutemero destes casos em que a Regra 2 poderia falhar

eacute muito pequeno E a representaccedilatildeo MLS natildeo eacute uma estrutura simples de ser

implementada Portanto natildeo encontramos vantagens em usar MLS para estes

casos O meacutetodo de Adams e Dutreacute natildeo trata estes casos e na praacutetica

apresenta resultados bastante satisfatoacuterios como foi mostrado Portanto

consideramos que valeria a pena fazer algum tratamento especial para estes

casos se fosse um procedimento simples Para a execuccedilatildeo do algoritmo de

Pauly o uso de MLS natildeo interfere significativamente porque a construccedilatildeo desta

representaccedilatildeo natildeo eacute feita somente para realizar operaccedilotildees booleanas Os testes

empiacutericos que fizemos com o algoritmo de Pauly natildeo incluem a construccedilatildeo desta

representaccedilatildeo

Aparentemente os dois algoritmos satildeo bastante parecidos um usa octrees

e o outro usa kd-tree As duas estruturas de dados satildeo simples e otimizam a

classificaccedilatildeo dos surfels de um modelo como dentro ou fora do outro modelo

Resultados 70

Mas existe uma diferenccedila conceitual entre dois que merece ser destacada O

algoritmo aqui implementado usa a Regra 2 para classificaccedilatildeo dos noacutes de uma

octree e armazena esta octree classificada (ver capiacutetulo 5) Assim na maioria dos

casos natildeo seraacute necessaacuterio encontrar o surfel mais proacuteximo para classificar um

ponto (ou um surfel) como fora ou dentro de um modelo Caso o ponto esteja em

uma aacuterea da octree classificada ele teraacute a classificaccedilatildeo dada agravequela aacuterea A

pesquisa ao surfel mais proacuteximo seraacute feita apenas nos casos em que o ponto a

ser classificado estaacute localizado entre os planos que subdividem um noacute cheio

O uso desta octree classificada levanta uma questatildeo que natildeo foi citada no

trabalho de Adams e Dutreacute que eacute a proximidade desta estrutura (armazenada)

de octree classificada com uma representaccedilatildeo volumeacutetrica do objeto Sendo

assim esta estrutura pode ser aproveitada para outras funccedilotildees aleacutem da

classificaccedilatildeo dos surfels Por exemplo podemos ter uma aproximaccedilatildeo do

volume de uma cena somando os volumes aproximados dos modelos que a

compotildeem Como o enfoque deste trabalho eacute operaccedilatildeo booleana natildeo vamos nos

aprofundar nesta questatildeo

Outra importante diferenccedila entre os dois trabalhos que jaacute foi explicada na

seccedilatildeo 432 eacute que o meacutetodo de Pauly aplica-se a modelos soacutelidos ou natildeo

soacutelidos enquanto que o meacutetodo de Adams e Dutreacute aplica-se somente a modelos

soacutelidos

Quanto ao tratamento de interseccedilatildeo em termos de visualizaccedilatildeo todos os

dois resolvem bem o problema O tratamento de interseccedilatildeo nos dois trabalhos

tambeacutem resolve o problema da validade da Regra 2 (ver seccedilatildeo 44) Entretanto

o tratamento de Adams e Dutreacute natildeo depende da renderizaccedilatildeo sendo portanto

mais portaacutevel Aleacutem disso uma desvantagem do meacutetodo de Pauly eacute o uso da

representaccedilatildeo impliacutecita MLS (ldquoMoving Least Squaresrdquo) do objeto para obter os

pontos exatamente na curva de interseccedilatildeo Esta representaccedilatildeo torna o

tratamento de interseccedilatildeo mais complexo e a vantagem apresentada natildeo eacute tatildeo

significativa para este tratamento de interseccedilatildeo

Conclusatildeo 71

7 Conclusatildeo

Concluiacutemos entatildeo que as escolhas de Adams e Dutreacute por usar uma

octree classificada e pelo tratamento dado agrave interseccedilatildeo satildeo mais abrangentes

que a escolha de Pauly E consideramos que quanto mais abrangente for uma

escolha conceitual mais resultados poderemos tirar dela No caso de Adams e

Dutreacute eles estendem o problema de classificar um ponto para classificar todo o

modelo Como foi citado ele quase fornece uma representaccedilatildeo volumeacutetrica do

modelo Esta aproximada representaccedilatildeo volumeacutetrica pode nos fornecer outras

informaccedilotildees como por exemplo o volume aproximado do modelo

Aleacutem disso o uso da representaccedilatildeo impliacutecita MLS no meacutetodo de Pauly cria

uma complexidade a mais para o meacutetodo sem apresentar vantagens para a

realizaccedilatildeo de operaccedilotildees booleanas que eacute o nosso enfoque

Logo podemos dizer que o meacutetodo de Adams e Dutreacute apresenta as

seguintes vantagens em relaccedilatildeo ao de Pauly

- a estrutura de octree classificada aleacutem de ser usada para classificaccedilatildeo

fornece informaccedilotildees adicionais como volume aproximado do objeto

- o tempo de processamento no meacutetodo de Adams e Dutreacute tende a ser

melhor que no meacutetodo de Pauly se implementadas as melhorias acima citadas e

se colocaacutessemos em consideraccedilatildeo o uso da representaccedilatildeo impliacutecita MLS

(Moving Least Squares)

- o tratamento de interseccedilatildeo de Adams e Dutreacute apresenta a vantagem da

portabilidade ou seja iraacute funcionar independente do algoritmo de renderizaccedilatildeo

utilizado

E as vantagens do meacutetodo de Pauly em relaccedilatildeo ao de Adams e Dutreacute

- a colocaccedilatildeo de surfels exatamente na curva de interseccedilatildeo

- a possibilidade de trabalhar com modelos soacutelidos ou natildeo soacutelidos

E finalizando concluiacutemos que o estudo relatado nesta dissertaccedilatildeo foi

importante por

- fornecer um breve estudo sobre modelagem por pontos uma nova e

promissora aacuterea dentro da computaccedilatildeo graacutefica

Conclusatildeo 72

- por apresentar uma avaliaccedilatildeo dos dois trabalhos existentes sobre

operaccedilotildees booleanas com pontos encontrando as vantagens de cada um

e levantando questotildees que natildeo tinham sido citadas nos trabalhos originais

- por propor e implementar melhorias ao trabalho de Adams e Dutreacute

71 Trabalhos Futuros

Nossa implementaccedilatildeo pode ser ainda evoluiacuteda com as propostas

apresentadas na seccedilatildeo 62 Como observamos o tempo de processamento do

algoritmo aqui implementado ainda pode ser melhorado com o uso do meacutetodo

TINN [19] - que foi proposto em Adams[2] - para otimizar a pesquisa do surfel

mais proacuteximo a um ponto que estaacute localizado na regiatildeo de um noacute que conteacutem

surfels Aleacutem disso o trabalho Simple and Efficient Trasversal Methods for

Quadtrees and Octrees de Sara F Frisken [12] citado no capiacutetulo 2 apresenta

uma otimizaccedilatildeo no uso de octrees Outra proposta para melhorar o tempo de

processamento do algoritmo aqui implementado eacute usar a forma de trabalhar com

octrees apresentada neste trabalho

O trabalho de Adams e Dutreacute [2] eacute aplicado apenas a objetos soacutelidos O

nosso plugin portanto aplica-se somente a este tipo de objeto Jaacute o trabalho de

Pauly[3] eacute aplicado tambeacutem a modelos natildeo soacutelidos Apresentamos como

proposta a um trabalho futuro a extensatildeo do algoritmo aqui implementado para

modelos natildeo soacutelidos O surfel pode conter uma informaccedilatildeo adicional que indica

se ele estaacute delimitando um volume ou natildeo Assim pode-se ter um modelo com

ldquopartes soacutelidasrdquo e ldquopartes natildeo soacutelidasrdquo Por exemplo a uniatildeo de um plano com

uma esfera poderia resultar numa esfera com ldquoabasrdquo (seriam as partes do plano

que estariam fora da esfera) O modelo resultado teria uma parte correspondente

a um espaccedilo 3D (esfera) e outra parte que seria uma superfiacutecie 2D posicionada

no espaccedilo 3D sem delimitar algum volume (abas)

Muitos trabalhos podem ser desenvolvidos aplicando-se o modelo por

pontos em animaccedilatildeo jogos visualizaccedilatildeo de terrenos criaccedilatildeo de protoacutetipos etc

considerando-se a eficiecircncia e simplicidade do modelo E mais especificamente

as operaccedilotildees booleanas com pontos podem ser aplicadas para criaccedilatildeo de

cenaacuterios testes de colisotildees e nestes casos a representaccedilatildeo usando octrees

pode ser mais explorada considerando-se o seu potencial de representaccedilatildeo

volumeacutetrica de um objeto

Referecircncias Bibliograacuteficas 73

8 Referecircncias Bibliograacuteficas

[1] MAumlNTYLAuml M An Introduction to Solid Modeling Computer Science Press 1988

[2] ADAMS B DUTREacute P Interactive Boolean Operations on Surfel-

Bounded Solids Proceedings of SIGGRAPH 2003 San Diego USA 2003

[3] PAULY M KEISER R KOBBELT L GROSS M Shape Modeling

with Point-Sampled Geometry SIGGRAPH 2003 Computer Graphics

Proceedings Annual Conference Series ACM Press ACM SIGGRAPH 2003

[4] LEVOY M WHITTED T The Use of Points as Display Primitives

Technical Report TR 85-022 The University of North Carolina at Chapel Hill

Department of Computer Science 1985

[5] PFISTER H ZWICKER M VAN BAAR J GROSS M 2000 Surfels

Surface Elements as Rendering Primitives SIGGRAPH 2000 pp 335ndash342 New

Orleans LA July 23-28 2000

[6] ZWICKER M PFISTER H VAN BAAR J GROSS M Surface

Splatting SIGGRAPH 2001

[7] PAULY M KOBBELT L GROSS M Multiresolution Modeling of

Point-Sampled Geometry CS Techinical Report 378 September 16 2002

[8] CURLESS B New Methods for Surface Reconstruction from Range Images PhD thesis Stanford University 1997

[9] RUSINKIEWICZ S Real-time Acquisition and Rendering of Large 3D Models PhD thesis Stanford University 2001

Referecircncias Bibliograacuteficas 74

[10] AMENTA N BERN M KAMVYSSELIS M A new Voronoi-Based

Surface Reconstruction Algorithm SIGGRAPH 98 Conference proceedings pp

415-421 New York 1998

[11] ZWICKER M PAULY M KNOLL O GROSS M Pointshop 3D an

Interactive System for Point-Based Surface Editing Proceedings of SIGGRAPH 2002 San Antonio TX July 2002

[12] FRISKEN S PERRY R Simple and Efficient Traversal Methods for

Quadtrees and Octrees Journal of Graphics Tools Vol 7 Issue 3 May 2003

[13] CORREcircA W T OLIVEIRA M M Silva C T Wang J

Modeling and Rendering of Real Environments

Revista de Informaacutetica Teoacuterica e Aplicada (Brazilian Journal of Theoretic and Applied Computing) 9(2)127-156 2002

[14] DAVIS J MARSCHNER S GARR M LEVOY M Filling Holes in

Complex Surfaces Using Volumetric Diffusion First International Symposium on 3D Data Processing Visualization Transmission June 2002

[15] RAumlSAumlNEN J Surface Splatting Theory Extensions and Implementation Masterrsquos Thesis Dept of Computer Science Helsinki

University of Technology May 28 2002

[16] PAULY M Point Primitives for Interactive Modeling and Processing of 3D Geometry PhD thesis Federal Institute of Technology (ETH)

of Zurich 2003

[17] HOPPE H DEROSE T DUCHAMP T MCDONALD J

STUELZLE W Surface Reconstruction from Unorganized Points Computer Graphics 26(2)71ndash78 July 1992

[18] ALEXA M BEHR J COHEN-OR D FLEISHMAN S LEVIN D

SILVA C T Point Set Surfaces IEEE Visualization 2001 pp 21ndash28 October

2001

Referecircncias Bibliograacuteficas 75

[19] GREENSPAN M GODIN G TALBOT J Acceleration of Binning

Nearest Neighbor Methods Proceedings of Vision Interface 2000 pp 337-

344

[20] MENCL R Reconstruction of Surfaces from Unorganized Three-Dimensional Point Clouds Dissertation Dortmund Univ 2001

[21] KRIVANEK J Representing and Rendering Surfaces With Points

httpciteseernjneccomkrivanek03representinghtml Acesso em 30 jul

2003

[22] KRISTJANSSON ET AL Approximate Boolean Operations on Free-

form Solids Proceedings of SIGGRAPH 01 2001

Melhorias Propostas 48

511 Criaccedilatildeo e classificaccedilatildeo de uma octree para cada modelo

As ideacuteias do algoritmo satildeo aqui ilustradas em 2D mas a extensatildeo delas

para 3D eacute feita facilmente

Para cada modelo a octree eacute criada e classificada da seguinte forma

Figura 19-Quadtree classificada Os noacutes mais escuros estatildeo fora do modelo os mais claros dentro e os em tom intermediaacuterio satildeo noacutes de contorno

Gera-se uma ldquocaixa envolventerdquo do modelo contendo todos os surfels e

cria-se o noacute raiz da octree que corresponde a esta ldquocaixa envolventerdquo Este noacute

raiz eacute subdividido em oito filhos e seus surfels satildeo distribuiacutedos entre eles Ao

inveacutes de testarmos os valores de xy e z para cada surfel a fim de determinar

para qual filho ele iraacute utilizamos listas auxiliares Primeiro os surfels satildeo

subdivididos em dois grupos pelos valores de x e armazenados em uma lista

auxiliar Em seguida cada uma das listas eacute subdividida pelo valor de y e as

quatro listas obtidas seratildeo subdivididas pelo valor de z Ao final teremos 8 listas

de surfels cada uma delas pertencente a um filho

Cada noacute seraacute entatildeo novamente subdividido enquanto contiver um nuacutemero

de surfels gt nmin (valor preacute-definido) ou enquanto a profundidade da aacutervore lt pmax

(valor preacute-definido) Na figura 19 pmax = 3 e nmin = 3

Melhorias Propostas 49

Figura 20-O noacute cheio eacute dividido em trecircs partes agrave esquerda a regiatildeo estaacute dentro do modelo agrave direita estaacute fora e entre as duas linhas que dividem o noacute estaacute a regiatildeo que conteacutem os surfels

Os noacutes cheios recebem um tratamento especial Eles satildeo subdivididos em

trecircs partes da seguinte forma uma que estaacute fora do modelo outra que estaacute

dentro e uma que conteacutem os surfels Esta subdivisatildeo eacute feita por meio da criaccedilatildeo

de dois planos paralelos que dividem o noacute Para determinar estes planos

calcula-se o vetor nm igual agrave meacutedia das normais dos surfels do noacute nm = sum ns

sum ns onde ns eacute a normal de cada surfel do noacute Em seguida encontra-se o

surfel com maior produto interno entre a sua normal e a normal meacutedia

d1=Max(nm ٠ ns) Este surfel juntamente com a normal meacutedia define um dos

planos Encontra-se tambeacutem o surfel com menor produto interno entre a sua

normal e a normal meacutedia d2=Min (nm ٠ ns) Este surfel juntamente com a normal

meacutedia define o outro plano (Figura 20) Se o noacute conteacutem surfels de superfiacutecies de

orientaccedilotildees diferentes ele natildeo seraacute subdividido ou seja os planos coincidiratildeo

com os planos que delimitam o proacuteprio noacute Este teste foi implementado da

seguinte forma escolhe-se um surfel qualquer do noacute Calcula-se o produto

interno entre a normal deste surfel e as outras normais dos outros surfels deste

noacute Se algum produto interno for menor que zero este noacute natildeo seraacute subdividido

Apoacutes a etapa de subdivisatildeo classificam-se os oito cantos deste noacute como

dentro ou fora do modelo por meio da classificaccedilatildeo de um ponto que

descreveremos na sub-seccedilatildeo 5111

Melhorias Propostas 50

a b

c d

Figura 21-O noacute a eacute classificado pelo noacute c o noacute d tambeacutem eacute classificado pelo noacute c a classificaccedilatildeo do noacute a eacute propagada para o noacute b

Jaacute os noacutes vazios da octree seratildeo classificados como ldquodentrordquo ou ldquoforardquo do

modelo da seguinte forma cada noacute folha vazio eacute classificado a partir de um de

seus irmatildeos vizinhos adjacentes Se ele possuir um vizinho adjacente cheio ele

seraacute classificado por este vizinho se natildeo possuir os vizinhos adjacentes seratildeo

classificados primeiro e ele teraacute esta mesma classificaccedilatildeo (Figura 21) Como tem

que existir sempre pelo menos um noacute cheio entre os filhos de um noacute pai entatildeo

sempre esta classificaccedilatildeo poderaacute ser feita Com a classificaccedilatildeo de todos os

filhos tem-se tambeacutem a classificaccedilatildeo dos cantos do noacute pai

Mf03c003fmx a b

Figura 22-Os cantos a e b do noacute cheio possuem a mesma classificaccedilatildeo fora do modelo Esta classificaccedilatildeo foi dada ao noacute vazio adjacente

Melhorias Propostas 51

Para classificar um noacute vazio por meio de um noacute cheio verificam-se os

cantos comuns destes dois noacutes se todos os cantos tiverem a mesma

classificaccedilatildeo esta seraacute dada ao noacute vazio (Figura 22) Se houver classificaccedilotildees

diferentes escolhe-se o surfel do noacute cheio mais proacuteximo ao noacute vazio faz-se o

produto interno entre a normal deste surfel e o vetor que liga o centro do noacute

cheio ao centro do noacute vazio (ou o vetor que liga o surfel ao centro do noacute vazio)

Se o produto interno for maior que zero o noacute eacute classificado como ldquoforardquo senatildeo eacute

classificado como ldquodentrordquo Para encontrar o surfel (pertencente a um noacute cheio)

mais proacuteximo ao noacute vazio existem dois casos

- O noacute cheio eacute folha percorre-se toda a lista de surfels e escolhe o surfel

mais proacuteximo da fronteira entre o noacute cheio e o vazio

- O noacute cheio natildeo eacute um noacute folha percorrem-se os filhos do noacute cheio ou seja

esta pesquisa eacute feita descendo na octree a partir do noacute cheio procurando o

surfel mais proacuteximo agrave fronteira do pai com o noacute vazio a ser classificado

Classificando o centro do noacute vazio todo o noacute deve ter a mesma

classificaccedilatildeo pois este noacute natildeo conteacutem surfels Para encontrar o surfel do noacute

vazio mais proacuteximo da fronteira entre o noacute cheio e o vazio basta testar o valor da

coordenada se a fronteira eacute o lado direito do noacute cheio escolhe-se o surfel com

maior coordenada lsquoxrsquo se eacute o lado esquerdo escolhe-se o surfel com menor lsquoxrsquo

se lado superior surfel com maior lsquoyrsquo etc A seguir apresentamos a classificaccedilatildeo

de um ponto qualquer pertencente a um noacute cheio

Figura 23- Quadtree classificada

Melhorias Propostas 52

5111 Classificaccedilatildeo de um ponto de um noacute cheio

Figura 24 [2] A normal n eacute a normal meacutedia e os surfels s1 e s2 juntamente com a normal

n definem as retas que dividem o noacute O ponto a estaacute fora do modelo e o ponto b estaacute

dentro do modelo

Para um ponto localizado dentro do noacute faz-se o seguinte teste se o noacute foi

dividido testa-se de acordo com a divisatildeo do noacute se o ponto estaacute na parte do noacute

que estaacute dentro do modelo ele eacute classificado como ldquodentrordquo se o ponto estaacute na

parte que estaacute fora do modelo ele eacute classificado como ldquoforardquo (Figura 24) se o

ponto estaacute na parte que conteacutem os surfels encontra-se o surfel s pertencente ao

noacute mais proacuteximo do ponto e o classifica de acordo com s seja ns a normal em s

cs a coordenada de s cp a coordenada do ponto Se (cp - cs )٠ ns gt 0 o ponto

seraacute classificado como ldquoforardquo Senatildeo seraacute classificado como ldquodentrordquo

Se o noacute natildeo foi dividido em planos esta classificaccedilatildeo a partir do surfel

mais proacuteximo seraacute sempre feita

512 Teste DentroFora

Melhorias Propostas 53

Figura 25-Duas circunferecircncias e suas quadtrees correspondentes

O Teste DentroFora classifica os surfels de um modelo como dentro ou

fora de outro modelo ou na sua interseccedilatildeo Este teste foi aqui implementado

exatamente como foi proposto em Adams e Dutreacute [2] exceto que natildeo foi

implementado o meacutetodo TINN - Triangle Inequality Nearest Neighbour [19]

Cada octree eacute percorrida verificando-se se os seus noacutes ou surfels estatildeo dentro

fora ou no contorno do outro modelo (Figura 25) Sejam A e B duas octrees e

queremos classificar a octree A As duas octrees (AB) satildeo percorridas partindo

da raiz

Para cada noacute de A existem quatro casos (Figura 26) Para testar estas

situaccedilotildees os boxes dos noacutes satildeo aumentados de rmax o raio do maior surfel do

modelo Isto eacute feito para compensar o fato de que o surfel natildeo eacute apenas um

ponto mas sim considerado como um disco

Os quatro casos satildeo

Se o noacute de A natildeo intersecta B entatildeo todos os surfels deste noacute satildeo

classificados como fora

Se o noacute de A intersecta apenas noacutes de B que estatildeo fora do modelo

todos os surfels deste noacute satildeo fora

Se o noacute de A intersecta apenas noacutes de B que estatildeo dentro do modelo

todos os surfels deste noacute satildeo dentro

Melhorias Propostas 54

Se o noacute de A intersecta noacutes de B que estatildeo dentro e tambeacutem noacutes de B

que estatildeo fora testa-se se este noacute de A eacute ou natildeo folha Se natildeo for folha

percorre-se os filhos deste noacute de A ateacute encontrar um noacute folha cheio que

intersecta B Para cada surfel sa deste noacute folha de A encontra-se o surfel de B

mais proacuteximo e classifica-se a coordenada de sa da forma apresentada na seccedilatildeo

5111 Seja sb o surfel usado na classificaccedilatildeo de sa Se os discos de sb e sa

se intersectam sa eacute classificado como ldquointerseccedilatildeordquo

(a) (b)

(c) (d)

Figura 26- a modelos natildeo se intersectam b modelo intersecta noacutes fora c modelo intersecta apenas noacutes dentro d modelo intersecta noacutes dentro e noacutes fora

513 Criaccedilatildeo do modelo resultado

Um novo modelo eacute criado com os seguintes surfels (de acordo com a

operaccedilatildeo booleana escolhida pelo usuaacuterio - veja Regra 1 da seccedilatildeo 41)

Uniatildeo - surfels de A que estatildeo fora de B + surfels de B que estatildeo fora de A

Melhorias Propostas 55

Interseccedilatildeo - surfels de A que estatildeo dentro de B + surfels de B que estatildeo

dentro de A

Diferenccedila A-B - surfels de A que estatildeo fora de B + surfels de B que estatildeo

dentro de A (com orientaccedilatildeo invertida)

Como natildeo foi implementado tratamento especial algum de interseccedilatildeo para

o nosso plugin os surfels que se intersectam satildeo mantidos no modelo resultado

final sem modificaccedilotildees

Descrito o algoritmo vejamos a seguir a sua implementaccedilatildeo

52 Implementaccedilatildeo

Este algoritmo foi implementado na forma de um plugin para o software

PointShop 3D [11] Este plugin foi desenvolvido na linguagem C e no sistema

operacional Windows

A escolha deste tipo de implementaccedilatildeo permitiu-nos usar o software

PointShop para os testes do algoritmo Estes testes foram feitos com os modelos

disponibilizados para o PointShop [11] Nesta seccedilatildeo apresentaremos o software

PointShop e as principais estruturas de dados usadas em nosso plugin

O Pointshop eacute um software aberto com seu coacutedigo disponiacutevel e preparado

para trabalhar com plugins Eacute um software de ediccedilatildeo de modelos 3D por pontos

Ele permite aleacutem de visualizar o modelo alterar as suas caracteriacutesticas como

cor brilho e fazer mapeamento de textura iluminaccedilatildeo filtragem (Figura 27)

Melhorias Propostas 56

Figura 27-Software PointShop 3D com dois modelos carregados na sua cena

Aleacutem disso pode-se criar uma cena com vaacuterios modelos e visualizaacute-los de

qualquer ponto de vista Implementa o virtual trackball para rotacionaacute-los e

transladaacute-los Usa uma iluminaccedilatildeo simples direcional A sua arquitetura eacute

extensiacutevel permite que o usuaacuterio adicione seus proacuteprios componentes ao

sistema Possui trecircs tipos de componentes

ldquoToolsrdquo fornece funcionalidades para ediccedilatildeo interativa de superfiacutecie Satildeo

disponibilizados na ldquotoolbarrdquo

Plugins fornece funcionalidades para processar em um soacute passo

modelos ou partes deles selecionadas Satildeo disponibilizados no menu ldquoPluginsrdquo

Renderes fornece funcionalidades de display para os modelos

Para esta dissertaccedilatildeo foi escolhida a construccedilatildeo do componente Plugin

por adequar-se agrave nossa proposta e ser a mais simples de ser construiacuteda O

PointShop [11] jaacute conteacutem uma tool que executa operaccedilotildees booleanas e

deformaccedilatildeo free-form sobre os modelos carregados na cena usando o meacutetodo

de Pauly [3] apresentado no capiacutetulo 4 O nosso plugin Operaccedilotildees Booleanas

implementa o algoritmo descrito na seccedilatildeo anterior baseado na proposta de

Melhorias Propostas 57

Adams e Dutreacute [2] Uma comparaccedilatildeo entre o nosso plugin e a tool de Pauly [3] eacute

feita no capiacutetulo 6

Figura 28-Menu do PointShop com o plugin e as opccedilotildees para operaccedilotildees booleanas

Para se executar o plugin o usuaacuterio precisa carregar dois modelos na

cena do PointShop acionar o plugin informando a operaccedilatildeo que seraacute executada

O plugin executaraacute o algoritmo acima proposto e carregaraacute o resultado na cena

do Pointshop retirando os modelos anteriores

521 Estruturas de Dados

Como vimos o software PointShop [11] trabalha com modelos por pontos

Um modelo deste software descrito na seccedilatildeo 42 conteacutem todas as informaccedilotildees

que o algoritmo proposto em Bart [2] necessita Abaixo relacionamos as

Melhorias Propostas 58

principais estruturas de dados do PointShop usadas no plugin e as principais

estruturas de dados do nosso plugin

As principais classes do PointShop usadas no plugin satildeo

Classe Scene

Classe Objects

Classe SurfelColections

Classe Surfel

Classe StatusBar

Classe Transformer

A hierarquia de dados eacute a seguinte a Scene conteacutem vaacuterios Objects os

quais conteacutem SurfelColections Cada SurfelColections conteacutem Surfels que

suportam uma ou mais propriedades tais como cor difusa cor especular

Classe Scene Classe que representa uma cena que conteacutem modelos

Classe Object Um modelo eacute representado pela classe Object que

conteacutem uma SurfelCollection e as matrizes de transformaccedilatildeo para rotaccedilatildeo

escala e translaccedilatildeo Cada Object eacute identificado pelo seu nome que eacute uacutenico na

Scene O meacutetodo getUniqueName retorna um nome uacutenico Cada Object tem sua

proacutepria matriz de transformaccedilatildeo que pode ser modificada com setRotation

rotate setPosition translate setScale e scale Objects podem ser copiados com

copy Objects consiste em um conjunto de surfels os quais podem ser

recuperados pela getSurfelCollection O Object pode ser ativado com

setActiveObject e recuperado com getActiveObject

Objects podem ser adicionados ou removidos com addObject e

removeObject Os Objects podem ser obtidos pela getFirstObject e

getNextObject

Classe SurfelCollection representa o conjunto de surfels de um modelo

Cada surfelcollection consiste em um conjunto de surfels (SurfelInterface) de

tamanho obtido por getNofSurfels Os surfels podem ser recuperados com

getFirstSurfel getCurrentSurfel e getNextSurfel

A SurfelCollection conteacutem um PropertyDescriptor e uma SurfelList

A SurfelList eacute uma lista duplamente encadeada de surfels Possui os

atributos firstSurfel lastSurfel currentSurfel que satildeo ponteiros para uma

SurfelInterface nSurfels que eacute o nuacutemero de Surfels

A SurfelInterface define a API para os surfels que satildeo os menores

elementos que compotildeem um Object Podem ser considerados como pontos com

uma normal que define a orientaccedilatildeo do ciacuterculo (ou elipse) que seraacute desenhado

Melhorias Propostas 59

tatildeo logo o surfel seja renderizado Tem como atributos dois ponteiros (next e

prev) para SurfelInterface

PropertyDescriptor consiste em ateacute 32 valores descrevendo quais as

propriedades a SurfelInterface suporta

Classe Surfel classe que representa o surfel

Classe StatusBar classe que imprime mensagens na tela Os plugins

podem mandar mensagens para o usuaacuterio pela StatusBar

Mensagens texto podem ser impressas com showMessage O progresso

de uma operaccedilatildeo pode ser indicado com setProgress ou resetProgress

Classe Transformer representa a transformaccedilatildeo entre sistemas de

coordenadas Esta classe fornece meacutetodos para transformar pontos e vetores

entre os diferentes sistemas de coordenadas do Pointshop

A seguir apresentamos as principais estruturas de dados do plugin

Operaccedilotildees Booleanas

As principais estruturas de dados do plugin satildeo boundingbox tree no

lista_surfel surfel

Boundingbox conteacutem dois pontos 3D que definem uma caixa que conteacutem

o modelo um ponto com menores coordenadas xy e z e outro ponto com

maiores xyz

Tree representa a octree do modelo Cada registro conteacutem um ponteiro

para um noacute e oito ponteiros para as 8 octrees filhas

No representa um noacute da octree Conteacutem os seguintes dados

- localizaccedilatildeo do noacute que eacute o canto inferior esquerdo do noacute

- lista_surfel (preenchida apenas para noacutes folha cheios)

- quantidade de surfels do noacute

- classificaccedilatildeo do noacute como dentro fora ou contorno

- classificaccedilatildeo do noacute em relaccedilatildeo a outro modelo

- indica se o noacute eacute folha ou natildeo

- vetor que eacute a meacutedia das normais dos surfels do noacute

- ponto que eacute a meacutedia das localizaccedilotildees dos surfels do noacute

- surfel que tem (entre todos os surfels do noacute) o maior produto interno

entre a sua normal e a normal meacutedia

- surfel que tem (entre todos os surfels do noacute) o menor produto interno

entre a sua normal e a normal meacutedia

- produto interno maacuteximo e miacutenimo entre as normais dos surfels do noacute e a

normal meacutedia deste noacute

Melhorias Propostas 60

- indica se o noacute conteacutem surfels com normais em sentido oposto (produto

interno entre elas eacute menor que zero)

- classificaccedilatildeo dos oito cantos do noacute

lista_surfels lista em que cada registro conteacutem um apontador para um

surfel e um apontador para o proacuteximo registro

surfel representa o surfel da octree Conteacutem a classificaccedilatildeo em relaccedilatildeo a

outro modelo e um ponteiro para o surfel do Poinshop

Resultados 61

6 Resultados

Neste capiacutetulo apresentamos os testes realizados com o plugin para o

PointShop implementado para esta dissertaccedilatildeo a comparaccedilatildeo deste plugin com

o plugin de Pauly [3] e a comparaccedilatildeo entre o meacutetodo de Adams e Dutreacute [2] e o

meacutetodo de Pauly [3]

61 Testes

Os testes foram feitos em um PC x86 Family 6 261600 KB de RAM sem

placa graacutefica sistema operacional Windows 2000 O plugin foi implementado na

linguagem C

Os modelos usados para os testes satildeo modelos disponibilizados no

PointShop [11] Vale lembrar que o meacutetodo implementado em nosso plugin eacute

restrito a modelos soacutelidos e portanto foram usados apenas estes modelos

soacutelidos para os testes

O modelo na Figura 29 que eacute um dos modelos disponibilizados no

PointShop [11] foi usado para mostrar o resultado das operaccedilotildees realizadas

pelo plugin implementado nesta dissertaccedilatildeo O modelo Igea eacute um modelo soacutelido

que conteacutem 134345 surfels

Resultados 62

Figura 29-Modelo do PointShop Igea

Para realizar as operaccedilotildees este modelo foi carregado na cena do

PointShop duas vezes e um deles colorido de vermelho As Figuras 30 31 32

mostram o resultado da operaccedilatildeo de uniatildeo interseccedilatildeo e diferenccedila

respectivamente Os nuacutemeros de surfels dos modelos resultantes satildeo mostrados

na Tabela 2

Resultados 63

Figura 30-Resultado da uniatildeo de duas Igeas

Figura 31-Resultado da interseccedilatildeo de duas Igeas

Resultados 64

Figura 32-Resultado da diferenccedila entre duas Igeas

Tabela 2-Nuacutemero de surfels dos modelos resultantes

Observamos que o nuacutemero de surfels dos modelos resultantes estaacute

coerente com as figuras dos seus modelos

Para avaliar o tempo de processamento das operaccedilotildees foram realizados

vaacuterios testes com o objetivo de obter uma meacutedia dos tempos de realizaccedilatildeo de

cada operaccedilatildeo Tambeacutem foram armazenados os tempos da criaccedilatildeo das duas

octrees e da classificaccedilatildeo de todos os surfels dos dois objetos (como dentro ou

fora do outro modelo) Estes testes foram feitos usando o modelo Igea A meacutedia

dos tempos de processamento foi calculada e os resultados satildeo mostrados na

Tabela 3 Verificamos que o maior tempo gasto eacute para criaccedilatildeo das octrees

Verificamos tambeacutem que este resultado apresentado eacute similar ao resultado

verificado empiricamente com o plugin de Pauly [3] Os tempos gastos para

realizar as operaccedilotildees satildeo similares e o maior tempo gasto no plugin de Pauly

tambeacutem eacute para inicializaccedilatildeo de suas estruturas de dados que incluem a kd-tree

Operaccedilatildeo Nuacutemero de surfels do modelo resultado

Uniatildeo 189715

Interseccedilatildeo 72225

Diferenccedila 134552

Resultados 65

Operaccedilatildeo Criaccedilatildeo das

Octrees (seg)

Classificaccedilatildeo

(seg)

Criaccedilatildeo do

resultado (seg)

Total (seg)

Uniatildeo 39375 1324 18925 7154

Interseccedilatildeo 38585 1585 09547 63982

Diferenccedila 399875 1504 1729 729475

Tabela 3- Meacutedia dos tempos de processamento para as operaccedilotildees com duas Igeas

Com o objetivo de expor melhor os resultados deste trabalho

apresentamos abaixo mais um teste das operaccedilotildees booleanas usando o nosso

plugin Os modelos usados para este segundo teste satildeo o Max Planck e o Male

ambos modelos soacutelidos disponibilizados no PointShop Estes modelos satildeo

mostrados nas figura 33 e 34

O primeiro Max Planck conteacutem 52809 surfels

Figura 33-Modelo do PointShop MaxPlanck

O segundo modelo abaixo Male conteacutem 148138 surfels

Resultados 66

Figura 34-Modelo do PointShop Male

As Figuras 353637 mostram o resultado da operaccedilatildeo de uniatildeo interseccedilatildeo

e diferenccedila respectivamente usando os dois modelos acima Podemos observar

pela figura 35 que o resultado da operaccedilatildeo de diferenccedila neste caso gerou um

modelo resultado com trecircs partes desconexas Os nuacutemeros de surfels de cada

modelo resultado satildeo mostrados na Tabela 5

Figura 35- Resultado da Uniatildeo do modelo Male com MaxPlanck

Resultados 67

Figura 36-Resultado da interseccedilatildeo do modelo Male com o MaxPlanck

Figura 37-Resultado da diferenccedila do modelo Male do modelo MaxPlanck

As meacutedias de tempos de processamento foram calculadas da mesma

forma que o primeiro teste com o modelo Igea acima apresentado Os

resultados satildeo mostrados na Tabela 4 Podemos observar que este teste

Resultados 68

apresenta tempos um pouco menores que o teste com o modelo Igea Isto se

deve ao fato de que o modelo MaxPlanck ser significativamente menor que o

modelo Igea MaxPlanck possui 52809 surfels e Igea conteacutem 134345 surfels

Operaccedilatildeo Criaccedilatildeo das

Octrees (seg)

Classificaccedilatildeo

(seg)

Criaccedilatildeo do

resultado (seg)

Total

(seg)

Uniatildeo 3012 1254 102 5285

Interseccedilatildeo 2985 0901 0861 4747

Diferenccedila 2965 0911 0791 4667

Tabela 4-Tempo de processamento das operaccedilotildees com os modelos MaxPlanck e Male

Operaccedilatildeo Nuacutemero de surfels do resultado

Uniatildeo 126532

Interseccedilatildeo 88414

Diferenccedila 77635

Tabela 5-Nuacutemero de surfels dos modelos resultados das operaccedilotildees com os modelos MaxPlanck e Male

Em seguida apresentaremos uma comparaccedilatildeo entre o nosso plugin e o

plugin de Pauly[3] e tambeacutem uma comparaccedilatildeo entre o meacutetodo de Adams e Dutreacute

[2] e o meacutetodo de Pauly [3]

62 Comparaccedilatildeo entre os dois meacutetodos que realizam operaccedilotildees booleanas

A comparaccedilatildeo entre os meacutetodos de Pauly[3] e de Adams e Dutreacute foi feita

em termos de tempo de processamento e em termos conceituais Em termos de

tempo de processamento comparamos o plugin de Pauly[3] com o nosso plugin

Em termos de tempo de processamento verifica-se empiricamente que os

dois meacutetodos apresentam tempos bastante similares Entretanto o tempo de

processamento do algoritmo aqui implementado ainda pode ser melhorado com

Resultados 69

o uso do meacutetodo TINN [19] que foi proposto em Adams[2] - para otimizar a

pesquisa do surfel mais proacuteximo a um ponto que estaacute localizado na regiatildeo de um

noacute que conteacutem surfels - veja seccedilatildeo 42 O uso deste meacutetodo natildeo foi

implementado para este trabalho e a sua implementaccedilatildeo melhoraria o tempo de

resposta do algoritmo Aleacutem disso o trabalho de Sara F Frisken [12] citado no

capiacutetulo 2 apresenta uma otimizaccedilatildeo no uso de octrees que pode ser

incorporada no algoritmo implementado neste trabalho

Em termos conceituais vamos fazer a comparaccedilatildeo do uso do que

chamamos aqui de Regra 2 do tratamento de interseccedilatildeo e do tratamento de

ldquoarestas vivasrdquo

Como vimos na seccedilatildeo 41 tanto o algoritmo implementado nesta

dissertaccedilatildeo baseado no trabalho de Adams e Dutreacute como o meacutetodo de Pauly

[3] parte do que chamamos aqui de Regra 2 para realizar operaccedilotildees booleanas

com pontos Mas cada um destes meacutetodos daacute um tratamento diferente para o

uso desta regra

O meacutetodo de Pauly usa a Regra 2 para classificaccedilatildeo de cada ponto ou de

cada surfel Para classificar um surfel de B sb como dentro ou fora de A eacute

encontrado o surfel de A sa mais proacuteximo a sb e sb eacute classificado a partir de sa

Para encontrar sa Pauly utiliza uma kd-tree Como esta pesquisa para encontrar

sa eacute cara (mesmo usando uma kd-tree) Pauly utiliza uma esfera que conteacutem

pontos com a mesma classificaccedilatildeo (seccedilatildeo 432) e diminui em 90 este nuacutemero

de pesquisas Pauly utiliza tambeacutem a representaccedilatildeo impliacutecita MLS (Moving Least

Squares) para casos em que a Regra 2 poderia falhar e para tratamento de

interseccedilotildees Entretanto o nuacutemero destes casos em que a Regra 2 poderia falhar

eacute muito pequeno E a representaccedilatildeo MLS natildeo eacute uma estrutura simples de ser

implementada Portanto natildeo encontramos vantagens em usar MLS para estes

casos O meacutetodo de Adams e Dutreacute natildeo trata estes casos e na praacutetica

apresenta resultados bastante satisfatoacuterios como foi mostrado Portanto

consideramos que valeria a pena fazer algum tratamento especial para estes

casos se fosse um procedimento simples Para a execuccedilatildeo do algoritmo de

Pauly o uso de MLS natildeo interfere significativamente porque a construccedilatildeo desta

representaccedilatildeo natildeo eacute feita somente para realizar operaccedilotildees booleanas Os testes

empiacutericos que fizemos com o algoritmo de Pauly natildeo incluem a construccedilatildeo desta

representaccedilatildeo

Aparentemente os dois algoritmos satildeo bastante parecidos um usa octrees

e o outro usa kd-tree As duas estruturas de dados satildeo simples e otimizam a

classificaccedilatildeo dos surfels de um modelo como dentro ou fora do outro modelo

Resultados 70

Mas existe uma diferenccedila conceitual entre dois que merece ser destacada O

algoritmo aqui implementado usa a Regra 2 para classificaccedilatildeo dos noacutes de uma

octree e armazena esta octree classificada (ver capiacutetulo 5) Assim na maioria dos

casos natildeo seraacute necessaacuterio encontrar o surfel mais proacuteximo para classificar um

ponto (ou um surfel) como fora ou dentro de um modelo Caso o ponto esteja em

uma aacuterea da octree classificada ele teraacute a classificaccedilatildeo dada agravequela aacuterea A

pesquisa ao surfel mais proacuteximo seraacute feita apenas nos casos em que o ponto a

ser classificado estaacute localizado entre os planos que subdividem um noacute cheio

O uso desta octree classificada levanta uma questatildeo que natildeo foi citada no

trabalho de Adams e Dutreacute que eacute a proximidade desta estrutura (armazenada)

de octree classificada com uma representaccedilatildeo volumeacutetrica do objeto Sendo

assim esta estrutura pode ser aproveitada para outras funccedilotildees aleacutem da

classificaccedilatildeo dos surfels Por exemplo podemos ter uma aproximaccedilatildeo do

volume de uma cena somando os volumes aproximados dos modelos que a

compotildeem Como o enfoque deste trabalho eacute operaccedilatildeo booleana natildeo vamos nos

aprofundar nesta questatildeo

Outra importante diferenccedila entre os dois trabalhos que jaacute foi explicada na

seccedilatildeo 432 eacute que o meacutetodo de Pauly aplica-se a modelos soacutelidos ou natildeo

soacutelidos enquanto que o meacutetodo de Adams e Dutreacute aplica-se somente a modelos

soacutelidos

Quanto ao tratamento de interseccedilatildeo em termos de visualizaccedilatildeo todos os

dois resolvem bem o problema O tratamento de interseccedilatildeo nos dois trabalhos

tambeacutem resolve o problema da validade da Regra 2 (ver seccedilatildeo 44) Entretanto

o tratamento de Adams e Dutreacute natildeo depende da renderizaccedilatildeo sendo portanto

mais portaacutevel Aleacutem disso uma desvantagem do meacutetodo de Pauly eacute o uso da

representaccedilatildeo impliacutecita MLS (ldquoMoving Least Squaresrdquo) do objeto para obter os

pontos exatamente na curva de interseccedilatildeo Esta representaccedilatildeo torna o

tratamento de interseccedilatildeo mais complexo e a vantagem apresentada natildeo eacute tatildeo

significativa para este tratamento de interseccedilatildeo

Conclusatildeo 71

7 Conclusatildeo

Concluiacutemos entatildeo que as escolhas de Adams e Dutreacute por usar uma

octree classificada e pelo tratamento dado agrave interseccedilatildeo satildeo mais abrangentes

que a escolha de Pauly E consideramos que quanto mais abrangente for uma

escolha conceitual mais resultados poderemos tirar dela No caso de Adams e

Dutreacute eles estendem o problema de classificar um ponto para classificar todo o

modelo Como foi citado ele quase fornece uma representaccedilatildeo volumeacutetrica do

modelo Esta aproximada representaccedilatildeo volumeacutetrica pode nos fornecer outras

informaccedilotildees como por exemplo o volume aproximado do modelo

Aleacutem disso o uso da representaccedilatildeo impliacutecita MLS no meacutetodo de Pauly cria

uma complexidade a mais para o meacutetodo sem apresentar vantagens para a

realizaccedilatildeo de operaccedilotildees booleanas que eacute o nosso enfoque

Logo podemos dizer que o meacutetodo de Adams e Dutreacute apresenta as

seguintes vantagens em relaccedilatildeo ao de Pauly

- a estrutura de octree classificada aleacutem de ser usada para classificaccedilatildeo

fornece informaccedilotildees adicionais como volume aproximado do objeto

- o tempo de processamento no meacutetodo de Adams e Dutreacute tende a ser

melhor que no meacutetodo de Pauly se implementadas as melhorias acima citadas e

se colocaacutessemos em consideraccedilatildeo o uso da representaccedilatildeo impliacutecita MLS

(Moving Least Squares)

- o tratamento de interseccedilatildeo de Adams e Dutreacute apresenta a vantagem da

portabilidade ou seja iraacute funcionar independente do algoritmo de renderizaccedilatildeo

utilizado

E as vantagens do meacutetodo de Pauly em relaccedilatildeo ao de Adams e Dutreacute

- a colocaccedilatildeo de surfels exatamente na curva de interseccedilatildeo

- a possibilidade de trabalhar com modelos soacutelidos ou natildeo soacutelidos

E finalizando concluiacutemos que o estudo relatado nesta dissertaccedilatildeo foi

importante por

- fornecer um breve estudo sobre modelagem por pontos uma nova e

promissora aacuterea dentro da computaccedilatildeo graacutefica

Conclusatildeo 72

- por apresentar uma avaliaccedilatildeo dos dois trabalhos existentes sobre

operaccedilotildees booleanas com pontos encontrando as vantagens de cada um

e levantando questotildees que natildeo tinham sido citadas nos trabalhos originais

- por propor e implementar melhorias ao trabalho de Adams e Dutreacute

71 Trabalhos Futuros

Nossa implementaccedilatildeo pode ser ainda evoluiacuteda com as propostas

apresentadas na seccedilatildeo 62 Como observamos o tempo de processamento do

algoritmo aqui implementado ainda pode ser melhorado com o uso do meacutetodo

TINN [19] - que foi proposto em Adams[2] - para otimizar a pesquisa do surfel

mais proacuteximo a um ponto que estaacute localizado na regiatildeo de um noacute que conteacutem

surfels Aleacutem disso o trabalho Simple and Efficient Trasversal Methods for

Quadtrees and Octrees de Sara F Frisken [12] citado no capiacutetulo 2 apresenta

uma otimizaccedilatildeo no uso de octrees Outra proposta para melhorar o tempo de

processamento do algoritmo aqui implementado eacute usar a forma de trabalhar com

octrees apresentada neste trabalho

O trabalho de Adams e Dutreacute [2] eacute aplicado apenas a objetos soacutelidos O

nosso plugin portanto aplica-se somente a este tipo de objeto Jaacute o trabalho de

Pauly[3] eacute aplicado tambeacutem a modelos natildeo soacutelidos Apresentamos como

proposta a um trabalho futuro a extensatildeo do algoritmo aqui implementado para

modelos natildeo soacutelidos O surfel pode conter uma informaccedilatildeo adicional que indica

se ele estaacute delimitando um volume ou natildeo Assim pode-se ter um modelo com

ldquopartes soacutelidasrdquo e ldquopartes natildeo soacutelidasrdquo Por exemplo a uniatildeo de um plano com

uma esfera poderia resultar numa esfera com ldquoabasrdquo (seriam as partes do plano

que estariam fora da esfera) O modelo resultado teria uma parte correspondente

a um espaccedilo 3D (esfera) e outra parte que seria uma superfiacutecie 2D posicionada

no espaccedilo 3D sem delimitar algum volume (abas)

Muitos trabalhos podem ser desenvolvidos aplicando-se o modelo por

pontos em animaccedilatildeo jogos visualizaccedilatildeo de terrenos criaccedilatildeo de protoacutetipos etc

considerando-se a eficiecircncia e simplicidade do modelo E mais especificamente

as operaccedilotildees booleanas com pontos podem ser aplicadas para criaccedilatildeo de

cenaacuterios testes de colisotildees e nestes casos a representaccedilatildeo usando octrees

pode ser mais explorada considerando-se o seu potencial de representaccedilatildeo

volumeacutetrica de um objeto

Referecircncias Bibliograacuteficas 73

8 Referecircncias Bibliograacuteficas

[1] MAumlNTYLAuml M An Introduction to Solid Modeling Computer Science Press 1988

[2] ADAMS B DUTREacute P Interactive Boolean Operations on Surfel-

Bounded Solids Proceedings of SIGGRAPH 2003 San Diego USA 2003

[3] PAULY M KEISER R KOBBELT L GROSS M Shape Modeling

with Point-Sampled Geometry SIGGRAPH 2003 Computer Graphics

Proceedings Annual Conference Series ACM Press ACM SIGGRAPH 2003

[4] LEVOY M WHITTED T The Use of Points as Display Primitives

Technical Report TR 85-022 The University of North Carolina at Chapel Hill

Department of Computer Science 1985

[5] PFISTER H ZWICKER M VAN BAAR J GROSS M 2000 Surfels

Surface Elements as Rendering Primitives SIGGRAPH 2000 pp 335ndash342 New

Orleans LA July 23-28 2000

[6] ZWICKER M PFISTER H VAN BAAR J GROSS M Surface

Splatting SIGGRAPH 2001

[7] PAULY M KOBBELT L GROSS M Multiresolution Modeling of

Point-Sampled Geometry CS Techinical Report 378 September 16 2002

[8] CURLESS B New Methods for Surface Reconstruction from Range Images PhD thesis Stanford University 1997

[9] RUSINKIEWICZ S Real-time Acquisition and Rendering of Large 3D Models PhD thesis Stanford University 2001

Referecircncias Bibliograacuteficas 74

[10] AMENTA N BERN M KAMVYSSELIS M A new Voronoi-Based

Surface Reconstruction Algorithm SIGGRAPH 98 Conference proceedings pp

415-421 New York 1998

[11] ZWICKER M PAULY M KNOLL O GROSS M Pointshop 3D an

Interactive System for Point-Based Surface Editing Proceedings of SIGGRAPH 2002 San Antonio TX July 2002

[12] FRISKEN S PERRY R Simple and Efficient Traversal Methods for

Quadtrees and Octrees Journal of Graphics Tools Vol 7 Issue 3 May 2003

[13] CORREcircA W T OLIVEIRA M M Silva C T Wang J

Modeling and Rendering of Real Environments

Revista de Informaacutetica Teoacuterica e Aplicada (Brazilian Journal of Theoretic and Applied Computing) 9(2)127-156 2002

[14] DAVIS J MARSCHNER S GARR M LEVOY M Filling Holes in

Complex Surfaces Using Volumetric Diffusion First International Symposium on 3D Data Processing Visualization Transmission June 2002

[15] RAumlSAumlNEN J Surface Splatting Theory Extensions and Implementation Masterrsquos Thesis Dept of Computer Science Helsinki

University of Technology May 28 2002

[16] PAULY M Point Primitives for Interactive Modeling and Processing of 3D Geometry PhD thesis Federal Institute of Technology (ETH)

of Zurich 2003

[17] HOPPE H DEROSE T DUCHAMP T MCDONALD J

STUELZLE W Surface Reconstruction from Unorganized Points Computer Graphics 26(2)71ndash78 July 1992

[18] ALEXA M BEHR J COHEN-OR D FLEISHMAN S LEVIN D

SILVA C T Point Set Surfaces IEEE Visualization 2001 pp 21ndash28 October

2001

Referecircncias Bibliograacuteficas 75

[19] GREENSPAN M GODIN G TALBOT J Acceleration of Binning

Nearest Neighbor Methods Proceedings of Vision Interface 2000 pp 337-

344

[20] MENCL R Reconstruction of Surfaces from Unorganized Three-Dimensional Point Clouds Dissertation Dortmund Univ 2001

[21] KRIVANEK J Representing and Rendering Surfaces With Points

httpciteseernjneccomkrivanek03representinghtml Acesso em 30 jul

2003

[22] KRISTJANSSON ET AL Approximate Boolean Operations on Free-

form Solids Proceedings of SIGGRAPH 01 2001

Melhorias Propostas 49

Figura 20-O noacute cheio eacute dividido em trecircs partes agrave esquerda a regiatildeo estaacute dentro do modelo agrave direita estaacute fora e entre as duas linhas que dividem o noacute estaacute a regiatildeo que conteacutem os surfels

Os noacutes cheios recebem um tratamento especial Eles satildeo subdivididos em

trecircs partes da seguinte forma uma que estaacute fora do modelo outra que estaacute

dentro e uma que conteacutem os surfels Esta subdivisatildeo eacute feita por meio da criaccedilatildeo

de dois planos paralelos que dividem o noacute Para determinar estes planos

calcula-se o vetor nm igual agrave meacutedia das normais dos surfels do noacute nm = sum ns

sum ns onde ns eacute a normal de cada surfel do noacute Em seguida encontra-se o

surfel com maior produto interno entre a sua normal e a normal meacutedia

d1=Max(nm ٠ ns) Este surfel juntamente com a normal meacutedia define um dos

planos Encontra-se tambeacutem o surfel com menor produto interno entre a sua

normal e a normal meacutedia d2=Min (nm ٠ ns) Este surfel juntamente com a normal

meacutedia define o outro plano (Figura 20) Se o noacute conteacutem surfels de superfiacutecies de

orientaccedilotildees diferentes ele natildeo seraacute subdividido ou seja os planos coincidiratildeo

com os planos que delimitam o proacuteprio noacute Este teste foi implementado da

seguinte forma escolhe-se um surfel qualquer do noacute Calcula-se o produto

interno entre a normal deste surfel e as outras normais dos outros surfels deste

noacute Se algum produto interno for menor que zero este noacute natildeo seraacute subdividido

Apoacutes a etapa de subdivisatildeo classificam-se os oito cantos deste noacute como

dentro ou fora do modelo por meio da classificaccedilatildeo de um ponto que

descreveremos na sub-seccedilatildeo 5111

Melhorias Propostas 50

a b

c d

Figura 21-O noacute a eacute classificado pelo noacute c o noacute d tambeacutem eacute classificado pelo noacute c a classificaccedilatildeo do noacute a eacute propagada para o noacute b

Jaacute os noacutes vazios da octree seratildeo classificados como ldquodentrordquo ou ldquoforardquo do

modelo da seguinte forma cada noacute folha vazio eacute classificado a partir de um de

seus irmatildeos vizinhos adjacentes Se ele possuir um vizinho adjacente cheio ele

seraacute classificado por este vizinho se natildeo possuir os vizinhos adjacentes seratildeo

classificados primeiro e ele teraacute esta mesma classificaccedilatildeo (Figura 21) Como tem

que existir sempre pelo menos um noacute cheio entre os filhos de um noacute pai entatildeo

sempre esta classificaccedilatildeo poderaacute ser feita Com a classificaccedilatildeo de todos os

filhos tem-se tambeacutem a classificaccedilatildeo dos cantos do noacute pai

Mf03c003fmx a b

Figura 22-Os cantos a e b do noacute cheio possuem a mesma classificaccedilatildeo fora do modelo Esta classificaccedilatildeo foi dada ao noacute vazio adjacente

Melhorias Propostas 51

Para classificar um noacute vazio por meio de um noacute cheio verificam-se os

cantos comuns destes dois noacutes se todos os cantos tiverem a mesma

classificaccedilatildeo esta seraacute dada ao noacute vazio (Figura 22) Se houver classificaccedilotildees

diferentes escolhe-se o surfel do noacute cheio mais proacuteximo ao noacute vazio faz-se o

produto interno entre a normal deste surfel e o vetor que liga o centro do noacute

cheio ao centro do noacute vazio (ou o vetor que liga o surfel ao centro do noacute vazio)

Se o produto interno for maior que zero o noacute eacute classificado como ldquoforardquo senatildeo eacute

classificado como ldquodentrordquo Para encontrar o surfel (pertencente a um noacute cheio)

mais proacuteximo ao noacute vazio existem dois casos

- O noacute cheio eacute folha percorre-se toda a lista de surfels e escolhe o surfel

mais proacuteximo da fronteira entre o noacute cheio e o vazio

- O noacute cheio natildeo eacute um noacute folha percorrem-se os filhos do noacute cheio ou seja

esta pesquisa eacute feita descendo na octree a partir do noacute cheio procurando o

surfel mais proacuteximo agrave fronteira do pai com o noacute vazio a ser classificado

Classificando o centro do noacute vazio todo o noacute deve ter a mesma

classificaccedilatildeo pois este noacute natildeo conteacutem surfels Para encontrar o surfel do noacute

vazio mais proacuteximo da fronteira entre o noacute cheio e o vazio basta testar o valor da

coordenada se a fronteira eacute o lado direito do noacute cheio escolhe-se o surfel com

maior coordenada lsquoxrsquo se eacute o lado esquerdo escolhe-se o surfel com menor lsquoxrsquo

se lado superior surfel com maior lsquoyrsquo etc A seguir apresentamos a classificaccedilatildeo

de um ponto qualquer pertencente a um noacute cheio

Figura 23- Quadtree classificada

Melhorias Propostas 52

5111 Classificaccedilatildeo de um ponto de um noacute cheio

Figura 24 [2] A normal n eacute a normal meacutedia e os surfels s1 e s2 juntamente com a normal

n definem as retas que dividem o noacute O ponto a estaacute fora do modelo e o ponto b estaacute

dentro do modelo

Para um ponto localizado dentro do noacute faz-se o seguinte teste se o noacute foi

dividido testa-se de acordo com a divisatildeo do noacute se o ponto estaacute na parte do noacute

que estaacute dentro do modelo ele eacute classificado como ldquodentrordquo se o ponto estaacute na

parte que estaacute fora do modelo ele eacute classificado como ldquoforardquo (Figura 24) se o

ponto estaacute na parte que conteacutem os surfels encontra-se o surfel s pertencente ao

noacute mais proacuteximo do ponto e o classifica de acordo com s seja ns a normal em s

cs a coordenada de s cp a coordenada do ponto Se (cp - cs )٠ ns gt 0 o ponto

seraacute classificado como ldquoforardquo Senatildeo seraacute classificado como ldquodentrordquo

Se o noacute natildeo foi dividido em planos esta classificaccedilatildeo a partir do surfel

mais proacuteximo seraacute sempre feita

512 Teste DentroFora

Melhorias Propostas 53

Figura 25-Duas circunferecircncias e suas quadtrees correspondentes

O Teste DentroFora classifica os surfels de um modelo como dentro ou

fora de outro modelo ou na sua interseccedilatildeo Este teste foi aqui implementado

exatamente como foi proposto em Adams e Dutreacute [2] exceto que natildeo foi

implementado o meacutetodo TINN - Triangle Inequality Nearest Neighbour [19]

Cada octree eacute percorrida verificando-se se os seus noacutes ou surfels estatildeo dentro

fora ou no contorno do outro modelo (Figura 25) Sejam A e B duas octrees e

queremos classificar a octree A As duas octrees (AB) satildeo percorridas partindo

da raiz

Para cada noacute de A existem quatro casos (Figura 26) Para testar estas

situaccedilotildees os boxes dos noacutes satildeo aumentados de rmax o raio do maior surfel do

modelo Isto eacute feito para compensar o fato de que o surfel natildeo eacute apenas um

ponto mas sim considerado como um disco

Os quatro casos satildeo

Se o noacute de A natildeo intersecta B entatildeo todos os surfels deste noacute satildeo

classificados como fora

Se o noacute de A intersecta apenas noacutes de B que estatildeo fora do modelo

todos os surfels deste noacute satildeo fora

Se o noacute de A intersecta apenas noacutes de B que estatildeo dentro do modelo

todos os surfels deste noacute satildeo dentro

Melhorias Propostas 54

Se o noacute de A intersecta noacutes de B que estatildeo dentro e tambeacutem noacutes de B

que estatildeo fora testa-se se este noacute de A eacute ou natildeo folha Se natildeo for folha

percorre-se os filhos deste noacute de A ateacute encontrar um noacute folha cheio que

intersecta B Para cada surfel sa deste noacute folha de A encontra-se o surfel de B

mais proacuteximo e classifica-se a coordenada de sa da forma apresentada na seccedilatildeo

5111 Seja sb o surfel usado na classificaccedilatildeo de sa Se os discos de sb e sa

se intersectam sa eacute classificado como ldquointerseccedilatildeordquo

(a) (b)

(c) (d)

Figura 26- a modelos natildeo se intersectam b modelo intersecta noacutes fora c modelo intersecta apenas noacutes dentro d modelo intersecta noacutes dentro e noacutes fora

513 Criaccedilatildeo do modelo resultado

Um novo modelo eacute criado com os seguintes surfels (de acordo com a

operaccedilatildeo booleana escolhida pelo usuaacuterio - veja Regra 1 da seccedilatildeo 41)

Uniatildeo - surfels de A que estatildeo fora de B + surfels de B que estatildeo fora de A

Melhorias Propostas 55

Interseccedilatildeo - surfels de A que estatildeo dentro de B + surfels de B que estatildeo

dentro de A

Diferenccedila A-B - surfels de A que estatildeo fora de B + surfels de B que estatildeo

dentro de A (com orientaccedilatildeo invertida)

Como natildeo foi implementado tratamento especial algum de interseccedilatildeo para

o nosso plugin os surfels que se intersectam satildeo mantidos no modelo resultado

final sem modificaccedilotildees

Descrito o algoritmo vejamos a seguir a sua implementaccedilatildeo

52 Implementaccedilatildeo

Este algoritmo foi implementado na forma de um plugin para o software

PointShop 3D [11] Este plugin foi desenvolvido na linguagem C e no sistema

operacional Windows

A escolha deste tipo de implementaccedilatildeo permitiu-nos usar o software

PointShop para os testes do algoritmo Estes testes foram feitos com os modelos

disponibilizados para o PointShop [11] Nesta seccedilatildeo apresentaremos o software

PointShop e as principais estruturas de dados usadas em nosso plugin

O Pointshop eacute um software aberto com seu coacutedigo disponiacutevel e preparado

para trabalhar com plugins Eacute um software de ediccedilatildeo de modelos 3D por pontos

Ele permite aleacutem de visualizar o modelo alterar as suas caracteriacutesticas como

cor brilho e fazer mapeamento de textura iluminaccedilatildeo filtragem (Figura 27)

Melhorias Propostas 56

Figura 27-Software PointShop 3D com dois modelos carregados na sua cena

Aleacutem disso pode-se criar uma cena com vaacuterios modelos e visualizaacute-los de

qualquer ponto de vista Implementa o virtual trackball para rotacionaacute-los e

transladaacute-los Usa uma iluminaccedilatildeo simples direcional A sua arquitetura eacute

extensiacutevel permite que o usuaacuterio adicione seus proacuteprios componentes ao

sistema Possui trecircs tipos de componentes

ldquoToolsrdquo fornece funcionalidades para ediccedilatildeo interativa de superfiacutecie Satildeo

disponibilizados na ldquotoolbarrdquo

Plugins fornece funcionalidades para processar em um soacute passo

modelos ou partes deles selecionadas Satildeo disponibilizados no menu ldquoPluginsrdquo

Renderes fornece funcionalidades de display para os modelos

Para esta dissertaccedilatildeo foi escolhida a construccedilatildeo do componente Plugin

por adequar-se agrave nossa proposta e ser a mais simples de ser construiacuteda O

PointShop [11] jaacute conteacutem uma tool que executa operaccedilotildees booleanas e

deformaccedilatildeo free-form sobre os modelos carregados na cena usando o meacutetodo

de Pauly [3] apresentado no capiacutetulo 4 O nosso plugin Operaccedilotildees Booleanas

implementa o algoritmo descrito na seccedilatildeo anterior baseado na proposta de

Melhorias Propostas 57

Adams e Dutreacute [2] Uma comparaccedilatildeo entre o nosso plugin e a tool de Pauly [3] eacute

feita no capiacutetulo 6

Figura 28-Menu do PointShop com o plugin e as opccedilotildees para operaccedilotildees booleanas

Para se executar o plugin o usuaacuterio precisa carregar dois modelos na

cena do PointShop acionar o plugin informando a operaccedilatildeo que seraacute executada

O plugin executaraacute o algoritmo acima proposto e carregaraacute o resultado na cena

do Pointshop retirando os modelos anteriores

521 Estruturas de Dados

Como vimos o software PointShop [11] trabalha com modelos por pontos

Um modelo deste software descrito na seccedilatildeo 42 conteacutem todas as informaccedilotildees

que o algoritmo proposto em Bart [2] necessita Abaixo relacionamos as

Melhorias Propostas 58

principais estruturas de dados do PointShop usadas no plugin e as principais

estruturas de dados do nosso plugin

As principais classes do PointShop usadas no plugin satildeo

Classe Scene

Classe Objects

Classe SurfelColections

Classe Surfel

Classe StatusBar

Classe Transformer

A hierarquia de dados eacute a seguinte a Scene conteacutem vaacuterios Objects os

quais conteacutem SurfelColections Cada SurfelColections conteacutem Surfels que

suportam uma ou mais propriedades tais como cor difusa cor especular

Classe Scene Classe que representa uma cena que conteacutem modelos

Classe Object Um modelo eacute representado pela classe Object que

conteacutem uma SurfelCollection e as matrizes de transformaccedilatildeo para rotaccedilatildeo

escala e translaccedilatildeo Cada Object eacute identificado pelo seu nome que eacute uacutenico na

Scene O meacutetodo getUniqueName retorna um nome uacutenico Cada Object tem sua

proacutepria matriz de transformaccedilatildeo que pode ser modificada com setRotation

rotate setPosition translate setScale e scale Objects podem ser copiados com

copy Objects consiste em um conjunto de surfels os quais podem ser

recuperados pela getSurfelCollection O Object pode ser ativado com

setActiveObject e recuperado com getActiveObject

Objects podem ser adicionados ou removidos com addObject e

removeObject Os Objects podem ser obtidos pela getFirstObject e

getNextObject

Classe SurfelCollection representa o conjunto de surfels de um modelo

Cada surfelcollection consiste em um conjunto de surfels (SurfelInterface) de

tamanho obtido por getNofSurfels Os surfels podem ser recuperados com

getFirstSurfel getCurrentSurfel e getNextSurfel

A SurfelCollection conteacutem um PropertyDescriptor e uma SurfelList

A SurfelList eacute uma lista duplamente encadeada de surfels Possui os

atributos firstSurfel lastSurfel currentSurfel que satildeo ponteiros para uma

SurfelInterface nSurfels que eacute o nuacutemero de Surfels

A SurfelInterface define a API para os surfels que satildeo os menores

elementos que compotildeem um Object Podem ser considerados como pontos com

uma normal que define a orientaccedilatildeo do ciacuterculo (ou elipse) que seraacute desenhado

Melhorias Propostas 59

tatildeo logo o surfel seja renderizado Tem como atributos dois ponteiros (next e

prev) para SurfelInterface

PropertyDescriptor consiste em ateacute 32 valores descrevendo quais as

propriedades a SurfelInterface suporta

Classe Surfel classe que representa o surfel

Classe StatusBar classe que imprime mensagens na tela Os plugins

podem mandar mensagens para o usuaacuterio pela StatusBar

Mensagens texto podem ser impressas com showMessage O progresso

de uma operaccedilatildeo pode ser indicado com setProgress ou resetProgress

Classe Transformer representa a transformaccedilatildeo entre sistemas de

coordenadas Esta classe fornece meacutetodos para transformar pontos e vetores

entre os diferentes sistemas de coordenadas do Pointshop

A seguir apresentamos as principais estruturas de dados do plugin

Operaccedilotildees Booleanas

As principais estruturas de dados do plugin satildeo boundingbox tree no

lista_surfel surfel

Boundingbox conteacutem dois pontos 3D que definem uma caixa que conteacutem

o modelo um ponto com menores coordenadas xy e z e outro ponto com

maiores xyz

Tree representa a octree do modelo Cada registro conteacutem um ponteiro

para um noacute e oito ponteiros para as 8 octrees filhas

No representa um noacute da octree Conteacutem os seguintes dados

- localizaccedilatildeo do noacute que eacute o canto inferior esquerdo do noacute

- lista_surfel (preenchida apenas para noacutes folha cheios)

- quantidade de surfels do noacute

- classificaccedilatildeo do noacute como dentro fora ou contorno

- classificaccedilatildeo do noacute em relaccedilatildeo a outro modelo

- indica se o noacute eacute folha ou natildeo

- vetor que eacute a meacutedia das normais dos surfels do noacute

- ponto que eacute a meacutedia das localizaccedilotildees dos surfels do noacute

- surfel que tem (entre todos os surfels do noacute) o maior produto interno

entre a sua normal e a normal meacutedia

- surfel que tem (entre todos os surfels do noacute) o menor produto interno

entre a sua normal e a normal meacutedia

- produto interno maacuteximo e miacutenimo entre as normais dos surfels do noacute e a

normal meacutedia deste noacute

Melhorias Propostas 60

- indica se o noacute conteacutem surfels com normais em sentido oposto (produto

interno entre elas eacute menor que zero)

- classificaccedilatildeo dos oito cantos do noacute

lista_surfels lista em que cada registro conteacutem um apontador para um

surfel e um apontador para o proacuteximo registro

surfel representa o surfel da octree Conteacutem a classificaccedilatildeo em relaccedilatildeo a

outro modelo e um ponteiro para o surfel do Poinshop

Resultados 61

6 Resultados

Neste capiacutetulo apresentamos os testes realizados com o plugin para o

PointShop implementado para esta dissertaccedilatildeo a comparaccedilatildeo deste plugin com

o plugin de Pauly [3] e a comparaccedilatildeo entre o meacutetodo de Adams e Dutreacute [2] e o

meacutetodo de Pauly [3]

61 Testes

Os testes foram feitos em um PC x86 Family 6 261600 KB de RAM sem

placa graacutefica sistema operacional Windows 2000 O plugin foi implementado na

linguagem C

Os modelos usados para os testes satildeo modelos disponibilizados no

PointShop [11] Vale lembrar que o meacutetodo implementado em nosso plugin eacute

restrito a modelos soacutelidos e portanto foram usados apenas estes modelos

soacutelidos para os testes

O modelo na Figura 29 que eacute um dos modelos disponibilizados no

PointShop [11] foi usado para mostrar o resultado das operaccedilotildees realizadas

pelo plugin implementado nesta dissertaccedilatildeo O modelo Igea eacute um modelo soacutelido

que conteacutem 134345 surfels

Resultados 62

Figura 29-Modelo do PointShop Igea

Para realizar as operaccedilotildees este modelo foi carregado na cena do

PointShop duas vezes e um deles colorido de vermelho As Figuras 30 31 32

mostram o resultado da operaccedilatildeo de uniatildeo interseccedilatildeo e diferenccedila

respectivamente Os nuacutemeros de surfels dos modelos resultantes satildeo mostrados

na Tabela 2

Resultados 63

Figura 30-Resultado da uniatildeo de duas Igeas

Figura 31-Resultado da interseccedilatildeo de duas Igeas

Resultados 64

Figura 32-Resultado da diferenccedila entre duas Igeas

Tabela 2-Nuacutemero de surfels dos modelos resultantes

Observamos que o nuacutemero de surfels dos modelos resultantes estaacute

coerente com as figuras dos seus modelos

Para avaliar o tempo de processamento das operaccedilotildees foram realizados

vaacuterios testes com o objetivo de obter uma meacutedia dos tempos de realizaccedilatildeo de

cada operaccedilatildeo Tambeacutem foram armazenados os tempos da criaccedilatildeo das duas

octrees e da classificaccedilatildeo de todos os surfels dos dois objetos (como dentro ou

fora do outro modelo) Estes testes foram feitos usando o modelo Igea A meacutedia

dos tempos de processamento foi calculada e os resultados satildeo mostrados na

Tabela 3 Verificamos que o maior tempo gasto eacute para criaccedilatildeo das octrees

Verificamos tambeacutem que este resultado apresentado eacute similar ao resultado

verificado empiricamente com o plugin de Pauly [3] Os tempos gastos para

realizar as operaccedilotildees satildeo similares e o maior tempo gasto no plugin de Pauly

tambeacutem eacute para inicializaccedilatildeo de suas estruturas de dados que incluem a kd-tree

Operaccedilatildeo Nuacutemero de surfels do modelo resultado

Uniatildeo 189715

Interseccedilatildeo 72225

Diferenccedila 134552

Resultados 65

Operaccedilatildeo Criaccedilatildeo das

Octrees (seg)

Classificaccedilatildeo

(seg)

Criaccedilatildeo do

resultado (seg)

Total (seg)

Uniatildeo 39375 1324 18925 7154

Interseccedilatildeo 38585 1585 09547 63982

Diferenccedila 399875 1504 1729 729475

Tabela 3- Meacutedia dos tempos de processamento para as operaccedilotildees com duas Igeas

Com o objetivo de expor melhor os resultados deste trabalho

apresentamos abaixo mais um teste das operaccedilotildees booleanas usando o nosso

plugin Os modelos usados para este segundo teste satildeo o Max Planck e o Male

ambos modelos soacutelidos disponibilizados no PointShop Estes modelos satildeo

mostrados nas figura 33 e 34

O primeiro Max Planck conteacutem 52809 surfels

Figura 33-Modelo do PointShop MaxPlanck

O segundo modelo abaixo Male conteacutem 148138 surfels

Resultados 66

Figura 34-Modelo do PointShop Male

As Figuras 353637 mostram o resultado da operaccedilatildeo de uniatildeo interseccedilatildeo

e diferenccedila respectivamente usando os dois modelos acima Podemos observar

pela figura 35 que o resultado da operaccedilatildeo de diferenccedila neste caso gerou um

modelo resultado com trecircs partes desconexas Os nuacutemeros de surfels de cada

modelo resultado satildeo mostrados na Tabela 5

Figura 35- Resultado da Uniatildeo do modelo Male com MaxPlanck

Resultados 67

Figura 36-Resultado da interseccedilatildeo do modelo Male com o MaxPlanck

Figura 37-Resultado da diferenccedila do modelo Male do modelo MaxPlanck

As meacutedias de tempos de processamento foram calculadas da mesma

forma que o primeiro teste com o modelo Igea acima apresentado Os

resultados satildeo mostrados na Tabela 4 Podemos observar que este teste

Resultados 68

apresenta tempos um pouco menores que o teste com o modelo Igea Isto se

deve ao fato de que o modelo MaxPlanck ser significativamente menor que o

modelo Igea MaxPlanck possui 52809 surfels e Igea conteacutem 134345 surfels

Operaccedilatildeo Criaccedilatildeo das

Octrees (seg)

Classificaccedilatildeo

(seg)

Criaccedilatildeo do

resultado (seg)

Total

(seg)

Uniatildeo 3012 1254 102 5285

Interseccedilatildeo 2985 0901 0861 4747

Diferenccedila 2965 0911 0791 4667

Tabela 4-Tempo de processamento das operaccedilotildees com os modelos MaxPlanck e Male

Operaccedilatildeo Nuacutemero de surfels do resultado

Uniatildeo 126532

Interseccedilatildeo 88414

Diferenccedila 77635

Tabela 5-Nuacutemero de surfels dos modelos resultados das operaccedilotildees com os modelos MaxPlanck e Male

Em seguida apresentaremos uma comparaccedilatildeo entre o nosso plugin e o

plugin de Pauly[3] e tambeacutem uma comparaccedilatildeo entre o meacutetodo de Adams e Dutreacute

[2] e o meacutetodo de Pauly [3]

62 Comparaccedilatildeo entre os dois meacutetodos que realizam operaccedilotildees booleanas

A comparaccedilatildeo entre os meacutetodos de Pauly[3] e de Adams e Dutreacute foi feita

em termos de tempo de processamento e em termos conceituais Em termos de

tempo de processamento comparamos o plugin de Pauly[3] com o nosso plugin

Em termos de tempo de processamento verifica-se empiricamente que os

dois meacutetodos apresentam tempos bastante similares Entretanto o tempo de

processamento do algoritmo aqui implementado ainda pode ser melhorado com

Resultados 69

o uso do meacutetodo TINN [19] que foi proposto em Adams[2] - para otimizar a

pesquisa do surfel mais proacuteximo a um ponto que estaacute localizado na regiatildeo de um

noacute que conteacutem surfels - veja seccedilatildeo 42 O uso deste meacutetodo natildeo foi

implementado para este trabalho e a sua implementaccedilatildeo melhoraria o tempo de

resposta do algoritmo Aleacutem disso o trabalho de Sara F Frisken [12] citado no

capiacutetulo 2 apresenta uma otimizaccedilatildeo no uso de octrees que pode ser

incorporada no algoritmo implementado neste trabalho

Em termos conceituais vamos fazer a comparaccedilatildeo do uso do que

chamamos aqui de Regra 2 do tratamento de interseccedilatildeo e do tratamento de

ldquoarestas vivasrdquo

Como vimos na seccedilatildeo 41 tanto o algoritmo implementado nesta

dissertaccedilatildeo baseado no trabalho de Adams e Dutreacute como o meacutetodo de Pauly

[3] parte do que chamamos aqui de Regra 2 para realizar operaccedilotildees booleanas

com pontos Mas cada um destes meacutetodos daacute um tratamento diferente para o

uso desta regra

O meacutetodo de Pauly usa a Regra 2 para classificaccedilatildeo de cada ponto ou de

cada surfel Para classificar um surfel de B sb como dentro ou fora de A eacute

encontrado o surfel de A sa mais proacuteximo a sb e sb eacute classificado a partir de sa

Para encontrar sa Pauly utiliza uma kd-tree Como esta pesquisa para encontrar

sa eacute cara (mesmo usando uma kd-tree) Pauly utiliza uma esfera que conteacutem

pontos com a mesma classificaccedilatildeo (seccedilatildeo 432) e diminui em 90 este nuacutemero

de pesquisas Pauly utiliza tambeacutem a representaccedilatildeo impliacutecita MLS (Moving Least

Squares) para casos em que a Regra 2 poderia falhar e para tratamento de

interseccedilotildees Entretanto o nuacutemero destes casos em que a Regra 2 poderia falhar

eacute muito pequeno E a representaccedilatildeo MLS natildeo eacute uma estrutura simples de ser

implementada Portanto natildeo encontramos vantagens em usar MLS para estes

casos O meacutetodo de Adams e Dutreacute natildeo trata estes casos e na praacutetica

apresenta resultados bastante satisfatoacuterios como foi mostrado Portanto

consideramos que valeria a pena fazer algum tratamento especial para estes

casos se fosse um procedimento simples Para a execuccedilatildeo do algoritmo de

Pauly o uso de MLS natildeo interfere significativamente porque a construccedilatildeo desta

representaccedilatildeo natildeo eacute feita somente para realizar operaccedilotildees booleanas Os testes

empiacutericos que fizemos com o algoritmo de Pauly natildeo incluem a construccedilatildeo desta

representaccedilatildeo

Aparentemente os dois algoritmos satildeo bastante parecidos um usa octrees

e o outro usa kd-tree As duas estruturas de dados satildeo simples e otimizam a

classificaccedilatildeo dos surfels de um modelo como dentro ou fora do outro modelo

Resultados 70

Mas existe uma diferenccedila conceitual entre dois que merece ser destacada O

algoritmo aqui implementado usa a Regra 2 para classificaccedilatildeo dos noacutes de uma

octree e armazena esta octree classificada (ver capiacutetulo 5) Assim na maioria dos

casos natildeo seraacute necessaacuterio encontrar o surfel mais proacuteximo para classificar um

ponto (ou um surfel) como fora ou dentro de um modelo Caso o ponto esteja em

uma aacuterea da octree classificada ele teraacute a classificaccedilatildeo dada agravequela aacuterea A

pesquisa ao surfel mais proacuteximo seraacute feita apenas nos casos em que o ponto a

ser classificado estaacute localizado entre os planos que subdividem um noacute cheio

O uso desta octree classificada levanta uma questatildeo que natildeo foi citada no

trabalho de Adams e Dutreacute que eacute a proximidade desta estrutura (armazenada)

de octree classificada com uma representaccedilatildeo volumeacutetrica do objeto Sendo

assim esta estrutura pode ser aproveitada para outras funccedilotildees aleacutem da

classificaccedilatildeo dos surfels Por exemplo podemos ter uma aproximaccedilatildeo do

volume de uma cena somando os volumes aproximados dos modelos que a

compotildeem Como o enfoque deste trabalho eacute operaccedilatildeo booleana natildeo vamos nos

aprofundar nesta questatildeo

Outra importante diferenccedila entre os dois trabalhos que jaacute foi explicada na

seccedilatildeo 432 eacute que o meacutetodo de Pauly aplica-se a modelos soacutelidos ou natildeo

soacutelidos enquanto que o meacutetodo de Adams e Dutreacute aplica-se somente a modelos

soacutelidos

Quanto ao tratamento de interseccedilatildeo em termos de visualizaccedilatildeo todos os

dois resolvem bem o problema O tratamento de interseccedilatildeo nos dois trabalhos

tambeacutem resolve o problema da validade da Regra 2 (ver seccedilatildeo 44) Entretanto

o tratamento de Adams e Dutreacute natildeo depende da renderizaccedilatildeo sendo portanto

mais portaacutevel Aleacutem disso uma desvantagem do meacutetodo de Pauly eacute o uso da

representaccedilatildeo impliacutecita MLS (ldquoMoving Least Squaresrdquo) do objeto para obter os

pontos exatamente na curva de interseccedilatildeo Esta representaccedilatildeo torna o

tratamento de interseccedilatildeo mais complexo e a vantagem apresentada natildeo eacute tatildeo

significativa para este tratamento de interseccedilatildeo

Conclusatildeo 71

7 Conclusatildeo

Concluiacutemos entatildeo que as escolhas de Adams e Dutreacute por usar uma

octree classificada e pelo tratamento dado agrave interseccedilatildeo satildeo mais abrangentes

que a escolha de Pauly E consideramos que quanto mais abrangente for uma

escolha conceitual mais resultados poderemos tirar dela No caso de Adams e

Dutreacute eles estendem o problema de classificar um ponto para classificar todo o

modelo Como foi citado ele quase fornece uma representaccedilatildeo volumeacutetrica do

modelo Esta aproximada representaccedilatildeo volumeacutetrica pode nos fornecer outras

informaccedilotildees como por exemplo o volume aproximado do modelo

Aleacutem disso o uso da representaccedilatildeo impliacutecita MLS no meacutetodo de Pauly cria

uma complexidade a mais para o meacutetodo sem apresentar vantagens para a

realizaccedilatildeo de operaccedilotildees booleanas que eacute o nosso enfoque

Logo podemos dizer que o meacutetodo de Adams e Dutreacute apresenta as

seguintes vantagens em relaccedilatildeo ao de Pauly

- a estrutura de octree classificada aleacutem de ser usada para classificaccedilatildeo

fornece informaccedilotildees adicionais como volume aproximado do objeto

- o tempo de processamento no meacutetodo de Adams e Dutreacute tende a ser

melhor que no meacutetodo de Pauly se implementadas as melhorias acima citadas e

se colocaacutessemos em consideraccedilatildeo o uso da representaccedilatildeo impliacutecita MLS

(Moving Least Squares)

- o tratamento de interseccedilatildeo de Adams e Dutreacute apresenta a vantagem da

portabilidade ou seja iraacute funcionar independente do algoritmo de renderizaccedilatildeo

utilizado

E as vantagens do meacutetodo de Pauly em relaccedilatildeo ao de Adams e Dutreacute

- a colocaccedilatildeo de surfels exatamente na curva de interseccedilatildeo

- a possibilidade de trabalhar com modelos soacutelidos ou natildeo soacutelidos

E finalizando concluiacutemos que o estudo relatado nesta dissertaccedilatildeo foi

importante por

- fornecer um breve estudo sobre modelagem por pontos uma nova e

promissora aacuterea dentro da computaccedilatildeo graacutefica

Conclusatildeo 72

- por apresentar uma avaliaccedilatildeo dos dois trabalhos existentes sobre

operaccedilotildees booleanas com pontos encontrando as vantagens de cada um

e levantando questotildees que natildeo tinham sido citadas nos trabalhos originais

- por propor e implementar melhorias ao trabalho de Adams e Dutreacute

71 Trabalhos Futuros

Nossa implementaccedilatildeo pode ser ainda evoluiacuteda com as propostas

apresentadas na seccedilatildeo 62 Como observamos o tempo de processamento do

algoritmo aqui implementado ainda pode ser melhorado com o uso do meacutetodo

TINN [19] - que foi proposto em Adams[2] - para otimizar a pesquisa do surfel

mais proacuteximo a um ponto que estaacute localizado na regiatildeo de um noacute que conteacutem

surfels Aleacutem disso o trabalho Simple and Efficient Trasversal Methods for

Quadtrees and Octrees de Sara F Frisken [12] citado no capiacutetulo 2 apresenta

uma otimizaccedilatildeo no uso de octrees Outra proposta para melhorar o tempo de

processamento do algoritmo aqui implementado eacute usar a forma de trabalhar com

octrees apresentada neste trabalho

O trabalho de Adams e Dutreacute [2] eacute aplicado apenas a objetos soacutelidos O

nosso plugin portanto aplica-se somente a este tipo de objeto Jaacute o trabalho de

Pauly[3] eacute aplicado tambeacutem a modelos natildeo soacutelidos Apresentamos como

proposta a um trabalho futuro a extensatildeo do algoritmo aqui implementado para

modelos natildeo soacutelidos O surfel pode conter uma informaccedilatildeo adicional que indica

se ele estaacute delimitando um volume ou natildeo Assim pode-se ter um modelo com

ldquopartes soacutelidasrdquo e ldquopartes natildeo soacutelidasrdquo Por exemplo a uniatildeo de um plano com

uma esfera poderia resultar numa esfera com ldquoabasrdquo (seriam as partes do plano

que estariam fora da esfera) O modelo resultado teria uma parte correspondente

a um espaccedilo 3D (esfera) e outra parte que seria uma superfiacutecie 2D posicionada

no espaccedilo 3D sem delimitar algum volume (abas)

Muitos trabalhos podem ser desenvolvidos aplicando-se o modelo por

pontos em animaccedilatildeo jogos visualizaccedilatildeo de terrenos criaccedilatildeo de protoacutetipos etc

considerando-se a eficiecircncia e simplicidade do modelo E mais especificamente

as operaccedilotildees booleanas com pontos podem ser aplicadas para criaccedilatildeo de

cenaacuterios testes de colisotildees e nestes casos a representaccedilatildeo usando octrees

pode ser mais explorada considerando-se o seu potencial de representaccedilatildeo

volumeacutetrica de um objeto

Referecircncias Bibliograacuteficas 73

8 Referecircncias Bibliograacuteficas

[1] MAumlNTYLAuml M An Introduction to Solid Modeling Computer Science Press 1988

[2] ADAMS B DUTREacute P Interactive Boolean Operations on Surfel-

Bounded Solids Proceedings of SIGGRAPH 2003 San Diego USA 2003

[3] PAULY M KEISER R KOBBELT L GROSS M Shape Modeling

with Point-Sampled Geometry SIGGRAPH 2003 Computer Graphics

Proceedings Annual Conference Series ACM Press ACM SIGGRAPH 2003

[4] LEVOY M WHITTED T The Use of Points as Display Primitives

Technical Report TR 85-022 The University of North Carolina at Chapel Hill

Department of Computer Science 1985

[5] PFISTER H ZWICKER M VAN BAAR J GROSS M 2000 Surfels

Surface Elements as Rendering Primitives SIGGRAPH 2000 pp 335ndash342 New

Orleans LA July 23-28 2000

[6] ZWICKER M PFISTER H VAN BAAR J GROSS M Surface

Splatting SIGGRAPH 2001

[7] PAULY M KOBBELT L GROSS M Multiresolution Modeling of

Point-Sampled Geometry CS Techinical Report 378 September 16 2002

[8] CURLESS B New Methods for Surface Reconstruction from Range Images PhD thesis Stanford University 1997

[9] RUSINKIEWICZ S Real-time Acquisition and Rendering of Large 3D Models PhD thesis Stanford University 2001

Referecircncias Bibliograacuteficas 74

[10] AMENTA N BERN M KAMVYSSELIS M A new Voronoi-Based

Surface Reconstruction Algorithm SIGGRAPH 98 Conference proceedings pp

415-421 New York 1998

[11] ZWICKER M PAULY M KNOLL O GROSS M Pointshop 3D an

Interactive System for Point-Based Surface Editing Proceedings of SIGGRAPH 2002 San Antonio TX July 2002

[12] FRISKEN S PERRY R Simple and Efficient Traversal Methods for

Quadtrees and Octrees Journal of Graphics Tools Vol 7 Issue 3 May 2003

[13] CORREcircA W T OLIVEIRA M M Silva C T Wang J

Modeling and Rendering of Real Environments

Revista de Informaacutetica Teoacuterica e Aplicada (Brazilian Journal of Theoretic and Applied Computing) 9(2)127-156 2002

[14] DAVIS J MARSCHNER S GARR M LEVOY M Filling Holes in

Complex Surfaces Using Volumetric Diffusion First International Symposium on 3D Data Processing Visualization Transmission June 2002

[15] RAumlSAumlNEN J Surface Splatting Theory Extensions and Implementation Masterrsquos Thesis Dept of Computer Science Helsinki

University of Technology May 28 2002

[16] PAULY M Point Primitives for Interactive Modeling and Processing of 3D Geometry PhD thesis Federal Institute of Technology (ETH)

of Zurich 2003

[17] HOPPE H DEROSE T DUCHAMP T MCDONALD J

STUELZLE W Surface Reconstruction from Unorganized Points Computer Graphics 26(2)71ndash78 July 1992

[18] ALEXA M BEHR J COHEN-OR D FLEISHMAN S LEVIN D

SILVA C T Point Set Surfaces IEEE Visualization 2001 pp 21ndash28 October

2001

Referecircncias Bibliograacuteficas 75

[19] GREENSPAN M GODIN G TALBOT J Acceleration of Binning

Nearest Neighbor Methods Proceedings of Vision Interface 2000 pp 337-

344

[20] MENCL R Reconstruction of Surfaces from Unorganized Three-Dimensional Point Clouds Dissertation Dortmund Univ 2001

[21] KRIVANEK J Representing and Rendering Surfaces With Points

httpciteseernjneccomkrivanek03representinghtml Acesso em 30 jul

2003

[22] KRISTJANSSON ET AL Approximate Boolean Operations on Free-

form Solids Proceedings of SIGGRAPH 01 2001

Melhorias Propostas 50

a b

c d

Figura 21-O noacute a eacute classificado pelo noacute c o noacute d tambeacutem eacute classificado pelo noacute c a classificaccedilatildeo do noacute a eacute propagada para o noacute b

Jaacute os noacutes vazios da octree seratildeo classificados como ldquodentrordquo ou ldquoforardquo do

modelo da seguinte forma cada noacute folha vazio eacute classificado a partir de um de

seus irmatildeos vizinhos adjacentes Se ele possuir um vizinho adjacente cheio ele

seraacute classificado por este vizinho se natildeo possuir os vizinhos adjacentes seratildeo

classificados primeiro e ele teraacute esta mesma classificaccedilatildeo (Figura 21) Como tem

que existir sempre pelo menos um noacute cheio entre os filhos de um noacute pai entatildeo

sempre esta classificaccedilatildeo poderaacute ser feita Com a classificaccedilatildeo de todos os

filhos tem-se tambeacutem a classificaccedilatildeo dos cantos do noacute pai

Mf03c003fmx a b

Figura 22-Os cantos a e b do noacute cheio possuem a mesma classificaccedilatildeo fora do modelo Esta classificaccedilatildeo foi dada ao noacute vazio adjacente

Melhorias Propostas 51

Para classificar um noacute vazio por meio de um noacute cheio verificam-se os

cantos comuns destes dois noacutes se todos os cantos tiverem a mesma

classificaccedilatildeo esta seraacute dada ao noacute vazio (Figura 22) Se houver classificaccedilotildees

diferentes escolhe-se o surfel do noacute cheio mais proacuteximo ao noacute vazio faz-se o

produto interno entre a normal deste surfel e o vetor que liga o centro do noacute

cheio ao centro do noacute vazio (ou o vetor que liga o surfel ao centro do noacute vazio)

Se o produto interno for maior que zero o noacute eacute classificado como ldquoforardquo senatildeo eacute

classificado como ldquodentrordquo Para encontrar o surfel (pertencente a um noacute cheio)

mais proacuteximo ao noacute vazio existem dois casos

- O noacute cheio eacute folha percorre-se toda a lista de surfels e escolhe o surfel

mais proacuteximo da fronteira entre o noacute cheio e o vazio

- O noacute cheio natildeo eacute um noacute folha percorrem-se os filhos do noacute cheio ou seja

esta pesquisa eacute feita descendo na octree a partir do noacute cheio procurando o

surfel mais proacuteximo agrave fronteira do pai com o noacute vazio a ser classificado

Classificando o centro do noacute vazio todo o noacute deve ter a mesma

classificaccedilatildeo pois este noacute natildeo conteacutem surfels Para encontrar o surfel do noacute

vazio mais proacuteximo da fronteira entre o noacute cheio e o vazio basta testar o valor da

coordenada se a fronteira eacute o lado direito do noacute cheio escolhe-se o surfel com

maior coordenada lsquoxrsquo se eacute o lado esquerdo escolhe-se o surfel com menor lsquoxrsquo

se lado superior surfel com maior lsquoyrsquo etc A seguir apresentamos a classificaccedilatildeo

de um ponto qualquer pertencente a um noacute cheio

Figura 23- Quadtree classificada

Melhorias Propostas 52

5111 Classificaccedilatildeo de um ponto de um noacute cheio

Figura 24 [2] A normal n eacute a normal meacutedia e os surfels s1 e s2 juntamente com a normal

n definem as retas que dividem o noacute O ponto a estaacute fora do modelo e o ponto b estaacute

dentro do modelo

Para um ponto localizado dentro do noacute faz-se o seguinte teste se o noacute foi

dividido testa-se de acordo com a divisatildeo do noacute se o ponto estaacute na parte do noacute

que estaacute dentro do modelo ele eacute classificado como ldquodentrordquo se o ponto estaacute na

parte que estaacute fora do modelo ele eacute classificado como ldquoforardquo (Figura 24) se o

ponto estaacute na parte que conteacutem os surfels encontra-se o surfel s pertencente ao

noacute mais proacuteximo do ponto e o classifica de acordo com s seja ns a normal em s

cs a coordenada de s cp a coordenada do ponto Se (cp - cs )٠ ns gt 0 o ponto

seraacute classificado como ldquoforardquo Senatildeo seraacute classificado como ldquodentrordquo

Se o noacute natildeo foi dividido em planos esta classificaccedilatildeo a partir do surfel

mais proacuteximo seraacute sempre feita

512 Teste DentroFora

Melhorias Propostas 53

Figura 25-Duas circunferecircncias e suas quadtrees correspondentes

O Teste DentroFora classifica os surfels de um modelo como dentro ou

fora de outro modelo ou na sua interseccedilatildeo Este teste foi aqui implementado

exatamente como foi proposto em Adams e Dutreacute [2] exceto que natildeo foi

implementado o meacutetodo TINN - Triangle Inequality Nearest Neighbour [19]

Cada octree eacute percorrida verificando-se se os seus noacutes ou surfels estatildeo dentro

fora ou no contorno do outro modelo (Figura 25) Sejam A e B duas octrees e

queremos classificar a octree A As duas octrees (AB) satildeo percorridas partindo

da raiz

Para cada noacute de A existem quatro casos (Figura 26) Para testar estas

situaccedilotildees os boxes dos noacutes satildeo aumentados de rmax o raio do maior surfel do

modelo Isto eacute feito para compensar o fato de que o surfel natildeo eacute apenas um

ponto mas sim considerado como um disco

Os quatro casos satildeo

Se o noacute de A natildeo intersecta B entatildeo todos os surfels deste noacute satildeo

classificados como fora

Se o noacute de A intersecta apenas noacutes de B que estatildeo fora do modelo

todos os surfels deste noacute satildeo fora

Se o noacute de A intersecta apenas noacutes de B que estatildeo dentro do modelo

todos os surfels deste noacute satildeo dentro

Melhorias Propostas 54

Se o noacute de A intersecta noacutes de B que estatildeo dentro e tambeacutem noacutes de B

que estatildeo fora testa-se se este noacute de A eacute ou natildeo folha Se natildeo for folha

percorre-se os filhos deste noacute de A ateacute encontrar um noacute folha cheio que

intersecta B Para cada surfel sa deste noacute folha de A encontra-se o surfel de B

mais proacuteximo e classifica-se a coordenada de sa da forma apresentada na seccedilatildeo

5111 Seja sb o surfel usado na classificaccedilatildeo de sa Se os discos de sb e sa

se intersectam sa eacute classificado como ldquointerseccedilatildeordquo

(a) (b)

(c) (d)

Figura 26- a modelos natildeo se intersectam b modelo intersecta noacutes fora c modelo intersecta apenas noacutes dentro d modelo intersecta noacutes dentro e noacutes fora

513 Criaccedilatildeo do modelo resultado

Um novo modelo eacute criado com os seguintes surfels (de acordo com a

operaccedilatildeo booleana escolhida pelo usuaacuterio - veja Regra 1 da seccedilatildeo 41)

Uniatildeo - surfels de A que estatildeo fora de B + surfels de B que estatildeo fora de A

Melhorias Propostas 55

Interseccedilatildeo - surfels de A que estatildeo dentro de B + surfels de B que estatildeo

dentro de A

Diferenccedila A-B - surfels de A que estatildeo fora de B + surfels de B que estatildeo

dentro de A (com orientaccedilatildeo invertida)

Como natildeo foi implementado tratamento especial algum de interseccedilatildeo para

o nosso plugin os surfels que se intersectam satildeo mantidos no modelo resultado

final sem modificaccedilotildees

Descrito o algoritmo vejamos a seguir a sua implementaccedilatildeo

52 Implementaccedilatildeo

Este algoritmo foi implementado na forma de um plugin para o software

PointShop 3D [11] Este plugin foi desenvolvido na linguagem C e no sistema

operacional Windows

A escolha deste tipo de implementaccedilatildeo permitiu-nos usar o software

PointShop para os testes do algoritmo Estes testes foram feitos com os modelos

disponibilizados para o PointShop [11] Nesta seccedilatildeo apresentaremos o software

PointShop e as principais estruturas de dados usadas em nosso plugin

O Pointshop eacute um software aberto com seu coacutedigo disponiacutevel e preparado

para trabalhar com plugins Eacute um software de ediccedilatildeo de modelos 3D por pontos

Ele permite aleacutem de visualizar o modelo alterar as suas caracteriacutesticas como

cor brilho e fazer mapeamento de textura iluminaccedilatildeo filtragem (Figura 27)

Melhorias Propostas 56

Figura 27-Software PointShop 3D com dois modelos carregados na sua cena

Aleacutem disso pode-se criar uma cena com vaacuterios modelos e visualizaacute-los de

qualquer ponto de vista Implementa o virtual trackball para rotacionaacute-los e

transladaacute-los Usa uma iluminaccedilatildeo simples direcional A sua arquitetura eacute

extensiacutevel permite que o usuaacuterio adicione seus proacuteprios componentes ao

sistema Possui trecircs tipos de componentes

ldquoToolsrdquo fornece funcionalidades para ediccedilatildeo interativa de superfiacutecie Satildeo

disponibilizados na ldquotoolbarrdquo

Plugins fornece funcionalidades para processar em um soacute passo

modelos ou partes deles selecionadas Satildeo disponibilizados no menu ldquoPluginsrdquo

Renderes fornece funcionalidades de display para os modelos

Para esta dissertaccedilatildeo foi escolhida a construccedilatildeo do componente Plugin

por adequar-se agrave nossa proposta e ser a mais simples de ser construiacuteda O

PointShop [11] jaacute conteacutem uma tool que executa operaccedilotildees booleanas e

deformaccedilatildeo free-form sobre os modelos carregados na cena usando o meacutetodo

de Pauly [3] apresentado no capiacutetulo 4 O nosso plugin Operaccedilotildees Booleanas

implementa o algoritmo descrito na seccedilatildeo anterior baseado na proposta de

Melhorias Propostas 57

Adams e Dutreacute [2] Uma comparaccedilatildeo entre o nosso plugin e a tool de Pauly [3] eacute

feita no capiacutetulo 6

Figura 28-Menu do PointShop com o plugin e as opccedilotildees para operaccedilotildees booleanas

Para se executar o plugin o usuaacuterio precisa carregar dois modelos na

cena do PointShop acionar o plugin informando a operaccedilatildeo que seraacute executada

O plugin executaraacute o algoritmo acima proposto e carregaraacute o resultado na cena

do Pointshop retirando os modelos anteriores

521 Estruturas de Dados

Como vimos o software PointShop [11] trabalha com modelos por pontos

Um modelo deste software descrito na seccedilatildeo 42 conteacutem todas as informaccedilotildees

que o algoritmo proposto em Bart [2] necessita Abaixo relacionamos as

Melhorias Propostas 58

principais estruturas de dados do PointShop usadas no plugin e as principais

estruturas de dados do nosso plugin

As principais classes do PointShop usadas no plugin satildeo

Classe Scene

Classe Objects

Classe SurfelColections

Classe Surfel

Classe StatusBar

Classe Transformer

A hierarquia de dados eacute a seguinte a Scene conteacutem vaacuterios Objects os

quais conteacutem SurfelColections Cada SurfelColections conteacutem Surfels que

suportam uma ou mais propriedades tais como cor difusa cor especular

Classe Scene Classe que representa uma cena que conteacutem modelos

Classe Object Um modelo eacute representado pela classe Object que

conteacutem uma SurfelCollection e as matrizes de transformaccedilatildeo para rotaccedilatildeo

escala e translaccedilatildeo Cada Object eacute identificado pelo seu nome que eacute uacutenico na

Scene O meacutetodo getUniqueName retorna um nome uacutenico Cada Object tem sua

proacutepria matriz de transformaccedilatildeo que pode ser modificada com setRotation

rotate setPosition translate setScale e scale Objects podem ser copiados com

copy Objects consiste em um conjunto de surfels os quais podem ser

recuperados pela getSurfelCollection O Object pode ser ativado com

setActiveObject e recuperado com getActiveObject

Objects podem ser adicionados ou removidos com addObject e

removeObject Os Objects podem ser obtidos pela getFirstObject e

getNextObject

Classe SurfelCollection representa o conjunto de surfels de um modelo

Cada surfelcollection consiste em um conjunto de surfels (SurfelInterface) de

tamanho obtido por getNofSurfels Os surfels podem ser recuperados com

getFirstSurfel getCurrentSurfel e getNextSurfel

A SurfelCollection conteacutem um PropertyDescriptor e uma SurfelList

A SurfelList eacute uma lista duplamente encadeada de surfels Possui os

atributos firstSurfel lastSurfel currentSurfel que satildeo ponteiros para uma

SurfelInterface nSurfels que eacute o nuacutemero de Surfels

A SurfelInterface define a API para os surfels que satildeo os menores

elementos que compotildeem um Object Podem ser considerados como pontos com

uma normal que define a orientaccedilatildeo do ciacuterculo (ou elipse) que seraacute desenhado

Melhorias Propostas 59

tatildeo logo o surfel seja renderizado Tem como atributos dois ponteiros (next e

prev) para SurfelInterface

PropertyDescriptor consiste em ateacute 32 valores descrevendo quais as

propriedades a SurfelInterface suporta

Classe Surfel classe que representa o surfel

Classe StatusBar classe que imprime mensagens na tela Os plugins

podem mandar mensagens para o usuaacuterio pela StatusBar

Mensagens texto podem ser impressas com showMessage O progresso

de uma operaccedilatildeo pode ser indicado com setProgress ou resetProgress

Classe Transformer representa a transformaccedilatildeo entre sistemas de

coordenadas Esta classe fornece meacutetodos para transformar pontos e vetores

entre os diferentes sistemas de coordenadas do Pointshop

A seguir apresentamos as principais estruturas de dados do plugin

Operaccedilotildees Booleanas

As principais estruturas de dados do plugin satildeo boundingbox tree no

lista_surfel surfel

Boundingbox conteacutem dois pontos 3D que definem uma caixa que conteacutem

o modelo um ponto com menores coordenadas xy e z e outro ponto com

maiores xyz

Tree representa a octree do modelo Cada registro conteacutem um ponteiro

para um noacute e oito ponteiros para as 8 octrees filhas

No representa um noacute da octree Conteacutem os seguintes dados

- localizaccedilatildeo do noacute que eacute o canto inferior esquerdo do noacute

- lista_surfel (preenchida apenas para noacutes folha cheios)

- quantidade de surfels do noacute

- classificaccedilatildeo do noacute como dentro fora ou contorno

- classificaccedilatildeo do noacute em relaccedilatildeo a outro modelo

- indica se o noacute eacute folha ou natildeo

- vetor que eacute a meacutedia das normais dos surfels do noacute

- ponto que eacute a meacutedia das localizaccedilotildees dos surfels do noacute

- surfel que tem (entre todos os surfels do noacute) o maior produto interno

entre a sua normal e a normal meacutedia

- surfel que tem (entre todos os surfels do noacute) o menor produto interno

entre a sua normal e a normal meacutedia

- produto interno maacuteximo e miacutenimo entre as normais dos surfels do noacute e a

normal meacutedia deste noacute

Melhorias Propostas 60

- indica se o noacute conteacutem surfels com normais em sentido oposto (produto

interno entre elas eacute menor que zero)

- classificaccedilatildeo dos oito cantos do noacute

lista_surfels lista em que cada registro conteacutem um apontador para um

surfel e um apontador para o proacuteximo registro

surfel representa o surfel da octree Conteacutem a classificaccedilatildeo em relaccedilatildeo a

outro modelo e um ponteiro para o surfel do Poinshop

Resultados 61

6 Resultados

Neste capiacutetulo apresentamos os testes realizados com o plugin para o

PointShop implementado para esta dissertaccedilatildeo a comparaccedilatildeo deste plugin com

o plugin de Pauly [3] e a comparaccedilatildeo entre o meacutetodo de Adams e Dutreacute [2] e o

meacutetodo de Pauly [3]

61 Testes

Os testes foram feitos em um PC x86 Family 6 261600 KB de RAM sem

placa graacutefica sistema operacional Windows 2000 O plugin foi implementado na

linguagem C

Os modelos usados para os testes satildeo modelos disponibilizados no

PointShop [11] Vale lembrar que o meacutetodo implementado em nosso plugin eacute

restrito a modelos soacutelidos e portanto foram usados apenas estes modelos

soacutelidos para os testes

O modelo na Figura 29 que eacute um dos modelos disponibilizados no

PointShop [11] foi usado para mostrar o resultado das operaccedilotildees realizadas

pelo plugin implementado nesta dissertaccedilatildeo O modelo Igea eacute um modelo soacutelido

que conteacutem 134345 surfels

Resultados 62

Figura 29-Modelo do PointShop Igea

Para realizar as operaccedilotildees este modelo foi carregado na cena do

PointShop duas vezes e um deles colorido de vermelho As Figuras 30 31 32

mostram o resultado da operaccedilatildeo de uniatildeo interseccedilatildeo e diferenccedila

respectivamente Os nuacutemeros de surfels dos modelos resultantes satildeo mostrados

na Tabela 2

Resultados 63

Figura 30-Resultado da uniatildeo de duas Igeas

Figura 31-Resultado da interseccedilatildeo de duas Igeas

Resultados 64

Figura 32-Resultado da diferenccedila entre duas Igeas

Tabela 2-Nuacutemero de surfels dos modelos resultantes

Observamos que o nuacutemero de surfels dos modelos resultantes estaacute

coerente com as figuras dos seus modelos

Para avaliar o tempo de processamento das operaccedilotildees foram realizados

vaacuterios testes com o objetivo de obter uma meacutedia dos tempos de realizaccedilatildeo de

cada operaccedilatildeo Tambeacutem foram armazenados os tempos da criaccedilatildeo das duas

octrees e da classificaccedilatildeo de todos os surfels dos dois objetos (como dentro ou

fora do outro modelo) Estes testes foram feitos usando o modelo Igea A meacutedia

dos tempos de processamento foi calculada e os resultados satildeo mostrados na

Tabela 3 Verificamos que o maior tempo gasto eacute para criaccedilatildeo das octrees

Verificamos tambeacutem que este resultado apresentado eacute similar ao resultado

verificado empiricamente com o plugin de Pauly [3] Os tempos gastos para

realizar as operaccedilotildees satildeo similares e o maior tempo gasto no plugin de Pauly

tambeacutem eacute para inicializaccedilatildeo de suas estruturas de dados que incluem a kd-tree

Operaccedilatildeo Nuacutemero de surfels do modelo resultado

Uniatildeo 189715

Interseccedilatildeo 72225

Diferenccedila 134552

Resultados 65

Operaccedilatildeo Criaccedilatildeo das

Octrees (seg)

Classificaccedilatildeo

(seg)

Criaccedilatildeo do

resultado (seg)

Total (seg)

Uniatildeo 39375 1324 18925 7154

Interseccedilatildeo 38585 1585 09547 63982

Diferenccedila 399875 1504 1729 729475

Tabela 3- Meacutedia dos tempos de processamento para as operaccedilotildees com duas Igeas

Com o objetivo de expor melhor os resultados deste trabalho

apresentamos abaixo mais um teste das operaccedilotildees booleanas usando o nosso

plugin Os modelos usados para este segundo teste satildeo o Max Planck e o Male

ambos modelos soacutelidos disponibilizados no PointShop Estes modelos satildeo

mostrados nas figura 33 e 34

O primeiro Max Planck conteacutem 52809 surfels

Figura 33-Modelo do PointShop MaxPlanck

O segundo modelo abaixo Male conteacutem 148138 surfels

Resultados 66

Figura 34-Modelo do PointShop Male

As Figuras 353637 mostram o resultado da operaccedilatildeo de uniatildeo interseccedilatildeo

e diferenccedila respectivamente usando os dois modelos acima Podemos observar

pela figura 35 que o resultado da operaccedilatildeo de diferenccedila neste caso gerou um

modelo resultado com trecircs partes desconexas Os nuacutemeros de surfels de cada

modelo resultado satildeo mostrados na Tabela 5

Figura 35- Resultado da Uniatildeo do modelo Male com MaxPlanck

Resultados 67

Figura 36-Resultado da interseccedilatildeo do modelo Male com o MaxPlanck

Figura 37-Resultado da diferenccedila do modelo Male do modelo MaxPlanck

As meacutedias de tempos de processamento foram calculadas da mesma

forma que o primeiro teste com o modelo Igea acima apresentado Os

resultados satildeo mostrados na Tabela 4 Podemos observar que este teste

Resultados 68

apresenta tempos um pouco menores que o teste com o modelo Igea Isto se

deve ao fato de que o modelo MaxPlanck ser significativamente menor que o

modelo Igea MaxPlanck possui 52809 surfels e Igea conteacutem 134345 surfels

Operaccedilatildeo Criaccedilatildeo das

Octrees (seg)

Classificaccedilatildeo

(seg)

Criaccedilatildeo do

resultado (seg)

Total

(seg)

Uniatildeo 3012 1254 102 5285

Interseccedilatildeo 2985 0901 0861 4747

Diferenccedila 2965 0911 0791 4667

Tabela 4-Tempo de processamento das operaccedilotildees com os modelos MaxPlanck e Male

Operaccedilatildeo Nuacutemero de surfels do resultado

Uniatildeo 126532

Interseccedilatildeo 88414

Diferenccedila 77635

Tabela 5-Nuacutemero de surfels dos modelos resultados das operaccedilotildees com os modelos MaxPlanck e Male

Em seguida apresentaremos uma comparaccedilatildeo entre o nosso plugin e o

plugin de Pauly[3] e tambeacutem uma comparaccedilatildeo entre o meacutetodo de Adams e Dutreacute

[2] e o meacutetodo de Pauly [3]

62 Comparaccedilatildeo entre os dois meacutetodos que realizam operaccedilotildees booleanas

A comparaccedilatildeo entre os meacutetodos de Pauly[3] e de Adams e Dutreacute foi feita

em termos de tempo de processamento e em termos conceituais Em termos de

tempo de processamento comparamos o plugin de Pauly[3] com o nosso plugin

Em termos de tempo de processamento verifica-se empiricamente que os

dois meacutetodos apresentam tempos bastante similares Entretanto o tempo de

processamento do algoritmo aqui implementado ainda pode ser melhorado com

Resultados 69

o uso do meacutetodo TINN [19] que foi proposto em Adams[2] - para otimizar a

pesquisa do surfel mais proacuteximo a um ponto que estaacute localizado na regiatildeo de um

noacute que conteacutem surfels - veja seccedilatildeo 42 O uso deste meacutetodo natildeo foi

implementado para este trabalho e a sua implementaccedilatildeo melhoraria o tempo de

resposta do algoritmo Aleacutem disso o trabalho de Sara F Frisken [12] citado no

capiacutetulo 2 apresenta uma otimizaccedilatildeo no uso de octrees que pode ser

incorporada no algoritmo implementado neste trabalho

Em termos conceituais vamos fazer a comparaccedilatildeo do uso do que

chamamos aqui de Regra 2 do tratamento de interseccedilatildeo e do tratamento de

ldquoarestas vivasrdquo

Como vimos na seccedilatildeo 41 tanto o algoritmo implementado nesta

dissertaccedilatildeo baseado no trabalho de Adams e Dutreacute como o meacutetodo de Pauly

[3] parte do que chamamos aqui de Regra 2 para realizar operaccedilotildees booleanas

com pontos Mas cada um destes meacutetodos daacute um tratamento diferente para o

uso desta regra

O meacutetodo de Pauly usa a Regra 2 para classificaccedilatildeo de cada ponto ou de

cada surfel Para classificar um surfel de B sb como dentro ou fora de A eacute

encontrado o surfel de A sa mais proacuteximo a sb e sb eacute classificado a partir de sa

Para encontrar sa Pauly utiliza uma kd-tree Como esta pesquisa para encontrar

sa eacute cara (mesmo usando uma kd-tree) Pauly utiliza uma esfera que conteacutem

pontos com a mesma classificaccedilatildeo (seccedilatildeo 432) e diminui em 90 este nuacutemero

de pesquisas Pauly utiliza tambeacutem a representaccedilatildeo impliacutecita MLS (Moving Least

Squares) para casos em que a Regra 2 poderia falhar e para tratamento de

interseccedilotildees Entretanto o nuacutemero destes casos em que a Regra 2 poderia falhar

eacute muito pequeno E a representaccedilatildeo MLS natildeo eacute uma estrutura simples de ser

implementada Portanto natildeo encontramos vantagens em usar MLS para estes

casos O meacutetodo de Adams e Dutreacute natildeo trata estes casos e na praacutetica

apresenta resultados bastante satisfatoacuterios como foi mostrado Portanto

consideramos que valeria a pena fazer algum tratamento especial para estes

casos se fosse um procedimento simples Para a execuccedilatildeo do algoritmo de

Pauly o uso de MLS natildeo interfere significativamente porque a construccedilatildeo desta

representaccedilatildeo natildeo eacute feita somente para realizar operaccedilotildees booleanas Os testes

empiacutericos que fizemos com o algoritmo de Pauly natildeo incluem a construccedilatildeo desta

representaccedilatildeo

Aparentemente os dois algoritmos satildeo bastante parecidos um usa octrees

e o outro usa kd-tree As duas estruturas de dados satildeo simples e otimizam a

classificaccedilatildeo dos surfels de um modelo como dentro ou fora do outro modelo

Resultados 70

Mas existe uma diferenccedila conceitual entre dois que merece ser destacada O

algoritmo aqui implementado usa a Regra 2 para classificaccedilatildeo dos noacutes de uma

octree e armazena esta octree classificada (ver capiacutetulo 5) Assim na maioria dos

casos natildeo seraacute necessaacuterio encontrar o surfel mais proacuteximo para classificar um

ponto (ou um surfel) como fora ou dentro de um modelo Caso o ponto esteja em

uma aacuterea da octree classificada ele teraacute a classificaccedilatildeo dada agravequela aacuterea A

pesquisa ao surfel mais proacuteximo seraacute feita apenas nos casos em que o ponto a

ser classificado estaacute localizado entre os planos que subdividem um noacute cheio

O uso desta octree classificada levanta uma questatildeo que natildeo foi citada no

trabalho de Adams e Dutreacute que eacute a proximidade desta estrutura (armazenada)

de octree classificada com uma representaccedilatildeo volumeacutetrica do objeto Sendo

assim esta estrutura pode ser aproveitada para outras funccedilotildees aleacutem da

classificaccedilatildeo dos surfels Por exemplo podemos ter uma aproximaccedilatildeo do

volume de uma cena somando os volumes aproximados dos modelos que a

compotildeem Como o enfoque deste trabalho eacute operaccedilatildeo booleana natildeo vamos nos

aprofundar nesta questatildeo

Outra importante diferenccedila entre os dois trabalhos que jaacute foi explicada na

seccedilatildeo 432 eacute que o meacutetodo de Pauly aplica-se a modelos soacutelidos ou natildeo

soacutelidos enquanto que o meacutetodo de Adams e Dutreacute aplica-se somente a modelos

soacutelidos

Quanto ao tratamento de interseccedilatildeo em termos de visualizaccedilatildeo todos os

dois resolvem bem o problema O tratamento de interseccedilatildeo nos dois trabalhos

tambeacutem resolve o problema da validade da Regra 2 (ver seccedilatildeo 44) Entretanto

o tratamento de Adams e Dutreacute natildeo depende da renderizaccedilatildeo sendo portanto

mais portaacutevel Aleacutem disso uma desvantagem do meacutetodo de Pauly eacute o uso da

representaccedilatildeo impliacutecita MLS (ldquoMoving Least Squaresrdquo) do objeto para obter os

pontos exatamente na curva de interseccedilatildeo Esta representaccedilatildeo torna o

tratamento de interseccedilatildeo mais complexo e a vantagem apresentada natildeo eacute tatildeo

significativa para este tratamento de interseccedilatildeo

Conclusatildeo 71

7 Conclusatildeo

Concluiacutemos entatildeo que as escolhas de Adams e Dutreacute por usar uma

octree classificada e pelo tratamento dado agrave interseccedilatildeo satildeo mais abrangentes

que a escolha de Pauly E consideramos que quanto mais abrangente for uma

escolha conceitual mais resultados poderemos tirar dela No caso de Adams e

Dutreacute eles estendem o problema de classificar um ponto para classificar todo o

modelo Como foi citado ele quase fornece uma representaccedilatildeo volumeacutetrica do

modelo Esta aproximada representaccedilatildeo volumeacutetrica pode nos fornecer outras

informaccedilotildees como por exemplo o volume aproximado do modelo

Aleacutem disso o uso da representaccedilatildeo impliacutecita MLS no meacutetodo de Pauly cria

uma complexidade a mais para o meacutetodo sem apresentar vantagens para a

realizaccedilatildeo de operaccedilotildees booleanas que eacute o nosso enfoque

Logo podemos dizer que o meacutetodo de Adams e Dutreacute apresenta as

seguintes vantagens em relaccedilatildeo ao de Pauly

- a estrutura de octree classificada aleacutem de ser usada para classificaccedilatildeo

fornece informaccedilotildees adicionais como volume aproximado do objeto

- o tempo de processamento no meacutetodo de Adams e Dutreacute tende a ser

melhor que no meacutetodo de Pauly se implementadas as melhorias acima citadas e

se colocaacutessemos em consideraccedilatildeo o uso da representaccedilatildeo impliacutecita MLS

(Moving Least Squares)

- o tratamento de interseccedilatildeo de Adams e Dutreacute apresenta a vantagem da

portabilidade ou seja iraacute funcionar independente do algoritmo de renderizaccedilatildeo

utilizado

E as vantagens do meacutetodo de Pauly em relaccedilatildeo ao de Adams e Dutreacute

- a colocaccedilatildeo de surfels exatamente na curva de interseccedilatildeo

- a possibilidade de trabalhar com modelos soacutelidos ou natildeo soacutelidos

E finalizando concluiacutemos que o estudo relatado nesta dissertaccedilatildeo foi

importante por

- fornecer um breve estudo sobre modelagem por pontos uma nova e

promissora aacuterea dentro da computaccedilatildeo graacutefica

Conclusatildeo 72

- por apresentar uma avaliaccedilatildeo dos dois trabalhos existentes sobre

operaccedilotildees booleanas com pontos encontrando as vantagens de cada um

e levantando questotildees que natildeo tinham sido citadas nos trabalhos originais

- por propor e implementar melhorias ao trabalho de Adams e Dutreacute

71 Trabalhos Futuros

Nossa implementaccedilatildeo pode ser ainda evoluiacuteda com as propostas

apresentadas na seccedilatildeo 62 Como observamos o tempo de processamento do

algoritmo aqui implementado ainda pode ser melhorado com o uso do meacutetodo

TINN [19] - que foi proposto em Adams[2] - para otimizar a pesquisa do surfel

mais proacuteximo a um ponto que estaacute localizado na regiatildeo de um noacute que conteacutem

surfels Aleacutem disso o trabalho Simple and Efficient Trasversal Methods for

Quadtrees and Octrees de Sara F Frisken [12] citado no capiacutetulo 2 apresenta

uma otimizaccedilatildeo no uso de octrees Outra proposta para melhorar o tempo de

processamento do algoritmo aqui implementado eacute usar a forma de trabalhar com

octrees apresentada neste trabalho

O trabalho de Adams e Dutreacute [2] eacute aplicado apenas a objetos soacutelidos O

nosso plugin portanto aplica-se somente a este tipo de objeto Jaacute o trabalho de

Pauly[3] eacute aplicado tambeacutem a modelos natildeo soacutelidos Apresentamos como

proposta a um trabalho futuro a extensatildeo do algoritmo aqui implementado para

modelos natildeo soacutelidos O surfel pode conter uma informaccedilatildeo adicional que indica

se ele estaacute delimitando um volume ou natildeo Assim pode-se ter um modelo com

ldquopartes soacutelidasrdquo e ldquopartes natildeo soacutelidasrdquo Por exemplo a uniatildeo de um plano com

uma esfera poderia resultar numa esfera com ldquoabasrdquo (seriam as partes do plano

que estariam fora da esfera) O modelo resultado teria uma parte correspondente

a um espaccedilo 3D (esfera) e outra parte que seria uma superfiacutecie 2D posicionada

no espaccedilo 3D sem delimitar algum volume (abas)

Muitos trabalhos podem ser desenvolvidos aplicando-se o modelo por

pontos em animaccedilatildeo jogos visualizaccedilatildeo de terrenos criaccedilatildeo de protoacutetipos etc

considerando-se a eficiecircncia e simplicidade do modelo E mais especificamente

as operaccedilotildees booleanas com pontos podem ser aplicadas para criaccedilatildeo de

cenaacuterios testes de colisotildees e nestes casos a representaccedilatildeo usando octrees

pode ser mais explorada considerando-se o seu potencial de representaccedilatildeo

volumeacutetrica de um objeto

Referecircncias Bibliograacuteficas 73

8 Referecircncias Bibliograacuteficas

[1] MAumlNTYLAuml M An Introduction to Solid Modeling Computer Science Press 1988

[2] ADAMS B DUTREacute P Interactive Boolean Operations on Surfel-

Bounded Solids Proceedings of SIGGRAPH 2003 San Diego USA 2003

[3] PAULY M KEISER R KOBBELT L GROSS M Shape Modeling

with Point-Sampled Geometry SIGGRAPH 2003 Computer Graphics

Proceedings Annual Conference Series ACM Press ACM SIGGRAPH 2003

[4] LEVOY M WHITTED T The Use of Points as Display Primitives

Technical Report TR 85-022 The University of North Carolina at Chapel Hill

Department of Computer Science 1985

[5] PFISTER H ZWICKER M VAN BAAR J GROSS M 2000 Surfels

Surface Elements as Rendering Primitives SIGGRAPH 2000 pp 335ndash342 New

Orleans LA July 23-28 2000

[6] ZWICKER M PFISTER H VAN BAAR J GROSS M Surface

Splatting SIGGRAPH 2001

[7] PAULY M KOBBELT L GROSS M Multiresolution Modeling of

Point-Sampled Geometry CS Techinical Report 378 September 16 2002

[8] CURLESS B New Methods for Surface Reconstruction from Range Images PhD thesis Stanford University 1997

[9] RUSINKIEWICZ S Real-time Acquisition and Rendering of Large 3D Models PhD thesis Stanford University 2001

Referecircncias Bibliograacuteficas 74

[10] AMENTA N BERN M KAMVYSSELIS M A new Voronoi-Based

Surface Reconstruction Algorithm SIGGRAPH 98 Conference proceedings pp

415-421 New York 1998

[11] ZWICKER M PAULY M KNOLL O GROSS M Pointshop 3D an

Interactive System for Point-Based Surface Editing Proceedings of SIGGRAPH 2002 San Antonio TX July 2002

[12] FRISKEN S PERRY R Simple and Efficient Traversal Methods for

Quadtrees and Octrees Journal of Graphics Tools Vol 7 Issue 3 May 2003

[13] CORREcircA W T OLIVEIRA M M Silva C T Wang J

Modeling and Rendering of Real Environments

Revista de Informaacutetica Teoacuterica e Aplicada (Brazilian Journal of Theoretic and Applied Computing) 9(2)127-156 2002

[14] DAVIS J MARSCHNER S GARR M LEVOY M Filling Holes in

Complex Surfaces Using Volumetric Diffusion First International Symposium on 3D Data Processing Visualization Transmission June 2002

[15] RAumlSAumlNEN J Surface Splatting Theory Extensions and Implementation Masterrsquos Thesis Dept of Computer Science Helsinki

University of Technology May 28 2002

[16] PAULY M Point Primitives for Interactive Modeling and Processing of 3D Geometry PhD thesis Federal Institute of Technology (ETH)

of Zurich 2003

[17] HOPPE H DEROSE T DUCHAMP T MCDONALD J

STUELZLE W Surface Reconstruction from Unorganized Points Computer Graphics 26(2)71ndash78 July 1992

[18] ALEXA M BEHR J COHEN-OR D FLEISHMAN S LEVIN D

SILVA C T Point Set Surfaces IEEE Visualization 2001 pp 21ndash28 October

2001

Referecircncias Bibliograacuteficas 75

[19] GREENSPAN M GODIN G TALBOT J Acceleration of Binning

Nearest Neighbor Methods Proceedings of Vision Interface 2000 pp 337-

344

[20] MENCL R Reconstruction of Surfaces from Unorganized Three-Dimensional Point Clouds Dissertation Dortmund Univ 2001

[21] KRIVANEK J Representing and Rendering Surfaces With Points

httpciteseernjneccomkrivanek03representinghtml Acesso em 30 jul

2003

[22] KRISTJANSSON ET AL Approximate Boolean Operations on Free-

form Solids Proceedings of SIGGRAPH 01 2001

Melhorias Propostas 51

Para classificar um noacute vazio por meio de um noacute cheio verificam-se os

cantos comuns destes dois noacutes se todos os cantos tiverem a mesma

classificaccedilatildeo esta seraacute dada ao noacute vazio (Figura 22) Se houver classificaccedilotildees

diferentes escolhe-se o surfel do noacute cheio mais proacuteximo ao noacute vazio faz-se o

produto interno entre a normal deste surfel e o vetor que liga o centro do noacute

cheio ao centro do noacute vazio (ou o vetor que liga o surfel ao centro do noacute vazio)

Se o produto interno for maior que zero o noacute eacute classificado como ldquoforardquo senatildeo eacute

classificado como ldquodentrordquo Para encontrar o surfel (pertencente a um noacute cheio)

mais proacuteximo ao noacute vazio existem dois casos

- O noacute cheio eacute folha percorre-se toda a lista de surfels e escolhe o surfel

mais proacuteximo da fronteira entre o noacute cheio e o vazio

- O noacute cheio natildeo eacute um noacute folha percorrem-se os filhos do noacute cheio ou seja

esta pesquisa eacute feita descendo na octree a partir do noacute cheio procurando o

surfel mais proacuteximo agrave fronteira do pai com o noacute vazio a ser classificado

Classificando o centro do noacute vazio todo o noacute deve ter a mesma

classificaccedilatildeo pois este noacute natildeo conteacutem surfels Para encontrar o surfel do noacute

vazio mais proacuteximo da fronteira entre o noacute cheio e o vazio basta testar o valor da

coordenada se a fronteira eacute o lado direito do noacute cheio escolhe-se o surfel com

maior coordenada lsquoxrsquo se eacute o lado esquerdo escolhe-se o surfel com menor lsquoxrsquo

se lado superior surfel com maior lsquoyrsquo etc A seguir apresentamos a classificaccedilatildeo

de um ponto qualquer pertencente a um noacute cheio

Figura 23- Quadtree classificada

Melhorias Propostas 52

5111 Classificaccedilatildeo de um ponto de um noacute cheio

Figura 24 [2] A normal n eacute a normal meacutedia e os surfels s1 e s2 juntamente com a normal

n definem as retas que dividem o noacute O ponto a estaacute fora do modelo e o ponto b estaacute

dentro do modelo

Para um ponto localizado dentro do noacute faz-se o seguinte teste se o noacute foi

dividido testa-se de acordo com a divisatildeo do noacute se o ponto estaacute na parte do noacute

que estaacute dentro do modelo ele eacute classificado como ldquodentrordquo se o ponto estaacute na

parte que estaacute fora do modelo ele eacute classificado como ldquoforardquo (Figura 24) se o

ponto estaacute na parte que conteacutem os surfels encontra-se o surfel s pertencente ao

noacute mais proacuteximo do ponto e o classifica de acordo com s seja ns a normal em s

cs a coordenada de s cp a coordenada do ponto Se (cp - cs )٠ ns gt 0 o ponto

seraacute classificado como ldquoforardquo Senatildeo seraacute classificado como ldquodentrordquo

Se o noacute natildeo foi dividido em planos esta classificaccedilatildeo a partir do surfel

mais proacuteximo seraacute sempre feita

512 Teste DentroFora

Melhorias Propostas 53

Figura 25-Duas circunferecircncias e suas quadtrees correspondentes

O Teste DentroFora classifica os surfels de um modelo como dentro ou

fora de outro modelo ou na sua interseccedilatildeo Este teste foi aqui implementado

exatamente como foi proposto em Adams e Dutreacute [2] exceto que natildeo foi

implementado o meacutetodo TINN - Triangle Inequality Nearest Neighbour [19]

Cada octree eacute percorrida verificando-se se os seus noacutes ou surfels estatildeo dentro

fora ou no contorno do outro modelo (Figura 25) Sejam A e B duas octrees e

queremos classificar a octree A As duas octrees (AB) satildeo percorridas partindo

da raiz

Para cada noacute de A existem quatro casos (Figura 26) Para testar estas

situaccedilotildees os boxes dos noacutes satildeo aumentados de rmax o raio do maior surfel do

modelo Isto eacute feito para compensar o fato de que o surfel natildeo eacute apenas um

ponto mas sim considerado como um disco

Os quatro casos satildeo

Se o noacute de A natildeo intersecta B entatildeo todos os surfels deste noacute satildeo

classificados como fora

Se o noacute de A intersecta apenas noacutes de B que estatildeo fora do modelo

todos os surfels deste noacute satildeo fora

Se o noacute de A intersecta apenas noacutes de B que estatildeo dentro do modelo

todos os surfels deste noacute satildeo dentro

Melhorias Propostas 54

Se o noacute de A intersecta noacutes de B que estatildeo dentro e tambeacutem noacutes de B

que estatildeo fora testa-se se este noacute de A eacute ou natildeo folha Se natildeo for folha

percorre-se os filhos deste noacute de A ateacute encontrar um noacute folha cheio que

intersecta B Para cada surfel sa deste noacute folha de A encontra-se o surfel de B

mais proacuteximo e classifica-se a coordenada de sa da forma apresentada na seccedilatildeo

5111 Seja sb o surfel usado na classificaccedilatildeo de sa Se os discos de sb e sa

se intersectam sa eacute classificado como ldquointerseccedilatildeordquo

(a) (b)

(c) (d)

Figura 26- a modelos natildeo se intersectam b modelo intersecta noacutes fora c modelo intersecta apenas noacutes dentro d modelo intersecta noacutes dentro e noacutes fora

513 Criaccedilatildeo do modelo resultado

Um novo modelo eacute criado com os seguintes surfels (de acordo com a

operaccedilatildeo booleana escolhida pelo usuaacuterio - veja Regra 1 da seccedilatildeo 41)

Uniatildeo - surfels de A que estatildeo fora de B + surfels de B que estatildeo fora de A

Melhorias Propostas 55

Interseccedilatildeo - surfels de A que estatildeo dentro de B + surfels de B que estatildeo

dentro de A

Diferenccedila A-B - surfels de A que estatildeo fora de B + surfels de B que estatildeo

dentro de A (com orientaccedilatildeo invertida)

Como natildeo foi implementado tratamento especial algum de interseccedilatildeo para

o nosso plugin os surfels que se intersectam satildeo mantidos no modelo resultado

final sem modificaccedilotildees

Descrito o algoritmo vejamos a seguir a sua implementaccedilatildeo

52 Implementaccedilatildeo

Este algoritmo foi implementado na forma de um plugin para o software

PointShop 3D [11] Este plugin foi desenvolvido na linguagem C e no sistema

operacional Windows

A escolha deste tipo de implementaccedilatildeo permitiu-nos usar o software

PointShop para os testes do algoritmo Estes testes foram feitos com os modelos

disponibilizados para o PointShop [11] Nesta seccedilatildeo apresentaremos o software

PointShop e as principais estruturas de dados usadas em nosso plugin

O Pointshop eacute um software aberto com seu coacutedigo disponiacutevel e preparado

para trabalhar com plugins Eacute um software de ediccedilatildeo de modelos 3D por pontos

Ele permite aleacutem de visualizar o modelo alterar as suas caracteriacutesticas como

cor brilho e fazer mapeamento de textura iluminaccedilatildeo filtragem (Figura 27)

Melhorias Propostas 56

Figura 27-Software PointShop 3D com dois modelos carregados na sua cena

Aleacutem disso pode-se criar uma cena com vaacuterios modelos e visualizaacute-los de

qualquer ponto de vista Implementa o virtual trackball para rotacionaacute-los e

transladaacute-los Usa uma iluminaccedilatildeo simples direcional A sua arquitetura eacute

extensiacutevel permite que o usuaacuterio adicione seus proacuteprios componentes ao

sistema Possui trecircs tipos de componentes

ldquoToolsrdquo fornece funcionalidades para ediccedilatildeo interativa de superfiacutecie Satildeo

disponibilizados na ldquotoolbarrdquo

Plugins fornece funcionalidades para processar em um soacute passo

modelos ou partes deles selecionadas Satildeo disponibilizados no menu ldquoPluginsrdquo

Renderes fornece funcionalidades de display para os modelos

Para esta dissertaccedilatildeo foi escolhida a construccedilatildeo do componente Plugin

por adequar-se agrave nossa proposta e ser a mais simples de ser construiacuteda O

PointShop [11] jaacute conteacutem uma tool que executa operaccedilotildees booleanas e

deformaccedilatildeo free-form sobre os modelos carregados na cena usando o meacutetodo

de Pauly [3] apresentado no capiacutetulo 4 O nosso plugin Operaccedilotildees Booleanas

implementa o algoritmo descrito na seccedilatildeo anterior baseado na proposta de

Melhorias Propostas 57

Adams e Dutreacute [2] Uma comparaccedilatildeo entre o nosso plugin e a tool de Pauly [3] eacute

feita no capiacutetulo 6

Figura 28-Menu do PointShop com o plugin e as opccedilotildees para operaccedilotildees booleanas

Para se executar o plugin o usuaacuterio precisa carregar dois modelos na

cena do PointShop acionar o plugin informando a operaccedilatildeo que seraacute executada

O plugin executaraacute o algoritmo acima proposto e carregaraacute o resultado na cena

do Pointshop retirando os modelos anteriores

521 Estruturas de Dados

Como vimos o software PointShop [11] trabalha com modelos por pontos

Um modelo deste software descrito na seccedilatildeo 42 conteacutem todas as informaccedilotildees

que o algoritmo proposto em Bart [2] necessita Abaixo relacionamos as

Melhorias Propostas 58

principais estruturas de dados do PointShop usadas no plugin e as principais

estruturas de dados do nosso plugin

As principais classes do PointShop usadas no plugin satildeo

Classe Scene

Classe Objects

Classe SurfelColections

Classe Surfel

Classe StatusBar

Classe Transformer

A hierarquia de dados eacute a seguinte a Scene conteacutem vaacuterios Objects os

quais conteacutem SurfelColections Cada SurfelColections conteacutem Surfels que

suportam uma ou mais propriedades tais como cor difusa cor especular

Classe Scene Classe que representa uma cena que conteacutem modelos

Classe Object Um modelo eacute representado pela classe Object que

conteacutem uma SurfelCollection e as matrizes de transformaccedilatildeo para rotaccedilatildeo

escala e translaccedilatildeo Cada Object eacute identificado pelo seu nome que eacute uacutenico na

Scene O meacutetodo getUniqueName retorna um nome uacutenico Cada Object tem sua

proacutepria matriz de transformaccedilatildeo que pode ser modificada com setRotation

rotate setPosition translate setScale e scale Objects podem ser copiados com

copy Objects consiste em um conjunto de surfels os quais podem ser

recuperados pela getSurfelCollection O Object pode ser ativado com

setActiveObject e recuperado com getActiveObject

Objects podem ser adicionados ou removidos com addObject e

removeObject Os Objects podem ser obtidos pela getFirstObject e

getNextObject

Classe SurfelCollection representa o conjunto de surfels de um modelo

Cada surfelcollection consiste em um conjunto de surfels (SurfelInterface) de

tamanho obtido por getNofSurfels Os surfels podem ser recuperados com

getFirstSurfel getCurrentSurfel e getNextSurfel

A SurfelCollection conteacutem um PropertyDescriptor e uma SurfelList

A SurfelList eacute uma lista duplamente encadeada de surfels Possui os

atributos firstSurfel lastSurfel currentSurfel que satildeo ponteiros para uma

SurfelInterface nSurfels que eacute o nuacutemero de Surfels

A SurfelInterface define a API para os surfels que satildeo os menores

elementos que compotildeem um Object Podem ser considerados como pontos com

uma normal que define a orientaccedilatildeo do ciacuterculo (ou elipse) que seraacute desenhado

Melhorias Propostas 59

tatildeo logo o surfel seja renderizado Tem como atributos dois ponteiros (next e

prev) para SurfelInterface

PropertyDescriptor consiste em ateacute 32 valores descrevendo quais as

propriedades a SurfelInterface suporta

Classe Surfel classe que representa o surfel

Classe StatusBar classe que imprime mensagens na tela Os plugins

podem mandar mensagens para o usuaacuterio pela StatusBar

Mensagens texto podem ser impressas com showMessage O progresso

de uma operaccedilatildeo pode ser indicado com setProgress ou resetProgress

Classe Transformer representa a transformaccedilatildeo entre sistemas de

coordenadas Esta classe fornece meacutetodos para transformar pontos e vetores

entre os diferentes sistemas de coordenadas do Pointshop

A seguir apresentamos as principais estruturas de dados do plugin

Operaccedilotildees Booleanas

As principais estruturas de dados do plugin satildeo boundingbox tree no

lista_surfel surfel

Boundingbox conteacutem dois pontos 3D que definem uma caixa que conteacutem

o modelo um ponto com menores coordenadas xy e z e outro ponto com

maiores xyz

Tree representa a octree do modelo Cada registro conteacutem um ponteiro

para um noacute e oito ponteiros para as 8 octrees filhas

No representa um noacute da octree Conteacutem os seguintes dados

- localizaccedilatildeo do noacute que eacute o canto inferior esquerdo do noacute

- lista_surfel (preenchida apenas para noacutes folha cheios)

- quantidade de surfels do noacute

- classificaccedilatildeo do noacute como dentro fora ou contorno

- classificaccedilatildeo do noacute em relaccedilatildeo a outro modelo

- indica se o noacute eacute folha ou natildeo

- vetor que eacute a meacutedia das normais dos surfels do noacute

- ponto que eacute a meacutedia das localizaccedilotildees dos surfels do noacute

- surfel que tem (entre todos os surfels do noacute) o maior produto interno

entre a sua normal e a normal meacutedia

- surfel que tem (entre todos os surfels do noacute) o menor produto interno

entre a sua normal e a normal meacutedia

- produto interno maacuteximo e miacutenimo entre as normais dos surfels do noacute e a

normal meacutedia deste noacute

Melhorias Propostas 60

- indica se o noacute conteacutem surfels com normais em sentido oposto (produto

interno entre elas eacute menor que zero)

- classificaccedilatildeo dos oito cantos do noacute

lista_surfels lista em que cada registro conteacutem um apontador para um

surfel e um apontador para o proacuteximo registro

surfel representa o surfel da octree Conteacutem a classificaccedilatildeo em relaccedilatildeo a

outro modelo e um ponteiro para o surfel do Poinshop

Resultados 61

6 Resultados

Neste capiacutetulo apresentamos os testes realizados com o plugin para o

PointShop implementado para esta dissertaccedilatildeo a comparaccedilatildeo deste plugin com

o plugin de Pauly [3] e a comparaccedilatildeo entre o meacutetodo de Adams e Dutreacute [2] e o

meacutetodo de Pauly [3]

61 Testes

Os testes foram feitos em um PC x86 Family 6 261600 KB de RAM sem

placa graacutefica sistema operacional Windows 2000 O plugin foi implementado na

linguagem C

Os modelos usados para os testes satildeo modelos disponibilizados no

PointShop [11] Vale lembrar que o meacutetodo implementado em nosso plugin eacute

restrito a modelos soacutelidos e portanto foram usados apenas estes modelos

soacutelidos para os testes

O modelo na Figura 29 que eacute um dos modelos disponibilizados no

PointShop [11] foi usado para mostrar o resultado das operaccedilotildees realizadas

pelo plugin implementado nesta dissertaccedilatildeo O modelo Igea eacute um modelo soacutelido

que conteacutem 134345 surfels

Resultados 62

Figura 29-Modelo do PointShop Igea

Para realizar as operaccedilotildees este modelo foi carregado na cena do

PointShop duas vezes e um deles colorido de vermelho As Figuras 30 31 32

mostram o resultado da operaccedilatildeo de uniatildeo interseccedilatildeo e diferenccedila

respectivamente Os nuacutemeros de surfels dos modelos resultantes satildeo mostrados

na Tabela 2

Resultados 63

Figura 30-Resultado da uniatildeo de duas Igeas

Figura 31-Resultado da interseccedilatildeo de duas Igeas

Resultados 64

Figura 32-Resultado da diferenccedila entre duas Igeas

Tabela 2-Nuacutemero de surfels dos modelos resultantes

Observamos que o nuacutemero de surfels dos modelos resultantes estaacute

coerente com as figuras dos seus modelos

Para avaliar o tempo de processamento das operaccedilotildees foram realizados

vaacuterios testes com o objetivo de obter uma meacutedia dos tempos de realizaccedilatildeo de

cada operaccedilatildeo Tambeacutem foram armazenados os tempos da criaccedilatildeo das duas

octrees e da classificaccedilatildeo de todos os surfels dos dois objetos (como dentro ou

fora do outro modelo) Estes testes foram feitos usando o modelo Igea A meacutedia

dos tempos de processamento foi calculada e os resultados satildeo mostrados na

Tabela 3 Verificamos que o maior tempo gasto eacute para criaccedilatildeo das octrees

Verificamos tambeacutem que este resultado apresentado eacute similar ao resultado

verificado empiricamente com o plugin de Pauly [3] Os tempos gastos para

realizar as operaccedilotildees satildeo similares e o maior tempo gasto no plugin de Pauly

tambeacutem eacute para inicializaccedilatildeo de suas estruturas de dados que incluem a kd-tree

Operaccedilatildeo Nuacutemero de surfels do modelo resultado

Uniatildeo 189715

Interseccedilatildeo 72225

Diferenccedila 134552

Resultados 65

Operaccedilatildeo Criaccedilatildeo das

Octrees (seg)

Classificaccedilatildeo

(seg)

Criaccedilatildeo do

resultado (seg)

Total (seg)

Uniatildeo 39375 1324 18925 7154

Interseccedilatildeo 38585 1585 09547 63982

Diferenccedila 399875 1504 1729 729475

Tabela 3- Meacutedia dos tempos de processamento para as operaccedilotildees com duas Igeas

Com o objetivo de expor melhor os resultados deste trabalho

apresentamos abaixo mais um teste das operaccedilotildees booleanas usando o nosso

plugin Os modelos usados para este segundo teste satildeo o Max Planck e o Male

ambos modelos soacutelidos disponibilizados no PointShop Estes modelos satildeo

mostrados nas figura 33 e 34

O primeiro Max Planck conteacutem 52809 surfels

Figura 33-Modelo do PointShop MaxPlanck

O segundo modelo abaixo Male conteacutem 148138 surfels

Resultados 66

Figura 34-Modelo do PointShop Male

As Figuras 353637 mostram o resultado da operaccedilatildeo de uniatildeo interseccedilatildeo

e diferenccedila respectivamente usando os dois modelos acima Podemos observar

pela figura 35 que o resultado da operaccedilatildeo de diferenccedila neste caso gerou um

modelo resultado com trecircs partes desconexas Os nuacutemeros de surfels de cada

modelo resultado satildeo mostrados na Tabela 5

Figura 35- Resultado da Uniatildeo do modelo Male com MaxPlanck

Resultados 67

Figura 36-Resultado da interseccedilatildeo do modelo Male com o MaxPlanck

Figura 37-Resultado da diferenccedila do modelo Male do modelo MaxPlanck

As meacutedias de tempos de processamento foram calculadas da mesma

forma que o primeiro teste com o modelo Igea acima apresentado Os

resultados satildeo mostrados na Tabela 4 Podemos observar que este teste

Resultados 68

apresenta tempos um pouco menores que o teste com o modelo Igea Isto se

deve ao fato de que o modelo MaxPlanck ser significativamente menor que o

modelo Igea MaxPlanck possui 52809 surfels e Igea conteacutem 134345 surfels

Operaccedilatildeo Criaccedilatildeo das

Octrees (seg)

Classificaccedilatildeo

(seg)

Criaccedilatildeo do

resultado (seg)

Total

(seg)

Uniatildeo 3012 1254 102 5285

Interseccedilatildeo 2985 0901 0861 4747

Diferenccedila 2965 0911 0791 4667

Tabela 4-Tempo de processamento das operaccedilotildees com os modelos MaxPlanck e Male

Operaccedilatildeo Nuacutemero de surfels do resultado

Uniatildeo 126532

Interseccedilatildeo 88414

Diferenccedila 77635

Tabela 5-Nuacutemero de surfels dos modelos resultados das operaccedilotildees com os modelos MaxPlanck e Male

Em seguida apresentaremos uma comparaccedilatildeo entre o nosso plugin e o

plugin de Pauly[3] e tambeacutem uma comparaccedilatildeo entre o meacutetodo de Adams e Dutreacute

[2] e o meacutetodo de Pauly [3]

62 Comparaccedilatildeo entre os dois meacutetodos que realizam operaccedilotildees booleanas

A comparaccedilatildeo entre os meacutetodos de Pauly[3] e de Adams e Dutreacute foi feita

em termos de tempo de processamento e em termos conceituais Em termos de

tempo de processamento comparamos o plugin de Pauly[3] com o nosso plugin

Em termos de tempo de processamento verifica-se empiricamente que os

dois meacutetodos apresentam tempos bastante similares Entretanto o tempo de

processamento do algoritmo aqui implementado ainda pode ser melhorado com

Resultados 69

o uso do meacutetodo TINN [19] que foi proposto em Adams[2] - para otimizar a

pesquisa do surfel mais proacuteximo a um ponto que estaacute localizado na regiatildeo de um

noacute que conteacutem surfels - veja seccedilatildeo 42 O uso deste meacutetodo natildeo foi

implementado para este trabalho e a sua implementaccedilatildeo melhoraria o tempo de

resposta do algoritmo Aleacutem disso o trabalho de Sara F Frisken [12] citado no

capiacutetulo 2 apresenta uma otimizaccedilatildeo no uso de octrees que pode ser

incorporada no algoritmo implementado neste trabalho

Em termos conceituais vamos fazer a comparaccedilatildeo do uso do que

chamamos aqui de Regra 2 do tratamento de interseccedilatildeo e do tratamento de

ldquoarestas vivasrdquo

Como vimos na seccedilatildeo 41 tanto o algoritmo implementado nesta

dissertaccedilatildeo baseado no trabalho de Adams e Dutreacute como o meacutetodo de Pauly

[3] parte do que chamamos aqui de Regra 2 para realizar operaccedilotildees booleanas

com pontos Mas cada um destes meacutetodos daacute um tratamento diferente para o

uso desta regra

O meacutetodo de Pauly usa a Regra 2 para classificaccedilatildeo de cada ponto ou de

cada surfel Para classificar um surfel de B sb como dentro ou fora de A eacute

encontrado o surfel de A sa mais proacuteximo a sb e sb eacute classificado a partir de sa

Para encontrar sa Pauly utiliza uma kd-tree Como esta pesquisa para encontrar

sa eacute cara (mesmo usando uma kd-tree) Pauly utiliza uma esfera que conteacutem

pontos com a mesma classificaccedilatildeo (seccedilatildeo 432) e diminui em 90 este nuacutemero

de pesquisas Pauly utiliza tambeacutem a representaccedilatildeo impliacutecita MLS (Moving Least

Squares) para casos em que a Regra 2 poderia falhar e para tratamento de

interseccedilotildees Entretanto o nuacutemero destes casos em que a Regra 2 poderia falhar

eacute muito pequeno E a representaccedilatildeo MLS natildeo eacute uma estrutura simples de ser

implementada Portanto natildeo encontramos vantagens em usar MLS para estes

casos O meacutetodo de Adams e Dutreacute natildeo trata estes casos e na praacutetica

apresenta resultados bastante satisfatoacuterios como foi mostrado Portanto

consideramos que valeria a pena fazer algum tratamento especial para estes

casos se fosse um procedimento simples Para a execuccedilatildeo do algoritmo de

Pauly o uso de MLS natildeo interfere significativamente porque a construccedilatildeo desta

representaccedilatildeo natildeo eacute feita somente para realizar operaccedilotildees booleanas Os testes

empiacutericos que fizemos com o algoritmo de Pauly natildeo incluem a construccedilatildeo desta

representaccedilatildeo

Aparentemente os dois algoritmos satildeo bastante parecidos um usa octrees

e o outro usa kd-tree As duas estruturas de dados satildeo simples e otimizam a

classificaccedilatildeo dos surfels de um modelo como dentro ou fora do outro modelo

Resultados 70

Mas existe uma diferenccedila conceitual entre dois que merece ser destacada O

algoritmo aqui implementado usa a Regra 2 para classificaccedilatildeo dos noacutes de uma

octree e armazena esta octree classificada (ver capiacutetulo 5) Assim na maioria dos

casos natildeo seraacute necessaacuterio encontrar o surfel mais proacuteximo para classificar um

ponto (ou um surfel) como fora ou dentro de um modelo Caso o ponto esteja em

uma aacuterea da octree classificada ele teraacute a classificaccedilatildeo dada agravequela aacuterea A

pesquisa ao surfel mais proacuteximo seraacute feita apenas nos casos em que o ponto a

ser classificado estaacute localizado entre os planos que subdividem um noacute cheio

O uso desta octree classificada levanta uma questatildeo que natildeo foi citada no

trabalho de Adams e Dutreacute que eacute a proximidade desta estrutura (armazenada)

de octree classificada com uma representaccedilatildeo volumeacutetrica do objeto Sendo

assim esta estrutura pode ser aproveitada para outras funccedilotildees aleacutem da

classificaccedilatildeo dos surfels Por exemplo podemos ter uma aproximaccedilatildeo do

volume de uma cena somando os volumes aproximados dos modelos que a

compotildeem Como o enfoque deste trabalho eacute operaccedilatildeo booleana natildeo vamos nos

aprofundar nesta questatildeo

Outra importante diferenccedila entre os dois trabalhos que jaacute foi explicada na

seccedilatildeo 432 eacute que o meacutetodo de Pauly aplica-se a modelos soacutelidos ou natildeo

soacutelidos enquanto que o meacutetodo de Adams e Dutreacute aplica-se somente a modelos

soacutelidos

Quanto ao tratamento de interseccedilatildeo em termos de visualizaccedilatildeo todos os

dois resolvem bem o problema O tratamento de interseccedilatildeo nos dois trabalhos

tambeacutem resolve o problema da validade da Regra 2 (ver seccedilatildeo 44) Entretanto

o tratamento de Adams e Dutreacute natildeo depende da renderizaccedilatildeo sendo portanto

mais portaacutevel Aleacutem disso uma desvantagem do meacutetodo de Pauly eacute o uso da

representaccedilatildeo impliacutecita MLS (ldquoMoving Least Squaresrdquo) do objeto para obter os

pontos exatamente na curva de interseccedilatildeo Esta representaccedilatildeo torna o

tratamento de interseccedilatildeo mais complexo e a vantagem apresentada natildeo eacute tatildeo

significativa para este tratamento de interseccedilatildeo

Conclusatildeo 71

7 Conclusatildeo

Concluiacutemos entatildeo que as escolhas de Adams e Dutreacute por usar uma

octree classificada e pelo tratamento dado agrave interseccedilatildeo satildeo mais abrangentes

que a escolha de Pauly E consideramos que quanto mais abrangente for uma

escolha conceitual mais resultados poderemos tirar dela No caso de Adams e

Dutreacute eles estendem o problema de classificar um ponto para classificar todo o

modelo Como foi citado ele quase fornece uma representaccedilatildeo volumeacutetrica do

modelo Esta aproximada representaccedilatildeo volumeacutetrica pode nos fornecer outras

informaccedilotildees como por exemplo o volume aproximado do modelo

Aleacutem disso o uso da representaccedilatildeo impliacutecita MLS no meacutetodo de Pauly cria

uma complexidade a mais para o meacutetodo sem apresentar vantagens para a

realizaccedilatildeo de operaccedilotildees booleanas que eacute o nosso enfoque

Logo podemos dizer que o meacutetodo de Adams e Dutreacute apresenta as

seguintes vantagens em relaccedilatildeo ao de Pauly

- a estrutura de octree classificada aleacutem de ser usada para classificaccedilatildeo

fornece informaccedilotildees adicionais como volume aproximado do objeto

- o tempo de processamento no meacutetodo de Adams e Dutreacute tende a ser

melhor que no meacutetodo de Pauly se implementadas as melhorias acima citadas e

se colocaacutessemos em consideraccedilatildeo o uso da representaccedilatildeo impliacutecita MLS

(Moving Least Squares)

- o tratamento de interseccedilatildeo de Adams e Dutreacute apresenta a vantagem da

portabilidade ou seja iraacute funcionar independente do algoritmo de renderizaccedilatildeo

utilizado

E as vantagens do meacutetodo de Pauly em relaccedilatildeo ao de Adams e Dutreacute

- a colocaccedilatildeo de surfels exatamente na curva de interseccedilatildeo

- a possibilidade de trabalhar com modelos soacutelidos ou natildeo soacutelidos

E finalizando concluiacutemos que o estudo relatado nesta dissertaccedilatildeo foi

importante por

- fornecer um breve estudo sobre modelagem por pontos uma nova e

promissora aacuterea dentro da computaccedilatildeo graacutefica

Conclusatildeo 72

- por apresentar uma avaliaccedilatildeo dos dois trabalhos existentes sobre

operaccedilotildees booleanas com pontos encontrando as vantagens de cada um

e levantando questotildees que natildeo tinham sido citadas nos trabalhos originais

- por propor e implementar melhorias ao trabalho de Adams e Dutreacute

71 Trabalhos Futuros

Nossa implementaccedilatildeo pode ser ainda evoluiacuteda com as propostas

apresentadas na seccedilatildeo 62 Como observamos o tempo de processamento do

algoritmo aqui implementado ainda pode ser melhorado com o uso do meacutetodo

TINN [19] - que foi proposto em Adams[2] - para otimizar a pesquisa do surfel

mais proacuteximo a um ponto que estaacute localizado na regiatildeo de um noacute que conteacutem

surfels Aleacutem disso o trabalho Simple and Efficient Trasversal Methods for

Quadtrees and Octrees de Sara F Frisken [12] citado no capiacutetulo 2 apresenta

uma otimizaccedilatildeo no uso de octrees Outra proposta para melhorar o tempo de

processamento do algoritmo aqui implementado eacute usar a forma de trabalhar com

octrees apresentada neste trabalho

O trabalho de Adams e Dutreacute [2] eacute aplicado apenas a objetos soacutelidos O

nosso plugin portanto aplica-se somente a este tipo de objeto Jaacute o trabalho de

Pauly[3] eacute aplicado tambeacutem a modelos natildeo soacutelidos Apresentamos como

proposta a um trabalho futuro a extensatildeo do algoritmo aqui implementado para

modelos natildeo soacutelidos O surfel pode conter uma informaccedilatildeo adicional que indica

se ele estaacute delimitando um volume ou natildeo Assim pode-se ter um modelo com

ldquopartes soacutelidasrdquo e ldquopartes natildeo soacutelidasrdquo Por exemplo a uniatildeo de um plano com

uma esfera poderia resultar numa esfera com ldquoabasrdquo (seriam as partes do plano

que estariam fora da esfera) O modelo resultado teria uma parte correspondente

a um espaccedilo 3D (esfera) e outra parte que seria uma superfiacutecie 2D posicionada

no espaccedilo 3D sem delimitar algum volume (abas)

Muitos trabalhos podem ser desenvolvidos aplicando-se o modelo por

pontos em animaccedilatildeo jogos visualizaccedilatildeo de terrenos criaccedilatildeo de protoacutetipos etc

considerando-se a eficiecircncia e simplicidade do modelo E mais especificamente

as operaccedilotildees booleanas com pontos podem ser aplicadas para criaccedilatildeo de

cenaacuterios testes de colisotildees e nestes casos a representaccedilatildeo usando octrees

pode ser mais explorada considerando-se o seu potencial de representaccedilatildeo

volumeacutetrica de um objeto

Referecircncias Bibliograacuteficas 73

8 Referecircncias Bibliograacuteficas

[1] MAumlNTYLAuml M An Introduction to Solid Modeling Computer Science Press 1988

[2] ADAMS B DUTREacute P Interactive Boolean Operations on Surfel-

Bounded Solids Proceedings of SIGGRAPH 2003 San Diego USA 2003

[3] PAULY M KEISER R KOBBELT L GROSS M Shape Modeling

with Point-Sampled Geometry SIGGRAPH 2003 Computer Graphics

Proceedings Annual Conference Series ACM Press ACM SIGGRAPH 2003

[4] LEVOY M WHITTED T The Use of Points as Display Primitives

Technical Report TR 85-022 The University of North Carolina at Chapel Hill

Department of Computer Science 1985

[5] PFISTER H ZWICKER M VAN BAAR J GROSS M 2000 Surfels

Surface Elements as Rendering Primitives SIGGRAPH 2000 pp 335ndash342 New

Orleans LA July 23-28 2000

[6] ZWICKER M PFISTER H VAN BAAR J GROSS M Surface

Splatting SIGGRAPH 2001

[7] PAULY M KOBBELT L GROSS M Multiresolution Modeling of

Point-Sampled Geometry CS Techinical Report 378 September 16 2002

[8] CURLESS B New Methods for Surface Reconstruction from Range Images PhD thesis Stanford University 1997

[9] RUSINKIEWICZ S Real-time Acquisition and Rendering of Large 3D Models PhD thesis Stanford University 2001

Referecircncias Bibliograacuteficas 74

[10] AMENTA N BERN M KAMVYSSELIS M A new Voronoi-Based

Surface Reconstruction Algorithm SIGGRAPH 98 Conference proceedings pp

415-421 New York 1998

[11] ZWICKER M PAULY M KNOLL O GROSS M Pointshop 3D an

Interactive System for Point-Based Surface Editing Proceedings of SIGGRAPH 2002 San Antonio TX July 2002

[12] FRISKEN S PERRY R Simple and Efficient Traversal Methods for

Quadtrees and Octrees Journal of Graphics Tools Vol 7 Issue 3 May 2003

[13] CORREcircA W T OLIVEIRA M M Silva C T Wang J

Modeling and Rendering of Real Environments

Revista de Informaacutetica Teoacuterica e Aplicada (Brazilian Journal of Theoretic and Applied Computing) 9(2)127-156 2002

[14] DAVIS J MARSCHNER S GARR M LEVOY M Filling Holes in

Complex Surfaces Using Volumetric Diffusion First International Symposium on 3D Data Processing Visualization Transmission June 2002

[15] RAumlSAumlNEN J Surface Splatting Theory Extensions and Implementation Masterrsquos Thesis Dept of Computer Science Helsinki

University of Technology May 28 2002

[16] PAULY M Point Primitives for Interactive Modeling and Processing of 3D Geometry PhD thesis Federal Institute of Technology (ETH)

of Zurich 2003

[17] HOPPE H DEROSE T DUCHAMP T MCDONALD J

STUELZLE W Surface Reconstruction from Unorganized Points Computer Graphics 26(2)71ndash78 July 1992

[18] ALEXA M BEHR J COHEN-OR D FLEISHMAN S LEVIN D

SILVA C T Point Set Surfaces IEEE Visualization 2001 pp 21ndash28 October

2001

Referecircncias Bibliograacuteficas 75

[19] GREENSPAN M GODIN G TALBOT J Acceleration of Binning

Nearest Neighbor Methods Proceedings of Vision Interface 2000 pp 337-

344

[20] MENCL R Reconstruction of Surfaces from Unorganized Three-Dimensional Point Clouds Dissertation Dortmund Univ 2001

[21] KRIVANEK J Representing and Rendering Surfaces With Points

httpciteseernjneccomkrivanek03representinghtml Acesso em 30 jul

2003

[22] KRISTJANSSON ET AL Approximate Boolean Operations on Free-

form Solids Proceedings of SIGGRAPH 01 2001

Melhorias Propostas 52

5111 Classificaccedilatildeo de um ponto de um noacute cheio

Figura 24 [2] A normal n eacute a normal meacutedia e os surfels s1 e s2 juntamente com a normal

n definem as retas que dividem o noacute O ponto a estaacute fora do modelo e o ponto b estaacute

dentro do modelo

Para um ponto localizado dentro do noacute faz-se o seguinte teste se o noacute foi

dividido testa-se de acordo com a divisatildeo do noacute se o ponto estaacute na parte do noacute

que estaacute dentro do modelo ele eacute classificado como ldquodentrordquo se o ponto estaacute na

parte que estaacute fora do modelo ele eacute classificado como ldquoforardquo (Figura 24) se o

ponto estaacute na parte que conteacutem os surfels encontra-se o surfel s pertencente ao

noacute mais proacuteximo do ponto e o classifica de acordo com s seja ns a normal em s

cs a coordenada de s cp a coordenada do ponto Se (cp - cs )٠ ns gt 0 o ponto

seraacute classificado como ldquoforardquo Senatildeo seraacute classificado como ldquodentrordquo

Se o noacute natildeo foi dividido em planos esta classificaccedilatildeo a partir do surfel

mais proacuteximo seraacute sempre feita

512 Teste DentroFora

Melhorias Propostas 53

Figura 25-Duas circunferecircncias e suas quadtrees correspondentes

O Teste DentroFora classifica os surfels de um modelo como dentro ou

fora de outro modelo ou na sua interseccedilatildeo Este teste foi aqui implementado

exatamente como foi proposto em Adams e Dutreacute [2] exceto que natildeo foi

implementado o meacutetodo TINN - Triangle Inequality Nearest Neighbour [19]

Cada octree eacute percorrida verificando-se se os seus noacutes ou surfels estatildeo dentro

fora ou no contorno do outro modelo (Figura 25) Sejam A e B duas octrees e

queremos classificar a octree A As duas octrees (AB) satildeo percorridas partindo

da raiz

Para cada noacute de A existem quatro casos (Figura 26) Para testar estas

situaccedilotildees os boxes dos noacutes satildeo aumentados de rmax o raio do maior surfel do

modelo Isto eacute feito para compensar o fato de que o surfel natildeo eacute apenas um

ponto mas sim considerado como um disco

Os quatro casos satildeo

Se o noacute de A natildeo intersecta B entatildeo todos os surfels deste noacute satildeo

classificados como fora

Se o noacute de A intersecta apenas noacutes de B que estatildeo fora do modelo

todos os surfels deste noacute satildeo fora

Se o noacute de A intersecta apenas noacutes de B que estatildeo dentro do modelo

todos os surfels deste noacute satildeo dentro

Melhorias Propostas 54

Se o noacute de A intersecta noacutes de B que estatildeo dentro e tambeacutem noacutes de B

que estatildeo fora testa-se se este noacute de A eacute ou natildeo folha Se natildeo for folha

percorre-se os filhos deste noacute de A ateacute encontrar um noacute folha cheio que

intersecta B Para cada surfel sa deste noacute folha de A encontra-se o surfel de B

mais proacuteximo e classifica-se a coordenada de sa da forma apresentada na seccedilatildeo

5111 Seja sb o surfel usado na classificaccedilatildeo de sa Se os discos de sb e sa

se intersectam sa eacute classificado como ldquointerseccedilatildeordquo

(a) (b)

(c) (d)

Figura 26- a modelos natildeo se intersectam b modelo intersecta noacutes fora c modelo intersecta apenas noacutes dentro d modelo intersecta noacutes dentro e noacutes fora

513 Criaccedilatildeo do modelo resultado

Um novo modelo eacute criado com os seguintes surfels (de acordo com a

operaccedilatildeo booleana escolhida pelo usuaacuterio - veja Regra 1 da seccedilatildeo 41)

Uniatildeo - surfels de A que estatildeo fora de B + surfels de B que estatildeo fora de A

Melhorias Propostas 55

Interseccedilatildeo - surfels de A que estatildeo dentro de B + surfels de B que estatildeo

dentro de A

Diferenccedila A-B - surfels de A que estatildeo fora de B + surfels de B que estatildeo

dentro de A (com orientaccedilatildeo invertida)

Como natildeo foi implementado tratamento especial algum de interseccedilatildeo para

o nosso plugin os surfels que se intersectam satildeo mantidos no modelo resultado

final sem modificaccedilotildees

Descrito o algoritmo vejamos a seguir a sua implementaccedilatildeo

52 Implementaccedilatildeo

Este algoritmo foi implementado na forma de um plugin para o software

PointShop 3D [11] Este plugin foi desenvolvido na linguagem C e no sistema

operacional Windows

A escolha deste tipo de implementaccedilatildeo permitiu-nos usar o software

PointShop para os testes do algoritmo Estes testes foram feitos com os modelos

disponibilizados para o PointShop [11] Nesta seccedilatildeo apresentaremos o software

PointShop e as principais estruturas de dados usadas em nosso plugin

O Pointshop eacute um software aberto com seu coacutedigo disponiacutevel e preparado

para trabalhar com plugins Eacute um software de ediccedilatildeo de modelos 3D por pontos

Ele permite aleacutem de visualizar o modelo alterar as suas caracteriacutesticas como

cor brilho e fazer mapeamento de textura iluminaccedilatildeo filtragem (Figura 27)

Melhorias Propostas 56

Figura 27-Software PointShop 3D com dois modelos carregados na sua cena

Aleacutem disso pode-se criar uma cena com vaacuterios modelos e visualizaacute-los de

qualquer ponto de vista Implementa o virtual trackball para rotacionaacute-los e

transladaacute-los Usa uma iluminaccedilatildeo simples direcional A sua arquitetura eacute

extensiacutevel permite que o usuaacuterio adicione seus proacuteprios componentes ao

sistema Possui trecircs tipos de componentes

ldquoToolsrdquo fornece funcionalidades para ediccedilatildeo interativa de superfiacutecie Satildeo

disponibilizados na ldquotoolbarrdquo

Plugins fornece funcionalidades para processar em um soacute passo

modelos ou partes deles selecionadas Satildeo disponibilizados no menu ldquoPluginsrdquo

Renderes fornece funcionalidades de display para os modelos

Para esta dissertaccedilatildeo foi escolhida a construccedilatildeo do componente Plugin

por adequar-se agrave nossa proposta e ser a mais simples de ser construiacuteda O

PointShop [11] jaacute conteacutem uma tool que executa operaccedilotildees booleanas e

deformaccedilatildeo free-form sobre os modelos carregados na cena usando o meacutetodo

de Pauly [3] apresentado no capiacutetulo 4 O nosso plugin Operaccedilotildees Booleanas

implementa o algoritmo descrito na seccedilatildeo anterior baseado na proposta de

Melhorias Propostas 57

Adams e Dutreacute [2] Uma comparaccedilatildeo entre o nosso plugin e a tool de Pauly [3] eacute

feita no capiacutetulo 6

Figura 28-Menu do PointShop com o plugin e as opccedilotildees para operaccedilotildees booleanas

Para se executar o plugin o usuaacuterio precisa carregar dois modelos na

cena do PointShop acionar o plugin informando a operaccedilatildeo que seraacute executada

O plugin executaraacute o algoritmo acima proposto e carregaraacute o resultado na cena

do Pointshop retirando os modelos anteriores

521 Estruturas de Dados

Como vimos o software PointShop [11] trabalha com modelos por pontos

Um modelo deste software descrito na seccedilatildeo 42 conteacutem todas as informaccedilotildees

que o algoritmo proposto em Bart [2] necessita Abaixo relacionamos as

Melhorias Propostas 58

principais estruturas de dados do PointShop usadas no plugin e as principais

estruturas de dados do nosso plugin

As principais classes do PointShop usadas no plugin satildeo

Classe Scene

Classe Objects

Classe SurfelColections

Classe Surfel

Classe StatusBar

Classe Transformer

A hierarquia de dados eacute a seguinte a Scene conteacutem vaacuterios Objects os

quais conteacutem SurfelColections Cada SurfelColections conteacutem Surfels que

suportam uma ou mais propriedades tais como cor difusa cor especular

Classe Scene Classe que representa uma cena que conteacutem modelos

Classe Object Um modelo eacute representado pela classe Object que

conteacutem uma SurfelCollection e as matrizes de transformaccedilatildeo para rotaccedilatildeo

escala e translaccedilatildeo Cada Object eacute identificado pelo seu nome que eacute uacutenico na

Scene O meacutetodo getUniqueName retorna um nome uacutenico Cada Object tem sua

proacutepria matriz de transformaccedilatildeo que pode ser modificada com setRotation

rotate setPosition translate setScale e scale Objects podem ser copiados com

copy Objects consiste em um conjunto de surfels os quais podem ser

recuperados pela getSurfelCollection O Object pode ser ativado com

setActiveObject e recuperado com getActiveObject

Objects podem ser adicionados ou removidos com addObject e

removeObject Os Objects podem ser obtidos pela getFirstObject e

getNextObject

Classe SurfelCollection representa o conjunto de surfels de um modelo

Cada surfelcollection consiste em um conjunto de surfels (SurfelInterface) de

tamanho obtido por getNofSurfels Os surfels podem ser recuperados com

getFirstSurfel getCurrentSurfel e getNextSurfel

A SurfelCollection conteacutem um PropertyDescriptor e uma SurfelList

A SurfelList eacute uma lista duplamente encadeada de surfels Possui os

atributos firstSurfel lastSurfel currentSurfel que satildeo ponteiros para uma

SurfelInterface nSurfels que eacute o nuacutemero de Surfels

A SurfelInterface define a API para os surfels que satildeo os menores

elementos que compotildeem um Object Podem ser considerados como pontos com

uma normal que define a orientaccedilatildeo do ciacuterculo (ou elipse) que seraacute desenhado

Melhorias Propostas 59

tatildeo logo o surfel seja renderizado Tem como atributos dois ponteiros (next e

prev) para SurfelInterface

PropertyDescriptor consiste em ateacute 32 valores descrevendo quais as

propriedades a SurfelInterface suporta

Classe Surfel classe que representa o surfel

Classe StatusBar classe que imprime mensagens na tela Os plugins

podem mandar mensagens para o usuaacuterio pela StatusBar

Mensagens texto podem ser impressas com showMessage O progresso

de uma operaccedilatildeo pode ser indicado com setProgress ou resetProgress

Classe Transformer representa a transformaccedilatildeo entre sistemas de

coordenadas Esta classe fornece meacutetodos para transformar pontos e vetores

entre os diferentes sistemas de coordenadas do Pointshop

A seguir apresentamos as principais estruturas de dados do plugin

Operaccedilotildees Booleanas

As principais estruturas de dados do plugin satildeo boundingbox tree no

lista_surfel surfel

Boundingbox conteacutem dois pontos 3D que definem uma caixa que conteacutem

o modelo um ponto com menores coordenadas xy e z e outro ponto com

maiores xyz

Tree representa a octree do modelo Cada registro conteacutem um ponteiro

para um noacute e oito ponteiros para as 8 octrees filhas

No representa um noacute da octree Conteacutem os seguintes dados

- localizaccedilatildeo do noacute que eacute o canto inferior esquerdo do noacute

- lista_surfel (preenchida apenas para noacutes folha cheios)

- quantidade de surfels do noacute

- classificaccedilatildeo do noacute como dentro fora ou contorno

- classificaccedilatildeo do noacute em relaccedilatildeo a outro modelo

- indica se o noacute eacute folha ou natildeo

- vetor que eacute a meacutedia das normais dos surfels do noacute

- ponto que eacute a meacutedia das localizaccedilotildees dos surfels do noacute

- surfel que tem (entre todos os surfels do noacute) o maior produto interno

entre a sua normal e a normal meacutedia

- surfel que tem (entre todos os surfels do noacute) o menor produto interno

entre a sua normal e a normal meacutedia

- produto interno maacuteximo e miacutenimo entre as normais dos surfels do noacute e a

normal meacutedia deste noacute

Melhorias Propostas 60

- indica se o noacute conteacutem surfels com normais em sentido oposto (produto

interno entre elas eacute menor que zero)

- classificaccedilatildeo dos oito cantos do noacute

lista_surfels lista em que cada registro conteacutem um apontador para um

surfel e um apontador para o proacuteximo registro

surfel representa o surfel da octree Conteacutem a classificaccedilatildeo em relaccedilatildeo a

outro modelo e um ponteiro para o surfel do Poinshop

Resultados 61

6 Resultados

Neste capiacutetulo apresentamos os testes realizados com o plugin para o

PointShop implementado para esta dissertaccedilatildeo a comparaccedilatildeo deste plugin com

o plugin de Pauly [3] e a comparaccedilatildeo entre o meacutetodo de Adams e Dutreacute [2] e o

meacutetodo de Pauly [3]

61 Testes

Os testes foram feitos em um PC x86 Family 6 261600 KB de RAM sem

placa graacutefica sistema operacional Windows 2000 O plugin foi implementado na

linguagem C

Os modelos usados para os testes satildeo modelos disponibilizados no

PointShop [11] Vale lembrar que o meacutetodo implementado em nosso plugin eacute

restrito a modelos soacutelidos e portanto foram usados apenas estes modelos

soacutelidos para os testes

O modelo na Figura 29 que eacute um dos modelos disponibilizados no

PointShop [11] foi usado para mostrar o resultado das operaccedilotildees realizadas

pelo plugin implementado nesta dissertaccedilatildeo O modelo Igea eacute um modelo soacutelido

que conteacutem 134345 surfels

Resultados 62

Figura 29-Modelo do PointShop Igea

Para realizar as operaccedilotildees este modelo foi carregado na cena do

PointShop duas vezes e um deles colorido de vermelho As Figuras 30 31 32

mostram o resultado da operaccedilatildeo de uniatildeo interseccedilatildeo e diferenccedila

respectivamente Os nuacutemeros de surfels dos modelos resultantes satildeo mostrados

na Tabela 2

Resultados 63

Figura 30-Resultado da uniatildeo de duas Igeas

Figura 31-Resultado da interseccedilatildeo de duas Igeas

Resultados 64

Figura 32-Resultado da diferenccedila entre duas Igeas

Tabela 2-Nuacutemero de surfels dos modelos resultantes

Observamos que o nuacutemero de surfels dos modelos resultantes estaacute

coerente com as figuras dos seus modelos

Para avaliar o tempo de processamento das operaccedilotildees foram realizados

vaacuterios testes com o objetivo de obter uma meacutedia dos tempos de realizaccedilatildeo de

cada operaccedilatildeo Tambeacutem foram armazenados os tempos da criaccedilatildeo das duas

octrees e da classificaccedilatildeo de todos os surfels dos dois objetos (como dentro ou

fora do outro modelo) Estes testes foram feitos usando o modelo Igea A meacutedia

dos tempos de processamento foi calculada e os resultados satildeo mostrados na

Tabela 3 Verificamos que o maior tempo gasto eacute para criaccedilatildeo das octrees

Verificamos tambeacutem que este resultado apresentado eacute similar ao resultado

verificado empiricamente com o plugin de Pauly [3] Os tempos gastos para

realizar as operaccedilotildees satildeo similares e o maior tempo gasto no plugin de Pauly

tambeacutem eacute para inicializaccedilatildeo de suas estruturas de dados que incluem a kd-tree

Operaccedilatildeo Nuacutemero de surfels do modelo resultado

Uniatildeo 189715

Interseccedilatildeo 72225

Diferenccedila 134552

Resultados 65

Operaccedilatildeo Criaccedilatildeo das

Octrees (seg)

Classificaccedilatildeo

(seg)

Criaccedilatildeo do

resultado (seg)

Total (seg)

Uniatildeo 39375 1324 18925 7154

Interseccedilatildeo 38585 1585 09547 63982

Diferenccedila 399875 1504 1729 729475

Tabela 3- Meacutedia dos tempos de processamento para as operaccedilotildees com duas Igeas

Com o objetivo de expor melhor os resultados deste trabalho

apresentamos abaixo mais um teste das operaccedilotildees booleanas usando o nosso

plugin Os modelos usados para este segundo teste satildeo o Max Planck e o Male

ambos modelos soacutelidos disponibilizados no PointShop Estes modelos satildeo

mostrados nas figura 33 e 34

O primeiro Max Planck conteacutem 52809 surfels

Figura 33-Modelo do PointShop MaxPlanck

O segundo modelo abaixo Male conteacutem 148138 surfels

Resultados 66

Figura 34-Modelo do PointShop Male

As Figuras 353637 mostram o resultado da operaccedilatildeo de uniatildeo interseccedilatildeo

e diferenccedila respectivamente usando os dois modelos acima Podemos observar

pela figura 35 que o resultado da operaccedilatildeo de diferenccedila neste caso gerou um

modelo resultado com trecircs partes desconexas Os nuacutemeros de surfels de cada

modelo resultado satildeo mostrados na Tabela 5

Figura 35- Resultado da Uniatildeo do modelo Male com MaxPlanck

Resultados 67

Figura 36-Resultado da interseccedilatildeo do modelo Male com o MaxPlanck

Figura 37-Resultado da diferenccedila do modelo Male do modelo MaxPlanck

As meacutedias de tempos de processamento foram calculadas da mesma

forma que o primeiro teste com o modelo Igea acima apresentado Os

resultados satildeo mostrados na Tabela 4 Podemos observar que este teste

Resultados 68

apresenta tempos um pouco menores que o teste com o modelo Igea Isto se

deve ao fato de que o modelo MaxPlanck ser significativamente menor que o

modelo Igea MaxPlanck possui 52809 surfels e Igea conteacutem 134345 surfels

Operaccedilatildeo Criaccedilatildeo das

Octrees (seg)

Classificaccedilatildeo

(seg)

Criaccedilatildeo do

resultado (seg)

Total

(seg)

Uniatildeo 3012 1254 102 5285

Interseccedilatildeo 2985 0901 0861 4747

Diferenccedila 2965 0911 0791 4667

Tabela 4-Tempo de processamento das operaccedilotildees com os modelos MaxPlanck e Male

Operaccedilatildeo Nuacutemero de surfels do resultado

Uniatildeo 126532

Interseccedilatildeo 88414

Diferenccedila 77635

Tabela 5-Nuacutemero de surfels dos modelos resultados das operaccedilotildees com os modelos MaxPlanck e Male

Em seguida apresentaremos uma comparaccedilatildeo entre o nosso plugin e o

plugin de Pauly[3] e tambeacutem uma comparaccedilatildeo entre o meacutetodo de Adams e Dutreacute

[2] e o meacutetodo de Pauly [3]

62 Comparaccedilatildeo entre os dois meacutetodos que realizam operaccedilotildees booleanas

A comparaccedilatildeo entre os meacutetodos de Pauly[3] e de Adams e Dutreacute foi feita

em termos de tempo de processamento e em termos conceituais Em termos de

tempo de processamento comparamos o plugin de Pauly[3] com o nosso plugin

Em termos de tempo de processamento verifica-se empiricamente que os

dois meacutetodos apresentam tempos bastante similares Entretanto o tempo de

processamento do algoritmo aqui implementado ainda pode ser melhorado com

Resultados 69

o uso do meacutetodo TINN [19] que foi proposto em Adams[2] - para otimizar a

pesquisa do surfel mais proacuteximo a um ponto que estaacute localizado na regiatildeo de um

noacute que conteacutem surfels - veja seccedilatildeo 42 O uso deste meacutetodo natildeo foi

implementado para este trabalho e a sua implementaccedilatildeo melhoraria o tempo de

resposta do algoritmo Aleacutem disso o trabalho de Sara F Frisken [12] citado no

capiacutetulo 2 apresenta uma otimizaccedilatildeo no uso de octrees que pode ser

incorporada no algoritmo implementado neste trabalho

Em termos conceituais vamos fazer a comparaccedilatildeo do uso do que

chamamos aqui de Regra 2 do tratamento de interseccedilatildeo e do tratamento de

ldquoarestas vivasrdquo

Como vimos na seccedilatildeo 41 tanto o algoritmo implementado nesta

dissertaccedilatildeo baseado no trabalho de Adams e Dutreacute como o meacutetodo de Pauly

[3] parte do que chamamos aqui de Regra 2 para realizar operaccedilotildees booleanas

com pontos Mas cada um destes meacutetodos daacute um tratamento diferente para o

uso desta regra

O meacutetodo de Pauly usa a Regra 2 para classificaccedilatildeo de cada ponto ou de

cada surfel Para classificar um surfel de B sb como dentro ou fora de A eacute

encontrado o surfel de A sa mais proacuteximo a sb e sb eacute classificado a partir de sa

Para encontrar sa Pauly utiliza uma kd-tree Como esta pesquisa para encontrar

sa eacute cara (mesmo usando uma kd-tree) Pauly utiliza uma esfera que conteacutem

pontos com a mesma classificaccedilatildeo (seccedilatildeo 432) e diminui em 90 este nuacutemero

de pesquisas Pauly utiliza tambeacutem a representaccedilatildeo impliacutecita MLS (Moving Least

Squares) para casos em que a Regra 2 poderia falhar e para tratamento de

interseccedilotildees Entretanto o nuacutemero destes casos em que a Regra 2 poderia falhar

eacute muito pequeno E a representaccedilatildeo MLS natildeo eacute uma estrutura simples de ser

implementada Portanto natildeo encontramos vantagens em usar MLS para estes

casos O meacutetodo de Adams e Dutreacute natildeo trata estes casos e na praacutetica

apresenta resultados bastante satisfatoacuterios como foi mostrado Portanto

consideramos que valeria a pena fazer algum tratamento especial para estes

casos se fosse um procedimento simples Para a execuccedilatildeo do algoritmo de

Pauly o uso de MLS natildeo interfere significativamente porque a construccedilatildeo desta

representaccedilatildeo natildeo eacute feita somente para realizar operaccedilotildees booleanas Os testes

empiacutericos que fizemos com o algoritmo de Pauly natildeo incluem a construccedilatildeo desta

representaccedilatildeo

Aparentemente os dois algoritmos satildeo bastante parecidos um usa octrees

e o outro usa kd-tree As duas estruturas de dados satildeo simples e otimizam a

classificaccedilatildeo dos surfels de um modelo como dentro ou fora do outro modelo

Resultados 70

Mas existe uma diferenccedila conceitual entre dois que merece ser destacada O

algoritmo aqui implementado usa a Regra 2 para classificaccedilatildeo dos noacutes de uma

octree e armazena esta octree classificada (ver capiacutetulo 5) Assim na maioria dos

casos natildeo seraacute necessaacuterio encontrar o surfel mais proacuteximo para classificar um

ponto (ou um surfel) como fora ou dentro de um modelo Caso o ponto esteja em

uma aacuterea da octree classificada ele teraacute a classificaccedilatildeo dada agravequela aacuterea A

pesquisa ao surfel mais proacuteximo seraacute feita apenas nos casos em que o ponto a

ser classificado estaacute localizado entre os planos que subdividem um noacute cheio

O uso desta octree classificada levanta uma questatildeo que natildeo foi citada no

trabalho de Adams e Dutreacute que eacute a proximidade desta estrutura (armazenada)

de octree classificada com uma representaccedilatildeo volumeacutetrica do objeto Sendo

assim esta estrutura pode ser aproveitada para outras funccedilotildees aleacutem da

classificaccedilatildeo dos surfels Por exemplo podemos ter uma aproximaccedilatildeo do

volume de uma cena somando os volumes aproximados dos modelos que a

compotildeem Como o enfoque deste trabalho eacute operaccedilatildeo booleana natildeo vamos nos

aprofundar nesta questatildeo

Outra importante diferenccedila entre os dois trabalhos que jaacute foi explicada na

seccedilatildeo 432 eacute que o meacutetodo de Pauly aplica-se a modelos soacutelidos ou natildeo

soacutelidos enquanto que o meacutetodo de Adams e Dutreacute aplica-se somente a modelos

soacutelidos

Quanto ao tratamento de interseccedilatildeo em termos de visualizaccedilatildeo todos os

dois resolvem bem o problema O tratamento de interseccedilatildeo nos dois trabalhos

tambeacutem resolve o problema da validade da Regra 2 (ver seccedilatildeo 44) Entretanto

o tratamento de Adams e Dutreacute natildeo depende da renderizaccedilatildeo sendo portanto

mais portaacutevel Aleacutem disso uma desvantagem do meacutetodo de Pauly eacute o uso da

representaccedilatildeo impliacutecita MLS (ldquoMoving Least Squaresrdquo) do objeto para obter os

pontos exatamente na curva de interseccedilatildeo Esta representaccedilatildeo torna o

tratamento de interseccedilatildeo mais complexo e a vantagem apresentada natildeo eacute tatildeo

significativa para este tratamento de interseccedilatildeo

Conclusatildeo 71

7 Conclusatildeo

Concluiacutemos entatildeo que as escolhas de Adams e Dutreacute por usar uma

octree classificada e pelo tratamento dado agrave interseccedilatildeo satildeo mais abrangentes

que a escolha de Pauly E consideramos que quanto mais abrangente for uma

escolha conceitual mais resultados poderemos tirar dela No caso de Adams e

Dutreacute eles estendem o problema de classificar um ponto para classificar todo o

modelo Como foi citado ele quase fornece uma representaccedilatildeo volumeacutetrica do

modelo Esta aproximada representaccedilatildeo volumeacutetrica pode nos fornecer outras

informaccedilotildees como por exemplo o volume aproximado do modelo

Aleacutem disso o uso da representaccedilatildeo impliacutecita MLS no meacutetodo de Pauly cria

uma complexidade a mais para o meacutetodo sem apresentar vantagens para a

realizaccedilatildeo de operaccedilotildees booleanas que eacute o nosso enfoque

Logo podemos dizer que o meacutetodo de Adams e Dutreacute apresenta as

seguintes vantagens em relaccedilatildeo ao de Pauly

- a estrutura de octree classificada aleacutem de ser usada para classificaccedilatildeo

fornece informaccedilotildees adicionais como volume aproximado do objeto

- o tempo de processamento no meacutetodo de Adams e Dutreacute tende a ser

melhor que no meacutetodo de Pauly se implementadas as melhorias acima citadas e

se colocaacutessemos em consideraccedilatildeo o uso da representaccedilatildeo impliacutecita MLS

(Moving Least Squares)

- o tratamento de interseccedilatildeo de Adams e Dutreacute apresenta a vantagem da

portabilidade ou seja iraacute funcionar independente do algoritmo de renderizaccedilatildeo

utilizado

E as vantagens do meacutetodo de Pauly em relaccedilatildeo ao de Adams e Dutreacute

- a colocaccedilatildeo de surfels exatamente na curva de interseccedilatildeo

- a possibilidade de trabalhar com modelos soacutelidos ou natildeo soacutelidos

E finalizando concluiacutemos que o estudo relatado nesta dissertaccedilatildeo foi

importante por

- fornecer um breve estudo sobre modelagem por pontos uma nova e

promissora aacuterea dentro da computaccedilatildeo graacutefica

Conclusatildeo 72

- por apresentar uma avaliaccedilatildeo dos dois trabalhos existentes sobre

operaccedilotildees booleanas com pontos encontrando as vantagens de cada um

e levantando questotildees que natildeo tinham sido citadas nos trabalhos originais

- por propor e implementar melhorias ao trabalho de Adams e Dutreacute

71 Trabalhos Futuros

Nossa implementaccedilatildeo pode ser ainda evoluiacuteda com as propostas

apresentadas na seccedilatildeo 62 Como observamos o tempo de processamento do

algoritmo aqui implementado ainda pode ser melhorado com o uso do meacutetodo

TINN [19] - que foi proposto em Adams[2] - para otimizar a pesquisa do surfel

mais proacuteximo a um ponto que estaacute localizado na regiatildeo de um noacute que conteacutem

surfels Aleacutem disso o trabalho Simple and Efficient Trasversal Methods for

Quadtrees and Octrees de Sara F Frisken [12] citado no capiacutetulo 2 apresenta

uma otimizaccedilatildeo no uso de octrees Outra proposta para melhorar o tempo de

processamento do algoritmo aqui implementado eacute usar a forma de trabalhar com

octrees apresentada neste trabalho

O trabalho de Adams e Dutreacute [2] eacute aplicado apenas a objetos soacutelidos O

nosso plugin portanto aplica-se somente a este tipo de objeto Jaacute o trabalho de

Pauly[3] eacute aplicado tambeacutem a modelos natildeo soacutelidos Apresentamos como

proposta a um trabalho futuro a extensatildeo do algoritmo aqui implementado para

modelos natildeo soacutelidos O surfel pode conter uma informaccedilatildeo adicional que indica

se ele estaacute delimitando um volume ou natildeo Assim pode-se ter um modelo com

ldquopartes soacutelidasrdquo e ldquopartes natildeo soacutelidasrdquo Por exemplo a uniatildeo de um plano com

uma esfera poderia resultar numa esfera com ldquoabasrdquo (seriam as partes do plano

que estariam fora da esfera) O modelo resultado teria uma parte correspondente

a um espaccedilo 3D (esfera) e outra parte que seria uma superfiacutecie 2D posicionada

no espaccedilo 3D sem delimitar algum volume (abas)

Muitos trabalhos podem ser desenvolvidos aplicando-se o modelo por

pontos em animaccedilatildeo jogos visualizaccedilatildeo de terrenos criaccedilatildeo de protoacutetipos etc

considerando-se a eficiecircncia e simplicidade do modelo E mais especificamente

as operaccedilotildees booleanas com pontos podem ser aplicadas para criaccedilatildeo de

cenaacuterios testes de colisotildees e nestes casos a representaccedilatildeo usando octrees

pode ser mais explorada considerando-se o seu potencial de representaccedilatildeo

volumeacutetrica de um objeto

Referecircncias Bibliograacuteficas 73

8 Referecircncias Bibliograacuteficas

[1] MAumlNTYLAuml M An Introduction to Solid Modeling Computer Science Press 1988

[2] ADAMS B DUTREacute P Interactive Boolean Operations on Surfel-

Bounded Solids Proceedings of SIGGRAPH 2003 San Diego USA 2003

[3] PAULY M KEISER R KOBBELT L GROSS M Shape Modeling

with Point-Sampled Geometry SIGGRAPH 2003 Computer Graphics

Proceedings Annual Conference Series ACM Press ACM SIGGRAPH 2003

[4] LEVOY M WHITTED T The Use of Points as Display Primitives

Technical Report TR 85-022 The University of North Carolina at Chapel Hill

Department of Computer Science 1985

[5] PFISTER H ZWICKER M VAN BAAR J GROSS M 2000 Surfels

Surface Elements as Rendering Primitives SIGGRAPH 2000 pp 335ndash342 New

Orleans LA July 23-28 2000

[6] ZWICKER M PFISTER H VAN BAAR J GROSS M Surface

Splatting SIGGRAPH 2001

[7] PAULY M KOBBELT L GROSS M Multiresolution Modeling of

Point-Sampled Geometry CS Techinical Report 378 September 16 2002

[8] CURLESS B New Methods for Surface Reconstruction from Range Images PhD thesis Stanford University 1997

[9] RUSINKIEWICZ S Real-time Acquisition and Rendering of Large 3D Models PhD thesis Stanford University 2001

Referecircncias Bibliograacuteficas 74

[10] AMENTA N BERN M KAMVYSSELIS M A new Voronoi-Based

Surface Reconstruction Algorithm SIGGRAPH 98 Conference proceedings pp

415-421 New York 1998

[11] ZWICKER M PAULY M KNOLL O GROSS M Pointshop 3D an

Interactive System for Point-Based Surface Editing Proceedings of SIGGRAPH 2002 San Antonio TX July 2002

[12] FRISKEN S PERRY R Simple and Efficient Traversal Methods for

Quadtrees and Octrees Journal of Graphics Tools Vol 7 Issue 3 May 2003

[13] CORREcircA W T OLIVEIRA M M Silva C T Wang J

Modeling and Rendering of Real Environments

Revista de Informaacutetica Teoacuterica e Aplicada (Brazilian Journal of Theoretic and Applied Computing) 9(2)127-156 2002

[14] DAVIS J MARSCHNER S GARR M LEVOY M Filling Holes in

Complex Surfaces Using Volumetric Diffusion First International Symposium on 3D Data Processing Visualization Transmission June 2002

[15] RAumlSAumlNEN J Surface Splatting Theory Extensions and Implementation Masterrsquos Thesis Dept of Computer Science Helsinki

University of Technology May 28 2002

[16] PAULY M Point Primitives for Interactive Modeling and Processing of 3D Geometry PhD thesis Federal Institute of Technology (ETH)

of Zurich 2003

[17] HOPPE H DEROSE T DUCHAMP T MCDONALD J

STUELZLE W Surface Reconstruction from Unorganized Points Computer Graphics 26(2)71ndash78 July 1992

[18] ALEXA M BEHR J COHEN-OR D FLEISHMAN S LEVIN D

SILVA C T Point Set Surfaces IEEE Visualization 2001 pp 21ndash28 October

2001

Referecircncias Bibliograacuteficas 75

[19] GREENSPAN M GODIN G TALBOT J Acceleration of Binning

Nearest Neighbor Methods Proceedings of Vision Interface 2000 pp 337-

344

[20] MENCL R Reconstruction of Surfaces from Unorganized Three-Dimensional Point Clouds Dissertation Dortmund Univ 2001

[21] KRIVANEK J Representing and Rendering Surfaces With Points

httpciteseernjneccomkrivanek03representinghtml Acesso em 30 jul

2003

[22] KRISTJANSSON ET AL Approximate Boolean Operations on Free-

form Solids Proceedings of SIGGRAPH 01 2001

Melhorias Propostas 53

Figura 25-Duas circunferecircncias e suas quadtrees correspondentes

O Teste DentroFora classifica os surfels de um modelo como dentro ou

fora de outro modelo ou na sua interseccedilatildeo Este teste foi aqui implementado

exatamente como foi proposto em Adams e Dutreacute [2] exceto que natildeo foi

implementado o meacutetodo TINN - Triangle Inequality Nearest Neighbour [19]

Cada octree eacute percorrida verificando-se se os seus noacutes ou surfels estatildeo dentro

fora ou no contorno do outro modelo (Figura 25) Sejam A e B duas octrees e

queremos classificar a octree A As duas octrees (AB) satildeo percorridas partindo

da raiz

Para cada noacute de A existem quatro casos (Figura 26) Para testar estas

situaccedilotildees os boxes dos noacutes satildeo aumentados de rmax o raio do maior surfel do

modelo Isto eacute feito para compensar o fato de que o surfel natildeo eacute apenas um

ponto mas sim considerado como um disco

Os quatro casos satildeo

Se o noacute de A natildeo intersecta B entatildeo todos os surfels deste noacute satildeo

classificados como fora

Se o noacute de A intersecta apenas noacutes de B que estatildeo fora do modelo

todos os surfels deste noacute satildeo fora

Se o noacute de A intersecta apenas noacutes de B que estatildeo dentro do modelo

todos os surfels deste noacute satildeo dentro

Melhorias Propostas 54

Se o noacute de A intersecta noacutes de B que estatildeo dentro e tambeacutem noacutes de B

que estatildeo fora testa-se se este noacute de A eacute ou natildeo folha Se natildeo for folha

percorre-se os filhos deste noacute de A ateacute encontrar um noacute folha cheio que

intersecta B Para cada surfel sa deste noacute folha de A encontra-se o surfel de B

mais proacuteximo e classifica-se a coordenada de sa da forma apresentada na seccedilatildeo

5111 Seja sb o surfel usado na classificaccedilatildeo de sa Se os discos de sb e sa

se intersectam sa eacute classificado como ldquointerseccedilatildeordquo

(a) (b)

(c) (d)

Figura 26- a modelos natildeo se intersectam b modelo intersecta noacutes fora c modelo intersecta apenas noacutes dentro d modelo intersecta noacutes dentro e noacutes fora

513 Criaccedilatildeo do modelo resultado

Um novo modelo eacute criado com os seguintes surfels (de acordo com a

operaccedilatildeo booleana escolhida pelo usuaacuterio - veja Regra 1 da seccedilatildeo 41)

Uniatildeo - surfels de A que estatildeo fora de B + surfels de B que estatildeo fora de A

Melhorias Propostas 55

Interseccedilatildeo - surfels de A que estatildeo dentro de B + surfels de B que estatildeo

dentro de A

Diferenccedila A-B - surfels de A que estatildeo fora de B + surfels de B que estatildeo

dentro de A (com orientaccedilatildeo invertida)

Como natildeo foi implementado tratamento especial algum de interseccedilatildeo para

o nosso plugin os surfels que se intersectam satildeo mantidos no modelo resultado

final sem modificaccedilotildees

Descrito o algoritmo vejamos a seguir a sua implementaccedilatildeo

52 Implementaccedilatildeo

Este algoritmo foi implementado na forma de um plugin para o software

PointShop 3D [11] Este plugin foi desenvolvido na linguagem C e no sistema

operacional Windows

A escolha deste tipo de implementaccedilatildeo permitiu-nos usar o software

PointShop para os testes do algoritmo Estes testes foram feitos com os modelos

disponibilizados para o PointShop [11] Nesta seccedilatildeo apresentaremos o software

PointShop e as principais estruturas de dados usadas em nosso plugin

O Pointshop eacute um software aberto com seu coacutedigo disponiacutevel e preparado

para trabalhar com plugins Eacute um software de ediccedilatildeo de modelos 3D por pontos

Ele permite aleacutem de visualizar o modelo alterar as suas caracteriacutesticas como

cor brilho e fazer mapeamento de textura iluminaccedilatildeo filtragem (Figura 27)

Melhorias Propostas 56

Figura 27-Software PointShop 3D com dois modelos carregados na sua cena

Aleacutem disso pode-se criar uma cena com vaacuterios modelos e visualizaacute-los de

qualquer ponto de vista Implementa o virtual trackball para rotacionaacute-los e

transladaacute-los Usa uma iluminaccedilatildeo simples direcional A sua arquitetura eacute

extensiacutevel permite que o usuaacuterio adicione seus proacuteprios componentes ao

sistema Possui trecircs tipos de componentes

ldquoToolsrdquo fornece funcionalidades para ediccedilatildeo interativa de superfiacutecie Satildeo

disponibilizados na ldquotoolbarrdquo

Plugins fornece funcionalidades para processar em um soacute passo

modelos ou partes deles selecionadas Satildeo disponibilizados no menu ldquoPluginsrdquo

Renderes fornece funcionalidades de display para os modelos

Para esta dissertaccedilatildeo foi escolhida a construccedilatildeo do componente Plugin

por adequar-se agrave nossa proposta e ser a mais simples de ser construiacuteda O

PointShop [11] jaacute conteacutem uma tool que executa operaccedilotildees booleanas e

deformaccedilatildeo free-form sobre os modelos carregados na cena usando o meacutetodo

de Pauly [3] apresentado no capiacutetulo 4 O nosso plugin Operaccedilotildees Booleanas

implementa o algoritmo descrito na seccedilatildeo anterior baseado na proposta de

Melhorias Propostas 57

Adams e Dutreacute [2] Uma comparaccedilatildeo entre o nosso plugin e a tool de Pauly [3] eacute

feita no capiacutetulo 6

Figura 28-Menu do PointShop com o plugin e as opccedilotildees para operaccedilotildees booleanas

Para se executar o plugin o usuaacuterio precisa carregar dois modelos na

cena do PointShop acionar o plugin informando a operaccedilatildeo que seraacute executada

O plugin executaraacute o algoritmo acima proposto e carregaraacute o resultado na cena

do Pointshop retirando os modelos anteriores

521 Estruturas de Dados

Como vimos o software PointShop [11] trabalha com modelos por pontos

Um modelo deste software descrito na seccedilatildeo 42 conteacutem todas as informaccedilotildees

que o algoritmo proposto em Bart [2] necessita Abaixo relacionamos as

Melhorias Propostas 58

principais estruturas de dados do PointShop usadas no plugin e as principais

estruturas de dados do nosso plugin

As principais classes do PointShop usadas no plugin satildeo

Classe Scene

Classe Objects

Classe SurfelColections

Classe Surfel

Classe StatusBar

Classe Transformer

A hierarquia de dados eacute a seguinte a Scene conteacutem vaacuterios Objects os

quais conteacutem SurfelColections Cada SurfelColections conteacutem Surfels que

suportam uma ou mais propriedades tais como cor difusa cor especular

Classe Scene Classe que representa uma cena que conteacutem modelos

Classe Object Um modelo eacute representado pela classe Object que

conteacutem uma SurfelCollection e as matrizes de transformaccedilatildeo para rotaccedilatildeo

escala e translaccedilatildeo Cada Object eacute identificado pelo seu nome que eacute uacutenico na

Scene O meacutetodo getUniqueName retorna um nome uacutenico Cada Object tem sua

proacutepria matriz de transformaccedilatildeo que pode ser modificada com setRotation

rotate setPosition translate setScale e scale Objects podem ser copiados com

copy Objects consiste em um conjunto de surfels os quais podem ser

recuperados pela getSurfelCollection O Object pode ser ativado com

setActiveObject e recuperado com getActiveObject

Objects podem ser adicionados ou removidos com addObject e

removeObject Os Objects podem ser obtidos pela getFirstObject e

getNextObject

Classe SurfelCollection representa o conjunto de surfels de um modelo

Cada surfelcollection consiste em um conjunto de surfels (SurfelInterface) de

tamanho obtido por getNofSurfels Os surfels podem ser recuperados com

getFirstSurfel getCurrentSurfel e getNextSurfel

A SurfelCollection conteacutem um PropertyDescriptor e uma SurfelList

A SurfelList eacute uma lista duplamente encadeada de surfels Possui os

atributos firstSurfel lastSurfel currentSurfel que satildeo ponteiros para uma

SurfelInterface nSurfels que eacute o nuacutemero de Surfels

A SurfelInterface define a API para os surfels que satildeo os menores

elementos que compotildeem um Object Podem ser considerados como pontos com

uma normal que define a orientaccedilatildeo do ciacuterculo (ou elipse) que seraacute desenhado

Melhorias Propostas 59

tatildeo logo o surfel seja renderizado Tem como atributos dois ponteiros (next e

prev) para SurfelInterface

PropertyDescriptor consiste em ateacute 32 valores descrevendo quais as

propriedades a SurfelInterface suporta

Classe Surfel classe que representa o surfel

Classe StatusBar classe que imprime mensagens na tela Os plugins

podem mandar mensagens para o usuaacuterio pela StatusBar

Mensagens texto podem ser impressas com showMessage O progresso

de uma operaccedilatildeo pode ser indicado com setProgress ou resetProgress

Classe Transformer representa a transformaccedilatildeo entre sistemas de

coordenadas Esta classe fornece meacutetodos para transformar pontos e vetores

entre os diferentes sistemas de coordenadas do Pointshop

A seguir apresentamos as principais estruturas de dados do plugin

Operaccedilotildees Booleanas

As principais estruturas de dados do plugin satildeo boundingbox tree no

lista_surfel surfel

Boundingbox conteacutem dois pontos 3D que definem uma caixa que conteacutem

o modelo um ponto com menores coordenadas xy e z e outro ponto com

maiores xyz

Tree representa a octree do modelo Cada registro conteacutem um ponteiro

para um noacute e oito ponteiros para as 8 octrees filhas

No representa um noacute da octree Conteacutem os seguintes dados

- localizaccedilatildeo do noacute que eacute o canto inferior esquerdo do noacute

- lista_surfel (preenchida apenas para noacutes folha cheios)

- quantidade de surfels do noacute

- classificaccedilatildeo do noacute como dentro fora ou contorno

- classificaccedilatildeo do noacute em relaccedilatildeo a outro modelo

- indica se o noacute eacute folha ou natildeo

- vetor que eacute a meacutedia das normais dos surfels do noacute

- ponto que eacute a meacutedia das localizaccedilotildees dos surfels do noacute

- surfel que tem (entre todos os surfels do noacute) o maior produto interno

entre a sua normal e a normal meacutedia

- surfel que tem (entre todos os surfels do noacute) o menor produto interno

entre a sua normal e a normal meacutedia

- produto interno maacuteximo e miacutenimo entre as normais dos surfels do noacute e a

normal meacutedia deste noacute

Melhorias Propostas 60

- indica se o noacute conteacutem surfels com normais em sentido oposto (produto

interno entre elas eacute menor que zero)

- classificaccedilatildeo dos oito cantos do noacute

lista_surfels lista em que cada registro conteacutem um apontador para um

surfel e um apontador para o proacuteximo registro

surfel representa o surfel da octree Conteacutem a classificaccedilatildeo em relaccedilatildeo a

outro modelo e um ponteiro para o surfel do Poinshop

Resultados 61

6 Resultados

Neste capiacutetulo apresentamos os testes realizados com o plugin para o

PointShop implementado para esta dissertaccedilatildeo a comparaccedilatildeo deste plugin com

o plugin de Pauly [3] e a comparaccedilatildeo entre o meacutetodo de Adams e Dutreacute [2] e o

meacutetodo de Pauly [3]

61 Testes

Os testes foram feitos em um PC x86 Family 6 261600 KB de RAM sem

placa graacutefica sistema operacional Windows 2000 O plugin foi implementado na

linguagem C

Os modelos usados para os testes satildeo modelos disponibilizados no

PointShop [11] Vale lembrar que o meacutetodo implementado em nosso plugin eacute

restrito a modelos soacutelidos e portanto foram usados apenas estes modelos

soacutelidos para os testes

O modelo na Figura 29 que eacute um dos modelos disponibilizados no

PointShop [11] foi usado para mostrar o resultado das operaccedilotildees realizadas

pelo plugin implementado nesta dissertaccedilatildeo O modelo Igea eacute um modelo soacutelido

que conteacutem 134345 surfels

Resultados 62

Figura 29-Modelo do PointShop Igea

Para realizar as operaccedilotildees este modelo foi carregado na cena do

PointShop duas vezes e um deles colorido de vermelho As Figuras 30 31 32

mostram o resultado da operaccedilatildeo de uniatildeo interseccedilatildeo e diferenccedila

respectivamente Os nuacutemeros de surfels dos modelos resultantes satildeo mostrados

na Tabela 2

Resultados 63

Figura 30-Resultado da uniatildeo de duas Igeas

Figura 31-Resultado da interseccedilatildeo de duas Igeas

Resultados 64

Figura 32-Resultado da diferenccedila entre duas Igeas

Tabela 2-Nuacutemero de surfels dos modelos resultantes

Observamos que o nuacutemero de surfels dos modelos resultantes estaacute

coerente com as figuras dos seus modelos

Para avaliar o tempo de processamento das operaccedilotildees foram realizados

vaacuterios testes com o objetivo de obter uma meacutedia dos tempos de realizaccedilatildeo de

cada operaccedilatildeo Tambeacutem foram armazenados os tempos da criaccedilatildeo das duas

octrees e da classificaccedilatildeo de todos os surfels dos dois objetos (como dentro ou

fora do outro modelo) Estes testes foram feitos usando o modelo Igea A meacutedia

dos tempos de processamento foi calculada e os resultados satildeo mostrados na

Tabela 3 Verificamos que o maior tempo gasto eacute para criaccedilatildeo das octrees

Verificamos tambeacutem que este resultado apresentado eacute similar ao resultado

verificado empiricamente com o plugin de Pauly [3] Os tempos gastos para

realizar as operaccedilotildees satildeo similares e o maior tempo gasto no plugin de Pauly

tambeacutem eacute para inicializaccedilatildeo de suas estruturas de dados que incluem a kd-tree

Operaccedilatildeo Nuacutemero de surfels do modelo resultado

Uniatildeo 189715

Interseccedilatildeo 72225

Diferenccedila 134552

Resultados 65

Operaccedilatildeo Criaccedilatildeo das

Octrees (seg)

Classificaccedilatildeo

(seg)

Criaccedilatildeo do

resultado (seg)

Total (seg)

Uniatildeo 39375 1324 18925 7154

Interseccedilatildeo 38585 1585 09547 63982

Diferenccedila 399875 1504 1729 729475

Tabela 3- Meacutedia dos tempos de processamento para as operaccedilotildees com duas Igeas

Com o objetivo de expor melhor os resultados deste trabalho

apresentamos abaixo mais um teste das operaccedilotildees booleanas usando o nosso

plugin Os modelos usados para este segundo teste satildeo o Max Planck e o Male

ambos modelos soacutelidos disponibilizados no PointShop Estes modelos satildeo

mostrados nas figura 33 e 34

O primeiro Max Planck conteacutem 52809 surfels

Figura 33-Modelo do PointShop MaxPlanck

O segundo modelo abaixo Male conteacutem 148138 surfels

Resultados 66

Figura 34-Modelo do PointShop Male

As Figuras 353637 mostram o resultado da operaccedilatildeo de uniatildeo interseccedilatildeo

e diferenccedila respectivamente usando os dois modelos acima Podemos observar

pela figura 35 que o resultado da operaccedilatildeo de diferenccedila neste caso gerou um

modelo resultado com trecircs partes desconexas Os nuacutemeros de surfels de cada

modelo resultado satildeo mostrados na Tabela 5

Figura 35- Resultado da Uniatildeo do modelo Male com MaxPlanck

Resultados 67

Figura 36-Resultado da interseccedilatildeo do modelo Male com o MaxPlanck

Figura 37-Resultado da diferenccedila do modelo Male do modelo MaxPlanck

As meacutedias de tempos de processamento foram calculadas da mesma

forma que o primeiro teste com o modelo Igea acima apresentado Os

resultados satildeo mostrados na Tabela 4 Podemos observar que este teste

Resultados 68

apresenta tempos um pouco menores que o teste com o modelo Igea Isto se

deve ao fato de que o modelo MaxPlanck ser significativamente menor que o

modelo Igea MaxPlanck possui 52809 surfels e Igea conteacutem 134345 surfels

Operaccedilatildeo Criaccedilatildeo das

Octrees (seg)

Classificaccedilatildeo

(seg)

Criaccedilatildeo do

resultado (seg)

Total

(seg)

Uniatildeo 3012 1254 102 5285

Interseccedilatildeo 2985 0901 0861 4747

Diferenccedila 2965 0911 0791 4667

Tabela 4-Tempo de processamento das operaccedilotildees com os modelos MaxPlanck e Male

Operaccedilatildeo Nuacutemero de surfels do resultado

Uniatildeo 126532

Interseccedilatildeo 88414

Diferenccedila 77635

Tabela 5-Nuacutemero de surfels dos modelos resultados das operaccedilotildees com os modelos MaxPlanck e Male

Em seguida apresentaremos uma comparaccedilatildeo entre o nosso plugin e o

plugin de Pauly[3] e tambeacutem uma comparaccedilatildeo entre o meacutetodo de Adams e Dutreacute

[2] e o meacutetodo de Pauly [3]

62 Comparaccedilatildeo entre os dois meacutetodos que realizam operaccedilotildees booleanas

A comparaccedilatildeo entre os meacutetodos de Pauly[3] e de Adams e Dutreacute foi feita

em termos de tempo de processamento e em termos conceituais Em termos de

tempo de processamento comparamos o plugin de Pauly[3] com o nosso plugin

Em termos de tempo de processamento verifica-se empiricamente que os

dois meacutetodos apresentam tempos bastante similares Entretanto o tempo de

processamento do algoritmo aqui implementado ainda pode ser melhorado com

Resultados 69

o uso do meacutetodo TINN [19] que foi proposto em Adams[2] - para otimizar a

pesquisa do surfel mais proacuteximo a um ponto que estaacute localizado na regiatildeo de um

noacute que conteacutem surfels - veja seccedilatildeo 42 O uso deste meacutetodo natildeo foi

implementado para este trabalho e a sua implementaccedilatildeo melhoraria o tempo de

resposta do algoritmo Aleacutem disso o trabalho de Sara F Frisken [12] citado no

capiacutetulo 2 apresenta uma otimizaccedilatildeo no uso de octrees que pode ser

incorporada no algoritmo implementado neste trabalho

Em termos conceituais vamos fazer a comparaccedilatildeo do uso do que

chamamos aqui de Regra 2 do tratamento de interseccedilatildeo e do tratamento de

ldquoarestas vivasrdquo

Como vimos na seccedilatildeo 41 tanto o algoritmo implementado nesta

dissertaccedilatildeo baseado no trabalho de Adams e Dutreacute como o meacutetodo de Pauly

[3] parte do que chamamos aqui de Regra 2 para realizar operaccedilotildees booleanas

com pontos Mas cada um destes meacutetodos daacute um tratamento diferente para o

uso desta regra

O meacutetodo de Pauly usa a Regra 2 para classificaccedilatildeo de cada ponto ou de

cada surfel Para classificar um surfel de B sb como dentro ou fora de A eacute

encontrado o surfel de A sa mais proacuteximo a sb e sb eacute classificado a partir de sa

Para encontrar sa Pauly utiliza uma kd-tree Como esta pesquisa para encontrar

sa eacute cara (mesmo usando uma kd-tree) Pauly utiliza uma esfera que conteacutem

pontos com a mesma classificaccedilatildeo (seccedilatildeo 432) e diminui em 90 este nuacutemero

de pesquisas Pauly utiliza tambeacutem a representaccedilatildeo impliacutecita MLS (Moving Least

Squares) para casos em que a Regra 2 poderia falhar e para tratamento de

interseccedilotildees Entretanto o nuacutemero destes casos em que a Regra 2 poderia falhar

eacute muito pequeno E a representaccedilatildeo MLS natildeo eacute uma estrutura simples de ser

implementada Portanto natildeo encontramos vantagens em usar MLS para estes

casos O meacutetodo de Adams e Dutreacute natildeo trata estes casos e na praacutetica

apresenta resultados bastante satisfatoacuterios como foi mostrado Portanto

consideramos que valeria a pena fazer algum tratamento especial para estes

casos se fosse um procedimento simples Para a execuccedilatildeo do algoritmo de

Pauly o uso de MLS natildeo interfere significativamente porque a construccedilatildeo desta

representaccedilatildeo natildeo eacute feita somente para realizar operaccedilotildees booleanas Os testes

empiacutericos que fizemos com o algoritmo de Pauly natildeo incluem a construccedilatildeo desta

representaccedilatildeo

Aparentemente os dois algoritmos satildeo bastante parecidos um usa octrees

e o outro usa kd-tree As duas estruturas de dados satildeo simples e otimizam a

classificaccedilatildeo dos surfels de um modelo como dentro ou fora do outro modelo

Resultados 70

Mas existe uma diferenccedila conceitual entre dois que merece ser destacada O

algoritmo aqui implementado usa a Regra 2 para classificaccedilatildeo dos noacutes de uma

octree e armazena esta octree classificada (ver capiacutetulo 5) Assim na maioria dos

casos natildeo seraacute necessaacuterio encontrar o surfel mais proacuteximo para classificar um

ponto (ou um surfel) como fora ou dentro de um modelo Caso o ponto esteja em

uma aacuterea da octree classificada ele teraacute a classificaccedilatildeo dada agravequela aacuterea A

pesquisa ao surfel mais proacuteximo seraacute feita apenas nos casos em que o ponto a

ser classificado estaacute localizado entre os planos que subdividem um noacute cheio

O uso desta octree classificada levanta uma questatildeo que natildeo foi citada no

trabalho de Adams e Dutreacute que eacute a proximidade desta estrutura (armazenada)

de octree classificada com uma representaccedilatildeo volumeacutetrica do objeto Sendo

assim esta estrutura pode ser aproveitada para outras funccedilotildees aleacutem da

classificaccedilatildeo dos surfels Por exemplo podemos ter uma aproximaccedilatildeo do

volume de uma cena somando os volumes aproximados dos modelos que a

compotildeem Como o enfoque deste trabalho eacute operaccedilatildeo booleana natildeo vamos nos

aprofundar nesta questatildeo

Outra importante diferenccedila entre os dois trabalhos que jaacute foi explicada na

seccedilatildeo 432 eacute que o meacutetodo de Pauly aplica-se a modelos soacutelidos ou natildeo

soacutelidos enquanto que o meacutetodo de Adams e Dutreacute aplica-se somente a modelos

soacutelidos

Quanto ao tratamento de interseccedilatildeo em termos de visualizaccedilatildeo todos os

dois resolvem bem o problema O tratamento de interseccedilatildeo nos dois trabalhos

tambeacutem resolve o problema da validade da Regra 2 (ver seccedilatildeo 44) Entretanto

o tratamento de Adams e Dutreacute natildeo depende da renderizaccedilatildeo sendo portanto

mais portaacutevel Aleacutem disso uma desvantagem do meacutetodo de Pauly eacute o uso da

representaccedilatildeo impliacutecita MLS (ldquoMoving Least Squaresrdquo) do objeto para obter os

pontos exatamente na curva de interseccedilatildeo Esta representaccedilatildeo torna o

tratamento de interseccedilatildeo mais complexo e a vantagem apresentada natildeo eacute tatildeo

significativa para este tratamento de interseccedilatildeo

Conclusatildeo 71

7 Conclusatildeo

Concluiacutemos entatildeo que as escolhas de Adams e Dutreacute por usar uma

octree classificada e pelo tratamento dado agrave interseccedilatildeo satildeo mais abrangentes

que a escolha de Pauly E consideramos que quanto mais abrangente for uma

escolha conceitual mais resultados poderemos tirar dela No caso de Adams e

Dutreacute eles estendem o problema de classificar um ponto para classificar todo o

modelo Como foi citado ele quase fornece uma representaccedilatildeo volumeacutetrica do

modelo Esta aproximada representaccedilatildeo volumeacutetrica pode nos fornecer outras

informaccedilotildees como por exemplo o volume aproximado do modelo

Aleacutem disso o uso da representaccedilatildeo impliacutecita MLS no meacutetodo de Pauly cria

uma complexidade a mais para o meacutetodo sem apresentar vantagens para a

realizaccedilatildeo de operaccedilotildees booleanas que eacute o nosso enfoque

Logo podemos dizer que o meacutetodo de Adams e Dutreacute apresenta as

seguintes vantagens em relaccedilatildeo ao de Pauly

- a estrutura de octree classificada aleacutem de ser usada para classificaccedilatildeo

fornece informaccedilotildees adicionais como volume aproximado do objeto

- o tempo de processamento no meacutetodo de Adams e Dutreacute tende a ser

melhor que no meacutetodo de Pauly se implementadas as melhorias acima citadas e

se colocaacutessemos em consideraccedilatildeo o uso da representaccedilatildeo impliacutecita MLS

(Moving Least Squares)

- o tratamento de interseccedilatildeo de Adams e Dutreacute apresenta a vantagem da

portabilidade ou seja iraacute funcionar independente do algoritmo de renderizaccedilatildeo

utilizado

E as vantagens do meacutetodo de Pauly em relaccedilatildeo ao de Adams e Dutreacute

- a colocaccedilatildeo de surfels exatamente na curva de interseccedilatildeo

- a possibilidade de trabalhar com modelos soacutelidos ou natildeo soacutelidos

E finalizando concluiacutemos que o estudo relatado nesta dissertaccedilatildeo foi

importante por

- fornecer um breve estudo sobre modelagem por pontos uma nova e

promissora aacuterea dentro da computaccedilatildeo graacutefica

Conclusatildeo 72

- por apresentar uma avaliaccedilatildeo dos dois trabalhos existentes sobre

operaccedilotildees booleanas com pontos encontrando as vantagens de cada um

e levantando questotildees que natildeo tinham sido citadas nos trabalhos originais

- por propor e implementar melhorias ao trabalho de Adams e Dutreacute

71 Trabalhos Futuros

Nossa implementaccedilatildeo pode ser ainda evoluiacuteda com as propostas

apresentadas na seccedilatildeo 62 Como observamos o tempo de processamento do

algoritmo aqui implementado ainda pode ser melhorado com o uso do meacutetodo

TINN [19] - que foi proposto em Adams[2] - para otimizar a pesquisa do surfel

mais proacuteximo a um ponto que estaacute localizado na regiatildeo de um noacute que conteacutem

surfels Aleacutem disso o trabalho Simple and Efficient Trasversal Methods for

Quadtrees and Octrees de Sara F Frisken [12] citado no capiacutetulo 2 apresenta

uma otimizaccedilatildeo no uso de octrees Outra proposta para melhorar o tempo de

processamento do algoritmo aqui implementado eacute usar a forma de trabalhar com

octrees apresentada neste trabalho

O trabalho de Adams e Dutreacute [2] eacute aplicado apenas a objetos soacutelidos O

nosso plugin portanto aplica-se somente a este tipo de objeto Jaacute o trabalho de

Pauly[3] eacute aplicado tambeacutem a modelos natildeo soacutelidos Apresentamos como

proposta a um trabalho futuro a extensatildeo do algoritmo aqui implementado para

modelos natildeo soacutelidos O surfel pode conter uma informaccedilatildeo adicional que indica

se ele estaacute delimitando um volume ou natildeo Assim pode-se ter um modelo com

ldquopartes soacutelidasrdquo e ldquopartes natildeo soacutelidasrdquo Por exemplo a uniatildeo de um plano com

uma esfera poderia resultar numa esfera com ldquoabasrdquo (seriam as partes do plano

que estariam fora da esfera) O modelo resultado teria uma parte correspondente

a um espaccedilo 3D (esfera) e outra parte que seria uma superfiacutecie 2D posicionada

no espaccedilo 3D sem delimitar algum volume (abas)

Muitos trabalhos podem ser desenvolvidos aplicando-se o modelo por

pontos em animaccedilatildeo jogos visualizaccedilatildeo de terrenos criaccedilatildeo de protoacutetipos etc

considerando-se a eficiecircncia e simplicidade do modelo E mais especificamente

as operaccedilotildees booleanas com pontos podem ser aplicadas para criaccedilatildeo de

cenaacuterios testes de colisotildees e nestes casos a representaccedilatildeo usando octrees

pode ser mais explorada considerando-se o seu potencial de representaccedilatildeo

volumeacutetrica de um objeto

Referecircncias Bibliograacuteficas 73

8 Referecircncias Bibliograacuteficas

[1] MAumlNTYLAuml M An Introduction to Solid Modeling Computer Science Press 1988

[2] ADAMS B DUTREacute P Interactive Boolean Operations on Surfel-

Bounded Solids Proceedings of SIGGRAPH 2003 San Diego USA 2003

[3] PAULY M KEISER R KOBBELT L GROSS M Shape Modeling

with Point-Sampled Geometry SIGGRAPH 2003 Computer Graphics

Proceedings Annual Conference Series ACM Press ACM SIGGRAPH 2003

[4] LEVOY M WHITTED T The Use of Points as Display Primitives

Technical Report TR 85-022 The University of North Carolina at Chapel Hill

Department of Computer Science 1985

[5] PFISTER H ZWICKER M VAN BAAR J GROSS M 2000 Surfels

Surface Elements as Rendering Primitives SIGGRAPH 2000 pp 335ndash342 New

Orleans LA July 23-28 2000

[6] ZWICKER M PFISTER H VAN BAAR J GROSS M Surface

Splatting SIGGRAPH 2001

[7] PAULY M KOBBELT L GROSS M Multiresolution Modeling of

Point-Sampled Geometry CS Techinical Report 378 September 16 2002

[8] CURLESS B New Methods for Surface Reconstruction from Range Images PhD thesis Stanford University 1997

[9] RUSINKIEWICZ S Real-time Acquisition and Rendering of Large 3D Models PhD thesis Stanford University 2001

Referecircncias Bibliograacuteficas 74

[10] AMENTA N BERN M KAMVYSSELIS M A new Voronoi-Based

Surface Reconstruction Algorithm SIGGRAPH 98 Conference proceedings pp

415-421 New York 1998

[11] ZWICKER M PAULY M KNOLL O GROSS M Pointshop 3D an

Interactive System for Point-Based Surface Editing Proceedings of SIGGRAPH 2002 San Antonio TX July 2002

[12] FRISKEN S PERRY R Simple and Efficient Traversal Methods for

Quadtrees and Octrees Journal of Graphics Tools Vol 7 Issue 3 May 2003

[13] CORREcircA W T OLIVEIRA M M Silva C T Wang J

Modeling and Rendering of Real Environments

Revista de Informaacutetica Teoacuterica e Aplicada (Brazilian Journal of Theoretic and Applied Computing) 9(2)127-156 2002

[14] DAVIS J MARSCHNER S GARR M LEVOY M Filling Holes in

Complex Surfaces Using Volumetric Diffusion First International Symposium on 3D Data Processing Visualization Transmission June 2002

[15] RAumlSAumlNEN J Surface Splatting Theory Extensions and Implementation Masterrsquos Thesis Dept of Computer Science Helsinki

University of Technology May 28 2002

[16] PAULY M Point Primitives for Interactive Modeling and Processing of 3D Geometry PhD thesis Federal Institute of Technology (ETH)

of Zurich 2003

[17] HOPPE H DEROSE T DUCHAMP T MCDONALD J

STUELZLE W Surface Reconstruction from Unorganized Points Computer Graphics 26(2)71ndash78 July 1992

[18] ALEXA M BEHR J COHEN-OR D FLEISHMAN S LEVIN D

SILVA C T Point Set Surfaces IEEE Visualization 2001 pp 21ndash28 October

2001

Referecircncias Bibliograacuteficas 75

[19] GREENSPAN M GODIN G TALBOT J Acceleration of Binning

Nearest Neighbor Methods Proceedings of Vision Interface 2000 pp 337-

344

[20] MENCL R Reconstruction of Surfaces from Unorganized Three-Dimensional Point Clouds Dissertation Dortmund Univ 2001

[21] KRIVANEK J Representing and Rendering Surfaces With Points

httpciteseernjneccomkrivanek03representinghtml Acesso em 30 jul

2003

[22] KRISTJANSSON ET AL Approximate Boolean Operations on Free-

form Solids Proceedings of SIGGRAPH 01 2001

Melhorias Propostas 54

Se o noacute de A intersecta noacutes de B que estatildeo dentro e tambeacutem noacutes de B

que estatildeo fora testa-se se este noacute de A eacute ou natildeo folha Se natildeo for folha

percorre-se os filhos deste noacute de A ateacute encontrar um noacute folha cheio que

intersecta B Para cada surfel sa deste noacute folha de A encontra-se o surfel de B

mais proacuteximo e classifica-se a coordenada de sa da forma apresentada na seccedilatildeo

5111 Seja sb o surfel usado na classificaccedilatildeo de sa Se os discos de sb e sa

se intersectam sa eacute classificado como ldquointerseccedilatildeordquo

(a) (b)

(c) (d)

Figura 26- a modelos natildeo se intersectam b modelo intersecta noacutes fora c modelo intersecta apenas noacutes dentro d modelo intersecta noacutes dentro e noacutes fora

513 Criaccedilatildeo do modelo resultado

Um novo modelo eacute criado com os seguintes surfels (de acordo com a

operaccedilatildeo booleana escolhida pelo usuaacuterio - veja Regra 1 da seccedilatildeo 41)

Uniatildeo - surfels de A que estatildeo fora de B + surfels de B que estatildeo fora de A

Melhorias Propostas 55

Interseccedilatildeo - surfels de A que estatildeo dentro de B + surfels de B que estatildeo

dentro de A

Diferenccedila A-B - surfels de A que estatildeo fora de B + surfels de B que estatildeo

dentro de A (com orientaccedilatildeo invertida)

Como natildeo foi implementado tratamento especial algum de interseccedilatildeo para

o nosso plugin os surfels que se intersectam satildeo mantidos no modelo resultado

final sem modificaccedilotildees

Descrito o algoritmo vejamos a seguir a sua implementaccedilatildeo

52 Implementaccedilatildeo

Este algoritmo foi implementado na forma de um plugin para o software

PointShop 3D [11] Este plugin foi desenvolvido na linguagem C e no sistema

operacional Windows

A escolha deste tipo de implementaccedilatildeo permitiu-nos usar o software

PointShop para os testes do algoritmo Estes testes foram feitos com os modelos

disponibilizados para o PointShop [11] Nesta seccedilatildeo apresentaremos o software

PointShop e as principais estruturas de dados usadas em nosso plugin

O Pointshop eacute um software aberto com seu coacutedigo disponiacutevel e preparado

para trabalhar com plugins Eacute um software de ediccedilatildeo de modelos 3D por pontos

Ele permite aleacutem de visualizar o modelo alterar as suas caracteriacutesticas como

cor brilho e fazer mapeamento de textura iluminaccedilatildeo filtragem (Figura 27)

Melhorias Propostas 56

Figura 27-Software PointShop 3D com dois modelos carregados na sua cena

Aleacutem disso pode-se criar uma cena com vaacuterios modelos e visualizaacute-los de

qualquer ponto de vista Implementa o virtual trackball para rotacionaacute-los e

transladaacute-los Usa uma iluminaccedilatildeo simples direcional A sua arquitetura eacute

extensiacutevel permite que o usuaacuterio adicione seus proacuteprios componentes ao

sistema Possui trecircs tipos de componentes

ldquoToolsrdquo fornece funcionalidades para ediccedilatildeo interativa de superfiacutecie Satildeo

disponibilizados na ldquotoolbarrdquo

Plugins fornece funcionalidades para processar em um soacute passo

modelos ou partes deles selecionadas Satildeo disponibilizados no menu ldquoPluginsrdquo

Renderes fornece funcionalidades de display para os modelos

Para esta dissertaccedilatildeo foi escolhida a construccedilatildeo do componente Plugin

por adequar-se agrave nossa proposta e ser a mais simples de ser construiacuteda O

PointShop [11] jaacute conteacutem uma tool que executa operaccedilotildees booleanas e

deformaccedilatildeo free-form sobre os modelos carregados na cena usando o meacutetodo

de Pauly [3] apresentado no capiacutetulo 4 O nosso plugin Operaccedilotildees Booleanas

implementa o algoritmo descrito na seccedilatildeo anterior baseado na proposta de

Melhorias Propostas 57

Adams e Dutreacute [2] Uma comparaccedilatildeo entre o nosso plugin e a tool de Pauly [3] eacute

feita no capiacutetulo 6

Figura 28-Menu do PointShop com o plugin e as opccedilotildees para operaccedilotildees booleanas

Para se executar o plugin o usuaacuterio precisa carregar dois modelos na

cena do PointShop acionar o plugin informando a operaccedilatildeo que seraacute executada

O plugin executaraacute o algoritmo acima proposto e carregaraacute o resultado na cena

do Pointshop retirando os modelos anteriores

521 Estruturas de Dados

Como vimos o software PointShop [11] trabalha com modelos por pontos

Um modelo deste software descrito na seccedilatildeo 42 conteacutem todas as informaccedilotildees

que o algoritmo proposto em Bart [2] necessita Abaixo relacionamos as

Melhorias Propostas 58

principais estruturas de dados do PointShop usadas no plugin e as principais

estruturas de dados do nosso plugin

As principais classes do PointShop usadas no plugin satildeo

Classe Scene

Classe Objects

Classe SurfelColections

Classe Surfel

Classe StatusBar

Classe Transformer

A hierarquia de dados eacute a seguinte a Scene conteacutem vaacuterios Objects os

quais conteacutem SurfelColections Cada SurfelColections conteacutem Surfels que

suportam uma ou mais propriedades tais como cor difusa cor especular

Classe Scene Classe que representa uma cena que conteacutem modelos

Classe Object Um modelo eacute representado pela classe Object que

conteacutem uma SurfelCollection e as matrizes de transformaccedilatildeo para rotaccedilatildeo

escala e translaccedilatildeo Cada Object eacute identificado pelo seu nome que eacute uacutenico na

Scene O meacutetodo getUniqueName retorna um nome uacutenico Cada Object tem sua

proacutepria matriz de transformaccedilatildeo que pode ser modificada com setRotation

rotate setPosition translate setScale e scale Objects podem ser copiados com

copy Objects consiste em um conjunto de surfels os quais podem ser

recuperados pela getSurfelCollection O Object pode ser ativado com

setActiveObject e recuperado com getActiveObject

Objects podem ser adicionados ou removidos com addObject e

removeObject Os Objects podem ser obtidos pela getFirstObject e

getNextObject

Classe SurfelCollection representa o conjunto de surfels de um modelo

Cada surfelcollection consiste em um conjunto de surfels (SurfelInterface) de

tamanho obtido por getNofSurfels Os surfels podem ser recuperados com

getFirstSurfel getCurrentSurfel e getNextSurfel

A SurfelCollection conteacutem um PropertyDescriptor e uma SurfelList

A SurfelList eacute uma lista duplamente encadeada de surfels Possui os

atributos firstSurfel lastSurfel currentSurfel que satildeo ponteiros para uma

SurfelInterface nSurfels que eacute o nuacutemero de Surfels

A SurfelInterface define a API para os surfels que satildeo os menores

elementos que compotildeem um Object Podem ser considerados como pontos com

uma normal que define a orientaccedilatildeo do ciacuterculo (ou elipse) que seraacute desenhado

Melhorias Propostas 59

tatildeo logo o surfel seja renderizado Tem como atributos dois ponteiros (next e

prev) para SurfelInterface

PropertyDescriptor consiste em ateacute 32 valores descrevendo quais as

propriedades a SurfelInterface suporta

Classe Surfel classe que representa o surfel

Classe StatusBar classe que imprime mensagens na tela Os plugins

podem mandar mensagens para o usuaacuterio pela StatusBar

Mensagens texto podem ser impressas com showMessage O progresso

de uma operaccedilatildeo pode ser indicado com setProgress ou resetProgress

Classe Transformer representa a transformaccedilatildeo entre sistemas de

coordenadas Esta classe fornece meacutetodos para transformar pontos e vetores

entre os diferentes sistemas de coordenadas do Pointshop

A seguir apresentamos as principais estruturas de dados do plugin

Operaccedilotildees Booleanas

As principais estruturas de dados do plugin satildeo boundingbox tree no

lista_surfel surfel

Boundingbox conteacutem dois pontos 3D que definem uma caixa que conteacutem

o modelo um ponto com menores coordenadas xy e z e outro ponto com

maiores xyz

Tree representa a octree do modelo Cada registro conteacutem um ponteiro

para um noacute e oito ponteiros para as 8 octrees filhas

No representa um noacute da octree Conteacutem os seguintes dados

- localizaccedilatildeo do noacute que eacute o canto inferior esquerdo do noacute

- lista_surfel (preenchida apenas para noacutes folha cheios)

- quantidade de surfels do noacute

- classificaccedilatildeo do noacute como dentro fora ou contorno

- classificaccedilatildeo do noacute em relaccedilatildeo a outro modelo

- indica se o noacute eacute folha ou natildeo

- vetor que eacute a meacutedia das normais dos surfels do noacute

- ponto que eacute a meacutedia das localizaccedilotildees dos surfels do noacute

- surfel que tem (entre todos os surfels do noacute) o maior produto interno

entre a sua normal e a normal meacutedia

- surfel que tem (entre todos os surfels do noacute) o menor produto interno

entre a sua normal e a normal meacutedia

- produto interno maacuteximo e miacutenimo entre as normais dos surfels do noacute e a

normal meacutedia deste noacute

Melhorias Propostas 60

- indica se o noacute conteacutem surfels com normais em sentido oposto (produto

interno entre elas eacute menor que zero)

- classificaccedilatildeo dos oito cantos do noacute

lista_surfels lista em que cada registro conteacutem um apontador para um

surfel e um apontador para o proacuteximo registro

surfel representa o surfel da octree Conteacutem a classificaccedilatildeo em relaccedilatildeo a

outro modelo e um ponteiro para o surfel do Poinshop

Resultados 61

6 Resultados

Neste capiacutetulo apresentamos os testes realizados com o plugin para o

PointShop implementado para esta dissertaccedilatildeo a comparaccedilatildeo deste plugin com

o plugin de Pauly [3] e a comparaccedilatildeo entre o meacutetodo de Adams e Dutreacute [2] e o

meacutetodo de Pauly [3]

61 Testes

Os testes foram feitos em um PC x86 Family 6 261600 KB de RAM sem

placa graacutefica sistema operacional Windows 2000 O plugin foi implementado na

linguagem C

Os modelos usados para os testes satildeo modelos disponibilizados no

PointShop [11] Vale lembrar que o meacutetodo implementado em nosso plugin eacute

restrito a modelos soacutelidos e portanto foram usados apenas estes modelos

soacutelidos para os testes

O modelo na Figura 29 que eacute um dos modelos disponibilizados no

PointShop [11] foi usado para mostrar o resultado das operaccedilotildees realizadas

pelo plugin implementado nesta dissertaccedilatildeo O modelo Igea eacute um modelo soacutelido

que conteacutem 134345 surfels

Resultados 62

Figura 29-Modelo do PointShop Igea

Para realizar as operaccedilotildees este modelo foi carregado na cena do

PointShop duas vezes e um deles colorido de vermelho As Figuras 30 31 32

mostram o resultado da operaccedilatildeo de uniatildeo interseccedilatildeo e diferenccedila

respectivamente Os nuacutemeros de surfels dos modelos resultantes satildeo mostrados

na Tabela 2

Resultados 63

Figura 30-Resultado da uniatildeo de duas Igeas

Figura 31-Resultado da interseccedilatildeo de duas Igeas

Resultados 64

Figura 32-Resultado da diferenccedila entre duas Igeas

Tabela 2-Nuacutemero de surfels dos modelos resultantes

Observamos que o nuacutemero de surfels dos modelos resultantes estaacute

coerente com as figuras dos seus modelos

Para avaliar o tempo de processamento das operaccedilotildees foram realizados

vaacuterios testes com o objetivo de obter uma meacutedia dos tempos de realizaccedilatildeo de

cada operaccedilatildeo Tambeacutem foram armazenados os tempos da criaccedilatildeo das duas

octrees e da classificaccedilatildeo de todos os surfels dos dois objetos (como dentro ou

fora do outro modelo) Estes testes foram feitos usando o modelo Igea A meacutedia

dos tempos de processamento foi calculada e os resultados satildeo mostrados na

Tabela 3 Verificamos que o maior tempo gasto eacute para criaccedilatildeo das octrees

Verificamos tambeacutem que este resultado apresentado eacute similar ao resultado

verificado empiricamente com o plugin de Pauly [3] Os tempos gastos para

realizar as operaccedilotildees satildeo similares e o maior tempo gasto no plugin de Pauly

tambeacutem eacute para inicializaccedilatildeo de suas estruturas de dados que incluem a kd-tree

Operaccedilatildeo Nuacutemero de surfels do modelo resultado

Uniatildeo 189715

Interseccedilatildeo 72225

Diferenccedila 134552

Resultados 65

Operaccedilatildeo Criaccedilatildeo das

Octrees (seg)

Classificaccedilatildeo

(seg)

Criaccedilatildeo do

resultado (seg)

Total (seg)

Uniatildeo 39375 1324 18925 7154

Interseccedilatildeo 38585 1585 09547 63982

Diferenccedila 399875 1504 1729 729475

Tabela 3- Meacutedia dos tempos de processamento para as operaccedilotildees com duas Igeas

Com o objetivo de expor melhor os resultados deste trabalho

apresentamos abaixo mais um teste das operaccedilotildees booleanas usando o nosso

plugin Os modelos usados para este segundo teste satildeo o Max Planck e o Male

ambos modelos soacutelidos disponibilizados no PointShop Estes modelos satildeo

mostrados nas figura 33 e 34

O primeiro Max Planck conteacutem 52809 surfels

Figura 33-Modelo do PointShop MaxPlanck

O segundo modelo abaixo Male conteacutem 148138 surfels

Resultados 66

Figura 34-Modelo do PointShop Male

As Figuras 353637 mostram o resultado da operaccedilatildeo de uniatildeo interseccedilatildeo

e diferenccedila respectivamente usando os dois modelos acima Podemos observar

pela figura 35 que o resultado da operaccedilatildeo de diferenccedila neste caso gerou um

modelo resultado com trecircs partes desconexas Os nuacutemeros de surfels de cada

modelo resultado satildeo mostrados na Tabela 5

Figura 35- Resultado da Uniatildeo do modelo Male com MaxPlanck

Resultados 67

Figura 36-Resultado da interseccedilatildeo do modelo Male com o MaxPlanck

Figura 37-Resultado da diferenccedila do modelo Male do modelo MaxPlanck

As meacutedias de tempos de processamento foram calculadas da mesma

forma que o primeiro teste com o modelo Igea acima apresentado Os

resultados satildeo mostrados na Tabela 4 Podemos observar que este teste

Resultados 68

apresenta tempos um pouco menores que o teste com o modelo Igea Isto se

deve ao fato de que o modelo MaxPlanck ser significativamente menor que o

modelo Igea MaxPlanck possui 52809 surfels e Igea conteacutem 134345 surfels

Operaccedilatildeo Criaccedilatildeo das

Octrees (seg)

Classificaccedilatildeo

(seg)

Criaccedilatildeo do

resultado (seg)

Total

(seg)

Uniatildeo 3012 1254 102 5285

Interseccedilatildeo 2985 0901 0861 4747

Diferenccedila 2965 0911 0791 4667

Tabela 4-Tempo de processamento das operaccedilotildees com os modelos MaxPlanck e Male

Operaccedilatildeo Nuacutemero de surfels do resultado

Uniatildeo 126532

Interseccedilatildeo 88414

Diferenccedila 77635

Tabela 5-Nuacutemero de surfels dos modelos resultados das operaccedilotildees com os modelos MaxPlanck e Male

Em seguida apresentaremos uma comparaccedilatildeo entre o nosso plugin e o

plugin de Pauly[3] e tambeacutem uma comparaccedilatildeo entre o meacutetodo de Adams e Dutreacute

[2] e o meacutetodo de Pauly [3]

62 Comparaccedilatildeo entre os dois meacutetodos que realizam operaccedilotildees booleanas

A comparaccedilatildeo entre os meacutetodos de Pauly[3] e de Adams e Dutreacute foi feita

em termos de tempo de processamento e em termos conceituais Em termos de

tempo de processamento comparamos o plugin de Pauly[3] com o nosso plugin

Em termos de tempo de processamento verifica-se empiricamente que os

dois meacutetodos apresentam tempos bastante similares Entretanto o tempo de

processamento do algoritmo aqui implementado ainda pode ser melhorado com

Resultados 69

o uso do meacutetodo TINN [19] que foi proposto em Adams[2] - para otimizar a

pesquisa do surfel mais proacuteximo a um ponto que estaacute localizado na regiatildeo de um

noacute que conteacutem surfels - veja seccedilatildeo 42 O uso deste meacutetodo natildeo foi

implementado para este trabalho e a sua implementaccedilatildeo melhoraria o tempo de

resposta do algoritmo Aleacutem disso o trabalho de Sara F Frisken [12] citado no

capiacutetulo 2 apresenta uma otimizaccedilatildeo no uso de octrees que pode ser

incorporada no algoritmo implementado neste trabalho

Em termos conceituais vamos fazer a comparaccedilatildeo do uso do que

chamamos aqui de Regra 2 do tratamento de interseccedilatildeo e do tratamento de

ldquoarestas vivasrdquo

Como vimos na seccedilatildeo 41 tanto o algoritmo implementado nesta

dissertaccedilatildeo baseado no trabalho de Adams e Dutreacute como o meacutetodo de Pauly

[3] parte do que chamamos aqui de Regra 2 para realizar operaccedilotildees booleanas

com pontos Mas cada um destes meacutetodos daacute um tratamento diferente para o

uso desta regra

O meacutetodo de Pauly usa a Regra 2 para classificaccedilatildeo de cada ponto ou de

cada surfel Para classificar um surfel de B sb como dentro ou fora de A eacute

encontrado o surfel de A sa mais proacuteximo a sb e sb eacute classificado a partir de sa

Para encontrar sa Pauly utiliza uma kd-tree Como esta pesquisa para encontrar

sa eacute cara (mesmo usando uma kd-tree) Pauly utiliza uma esfera que conteacutem

pontos com a mesma classificaccedilatildeo (seccedilatildeo 432) e diminui em 90 este nuacutemero

de pesquisas Pauly utiliza tambeacutem a representaccedilatildeo impliacutecita MLS (Moving Least

Squares) para casos em que a Regra 2 poderia falhar e para tratamento de

interseccedilotildees Entretanto o nuacutemero destes casos em que a Regra 2 poderia falhar

eacute muito pequeno E a representaccedilatildeo MLS natildeo eacute uma estrutura simples de ser

implementada Portanto natildeo encontramos vantagens em usar MLS para estes

casos O meacutetodo de Adams e Dutreacute natildeo trata estes casos e na praacutetica

apresenta resultados bastante satisfatoacuterios como foi mostrado Portanto

consideramos que valeria a pena fazer algum tratamento especial para estes

casos se fosse um procedimento simples Para a execuccedilatildeo do algoritmo de

Pauly o uso de MLS natildeo interfere significativamente porque a construccedilatildeo desta

representaccedilatildeo natildeo eacute feita somente para realizar operaccedilotildees booleanas Os testes

empiacutericos que fizemos com o algoritmo de Pauly natildeo incluem a construccedilatildeo desta

representaccedilatildeo

Aparentemente os dois algoritmos satildeo bastante parecidos um usa octrees

e o outro usa kd-tree As duas estruturas de dados satildeo simples e otimizam a

classificaccedilatildeo dos surfels de um modelo como dentro ou fora do outro modelo

Resultados 70

Mas existe uma diferenccedila conceitual entre dois que merece ser destacada O

algoritmo aqui implementado usa a Regra 2 para classificaccedilatildeo dos noacutes de uma

octree e armazena esta octree classificada (ver capiacutetulo 5) Assim na maioria dos

casos natildeo seraacute necessaacuterio encontrar o surfel mais proacuteximo para classificar um

ponto (ou um surfel) como fora ou dentro de um modelo Caso o ponto esteja em

uma aacuterea da octree classificada ele teraacute a classificaccedilatildeo dada agravequela aacuterea A

pesquisa ao surfel mais proacuteximo seraacute feita apenas nos casos em que o ponto a

ser classificado estaacute localizado entre os planos que subdividem um noacute cheio

O uso desta octree classificada levanta uma questatildeo que natildeo foi citada no

trabalho de Adams e Dutreacute que eacute a proximidade desta estrutura (armazenada)

de octree classificada com uma representaccedilatildeo volumeacutetrica do objeto Sendo

assim esta estrutura pode ser aproveitada para outras funccedilotildees aleacutem da

classificaccedilatildeo dos surfels Por exemplo podemos ter uma aproximaccedilatildeo do

volume de uma cena somando os volumes aproximados dos modelos que a

compotildeem Como o enfoque deste trabalho eacute operaccedilatildeo booleana natildeo vamos nos

aprofundar nesta questatildeo

Outra importante diferenccedila entre os dois trabalhos que jaacute foi explicada na

seccedilatildeo 432 eacute que o meacutetodo de Pauly aplica-se a modelos soacutelidos ou natildeo

soacutelidos enquanto que o meacutetodo de Adams e Dutreacute aplica-se somente a modelos

soacutelidos

Quanto ao tratamento de interseccedilatildeo em termos de visualizaccedilatildeo todos os

dois resolvem bem o problema O tratamento de interseccedilatildeo nos dois trabalhos

tambeacutem resolve o problema da validade da Regra 2 (ver seccedilatildeo 44) Entretanto

o tratamento de Adams e Dutreacute natildeo depende da renderizaccedilatildeo sendo portanto

mais portaacutevel Aleacutem disso uma desvantagem do meacutetodo de Pauly eacute o uso da

representaccedilatildeo impliacutecita MLS (ldquoMoving Least Squaresrdquo) do objeto para obter os

pontos exatamente na curva de interseccedilatildeo Esta representaccedilatildeo torna o

tratamento de interseccedilatildeo mais complexo e a vantagem apresentada natildeo eacute tatildeo

significativa para este tratamento de interseccedilatildeo

Conclusatildeo 71

7 Conclusatildeo

Concluiacutemos entatildeo que as escolhas de Adams e Dutreacute por usar uma

octree classificada e pelo tratamento dado agrave interseccedilatildeo satildeo mais abrangentes

que a escolha de Pauly E consideramos que quanto mais abrangente for uma

escolha conceitual mais resultados poderemos tirar dela No caso de Adams e

Dutreacute eles estendem o problema de classificar um ponto para classificar todo o

modelo Como foi citado ele quase fornece uma representaccedilatildeo volumeacutetrica do

modelo Esta aproximada representaccedilatildeo volumeacutetrica pode nos fornecer outras

informaccedilotildees como por exemplo o volume aproximado do modelo

Aleacutem disso o uso da representaccedilatildeo impliacutecita MLS no meacutetodo de Pauly cria

uma complexidade a mais para o meacutetodo sem apresentar vantagens para a

realizaccedilatildeo de operaccedilotildees booleanas que eacute o nosso enfoque

Logo podemos dizer que o meacutetodo de Adams e Dutreacute apresenta as

seguintes vantagens em relaccedilatildeo ao de Pauly

- a estrutura de octree classificada aleacutem de ser usada para classificaccedilatildeo

fornece informaccedilotildees adicionais como volume aproximado do objeto

- o tempo de processamento no meacutetodo de Adams e Dutreacute tende a ser

melhor que no meacutetodo de Pauly se implementadas as melhorias acima citadas e

se colocaacutessemos em consideraccedilatildeo o uso da representaccedilatildeo impliacutecita MLS

(Moving Least Squares)

- o tratamento de interseccedilatildeo de Adams e Dutreacute apresenta a vantagem da

portabilidade ou seja iraacute funcionar independente do algoritmo de renderizaccedilatildeo

utilizado

E as vantagens do meacutetodo de Pauly em relaccedilatildeo ao de Adams e Dutreacute

- a colocaccedilatildeo de surfels exatamente na curva de interseccedilatildeo

- a possibilidade de trabalhar com modelos soacutelidos ou natildeo soacutelidos

E finalizando concluiacutemos que o estudo relatado nesta dissertaccedilatildeo foi

importante por

- fornecer um breve estudo sobre modelagem por pontos uma nova e

promissora aacuterea dentro da computaccedilatildeo graacutefica

Conclusatildeo 72

- por apresentar uma avaliaccedilatildeo dos dois trabalhos existentes sobre

operaccedilotildees booleanas com pontos encontrando as vantagens de cada um

e levantando questotildees que natildeo tinham sido citadas nos trabalhos originais

- por propor e implementar melhorias ao trabalho de Adams e Dutreacute

71 Trabalhos Futuros

Nossa implementaccedilatildeo pode ser ainda evoluiacuteda com as propostas

apresentadas na seccedilatildeo 62 Como observamos o tempo de processamento do

algoritmo aqui implementado ainda pode ser melhorado com o uso do meacutetodo

TINN [19] - que foi proposto em Adams[2] - para otimizar a pesquisa do surfel

mais proacuteximo a um ponto que estaacute localizado na regiatildeo de um noacute que conteacutem

surfels Aleacutem disso o trabalho Simple and Efficient Trasversal Methods for

Quadtrees and Octrees de Sara F Frisken [12] citado no capiacutetulo 2 apresenta

uma otimizaccedilatildeo no uso de octrees Outra proposta para melhorar o tempo de

processamento do algoritmo aqui implementado eacute usar a forma de trabalhar com

octrees apresentada neste trabalho

O trabalho de Adams e Dutreacute [2] eacute aplicado apenas a objetos soacutelidos O

nosso plugin portanto aplica-se somente a este tipo de objeto Jaacute o trabalho de

Pauly[3] eacute aplicado tambeacutem a modelos natildeo soacutelidos Apresentamos como

proposta a um trabalho futuro a extensatildeo do algoritmo aqui implementado para

modelos natildeo soacutelidos O surfel pode conter uma informaccedilatildeo adicional que indica

se ele estaacute delimitando um volume ou natildeo Assim pode-se ter um modelo com

ldquopartes soacutelidasrdquo e ldquopartes natildeo soacutelidasrdquo Por exemplo a uniatildeo de um plano com

uma esfera poderia resultar numa esfera com ldquoabasrdquo (seriam as partes do plano

que estariam fora da esfera) O modelo resultado teria uma parte correspondente

a um espaccedilo 3D (esfera) e outra parte que seria uma superfiacutecie 2D posicionada

no espaccedilo 3D sem delimitar algum volume (abas)

Muitos trabalhos podem ser desenvolvidos aplicando-se o modelo por

pontos em animaccedilatildeo jogos visualizaccedilatildeo de terrenos criaccedilatildeo de protoacutetipos etc

considerando-se a eficiecircncia e simplicidade do modelo E mais especificamente

as operaccedilotildees booleanas com pontos podem ser aplicadas para criaccedilatildeo de

cenaacuterios testes de colisotildees e nestes casos a representaccedilatildeo usando octrees

pode ser mais explorada considerando-se o seu potencial de representaccedilatildeo

volumeacutetrica de um objeto

Referecircncias Bibliograacuteficas 73

8 Referecircncias Bibliograacuteficas

[1] MAumlNTYLAuml M An Introduction to Solid Modeling Computer Science Press 1988

[2] ADAMS B DUTREacute P Interactive Boolean Operations on Surfel-

Bounded Solids Proceedings of SIGGRAPH 2003 San Diego USA 2003

[3] PAULY M KEISER R KOBBELT L GROSS M Shape Modeling

with Point-Sampled Geometry SIGGRAPH 2003 Computer Graphics

Proceedings Annual Conference Series ACM Press ACM SIGGRAPH 2003

[4] LEVOY M WHITTED T The Use of Points as Display Primitives

Technical Report TR 85-022 The University of North Carolina at Chapel Hill

Department of Computer Science 1985

[5] PFISTER H ZWICKER M VAN BAAR J GROSS M 2000 Surfels

Surface Elements as Rendering Primitives SIGGRAPH 2000 pp 335ndash342 New

Orleans LA July 23-28 2000

[6] ZWICKER M PFISTER H VAN BAAR J GROSS M Surface

Splatting SIGGRAPH 2001

[7] PAULY M KOBBELT L GROSS M Multiresolution Modeling of

Point-Sampled Geometry CS Techinical Report 378 September 16 2002

[8] CURLESS B New Methods for Surface Reconstruction from Range Images PhD thesis Stanford University 1997

[9] RUSINKIEWICZ S Real-time Acquisition and Rendering of Large 3D Models PhD thesis Stanford University 2001

Referecircncias Bibliograacuteficas 74

[10] AMENTA N BERN M KAMVYSSELIS M A new Voronoi-Based

Surface Reconstruction Algorithm SIGGRAPH 98 Conference proceedings pp

415-421 New York 1998

[11] ZWICKER M PAULY M KNOLL O GROSS M Pointshop 3D an

Interactive System for Point-Based Surface Editing Proceedings of SIGGRAPH 2002 San Antonio TX July 2002

[12] FRISKEN S PERRY R Simple and Efficient Traversal Methods for

Quadtrees and Octrees Journal of Graphics Tools Vol 7 Issue 3 May 2003

[13] CORREcircA W T OLIVEIRA M M Silva C T Wang J

Modeling and Rendering of Real Environments

Revista de Informaacutetica Teoacuterica e Aplicada (Brazilian Journal of Theoretic and Applied Computing) 9(2)127-156 2002

[14] DAVIS J MARSCHNER S GARR M LEVOY M Filling Holes in

Complex Surfaces Using Volumetric Diffusion First International Symposium on 3D Data Processing Visualization Transmission June 2002

[15] RAumlSAumlNEN J Surface Splatting Theory Extensions and Implementation Masterrsquos Thesis Dept of Computer Science Helsinki

University of Technology May 28 2002

[16] PAULY M Point Primitives for Interactive Modeling and Processing of 3D Geometry PhD thesis Federal Institute of Technology (ETH)

of Zurich 2003

[17] HOPPE H DEROSE T DUCHAMP T MCDONALD J

STUELZLE W Surface Reconstruction from Unorganized Points Computer Graphics 26(2)71ndash78 July 1992

[18] ALEXA M BEHR J COHEN-OR D FLEISHMAN S LEVIN D

SILVA C T Point Set Surfaces IEEE Visualization 2001 pp 21ndash28 October

2001

Referecircncias Bibliograacuteficas 75

[19] GREENSPAN M GODIN G TALBOT J Acceleration of Binning

Nearest Neighbor Methods Proceedings of Vision Interface 2000 pp 337-

344

[20] MENCL R Reconstruction of Surfaces from Unorganized Three-Dimensional Point Clouds Dissertation Dortmund Univ 2001

[21] KRIVANEK J Representing and Rendering Surfaces With Points

httpciteseernjneccomkrivanek03representinghtml Acesso em 30 jul

2003

[22] KRISTJANSSON ET AL Approximate Boolean Operations on Free-

form Solids Proceedings of SIGGRAPH 01 2001

Melhorias Propostas 55

Interseccedilatildeo - surfels de A que estatildeo dentro de B + surfels de B que estatildeo

dentro de A

Diferenccedila A-B - surfels de A que estatildeo fora de B + surfels de B que estatildeo

dentro de A (com orientaccedilatildeo invertida)

Como natildeo foi implementado tratamento especial algum de interseccedilatildeo para

o nosso plugin os surfels que se intersectam satildeo mantidos no modelo resultado

final sem modificaccedilotildees

Descrito o algoritmo vejamos a seguir a sua implementaccedilatildeo

52 Implementaccedilatildeo

Este algoritmo foi implementado na forma de um plugin para o software

PointShop 3D [11] Este plugin foi desenvolvido na linguagem C e no sistema

operacional Windows

A escolha deste tipo de implementaccedilatildeo permitiu-nos usar o software

PointShop para os testes do algoritmo Estes testes foram feitos com os modelos

disponibilizados para o PointShop [11] Nesta seccedilatildeo apresentaremos o software

PointShop e as principais estruturas de dados usadas em nosso plugin

O Pointshop eacute um software aberto com seu coacutedigo disponiacutevel e preparado

para trabalhar com plugins Eacute um software de ediccedilatildeo de modelos 3D por pontos

Ele permite aleacutem de visualizar o modelo alterar as suas caracteriacutesticas como

cor brilho e fazer mapeamento de textura iluminaccedilatildeo filtragem (Figura 27)

Melhorias Propostas 56

Figura 27-Software PointShop 3D com dois modelos carregados na sua cena

Aleacutem disso pode-se criar uma cena com vaacuterios modelos e visualizaacute-los de

qualquer ponto de vista Implementa o virtual trackball para rotacionaacute-los e

transladaacute-los Usa uma iluminaccedilatildeo simples direcional A sua arquitetura eacute

extensiacutevel permite que o usuaacuterio adicione seus proacuteprios componentes ao

sistema Possui trecircs tipos de componentes

ldquoToolsrdquo fornece funcionalidades para ediccedilatildeo interativa de superfiacutecie Satildeo

disponibilizados na ldquotoolbarrdquo

Plugins fornece funcionalidades para processar em um soacute passo

modelos ou partes deles selecionadas Satildeo disponibilizados no menu ldquoPluginsrdquo

Renderes fornece funcionalidades de display para os modelos

Para esta dissertaccedilatildeo foi escolhida a construccedilatildeo do componente Plugin

por adequar-se agrave nossa proposta e ser a mais simples de ser construiacuteda O

PointShop [11] jaacute conteacutem uma tool que executa operaccedilotildees booleanas e

deformaccedilatildeo free-form sobre os modelos carregados na cena usando o meacutetodo

de Pauly [3] apresentado no capiacutetulo 4 O nosso plugin Operaccedilotildees Booleanas

implementa o algoritmo descrito na seccedilatildeo anterior baseado na proposta de

Melhorias Propostas 57

Adams e Dutreacute [2] Uma comparaccedilatildeo entre o nosso plugin e a tool de Pauly [3] eacute

feita no capiacutetulo 6

Figura 28-Menu do PointShop com o plugin e as opccedilotildees para operaccedilotildees booleanas

Para se executar o plugin o usuaacuterio precisa carregar dois modelos na

cena do PointShop acionar o plugin informando a operaccedilatildeo que seraacute executada

O plugin executaraacute o algoritmo acima proposto e carregaraacute o resultado na cena

do Pointshop retirando os modelos anteriores

521 Estruturas de Dados

Como vimos o software PointShop [11] trabalha com modelos por pontos

Um modelo deste software descrito na seccedilatildeo 42 conteacutem todas as informaccedilotildees

que o algoritmo proposto em Bart [2] necessita Abaixo relacionamos as

Melhorias Propostas 58

principais estruturas de dados do PointShop usadas no plugin e as principais

estruturas de dados do nosso plugin

As principais classes do PointShop usadas no plugin satildeo

Classe Scene

Classe Objects

Classe SurfelColections

Classe Surfel

Classe StatusBar

Classe Transformer

A hierarquia de dados eacute a seguinte a Scene conteacutem vaacuterios Objects os

quais conteacutem SurfelColections Cada SurfelColections conteacutem Surfels que

suportam uma ou mais propriedades tais como cor difusa cor especular

Classe Scene Classe que representa uma cena que conteacutem modelos

Classe Object Um modelo eacute representado pela classe Object que

conteacutem uma SurfelCollection e as matrizes de transformaccedilatildeo para rotaccedilatildeo

escala e translaccedilatildeo Cada Object eacute identificado pelo seu nome que eacute uacutenico na

Scene O meacutetodo getUniqueName retorna um nome uacutenico Cada Object tem sua

proacutepria matriz de transformaccedilatildeo que pode ser modificada com setRotation

rotate setPosition translate setScale e scale Objects podem ser copiados com

copy Objects consiste em um conjunto de surfels os quais podem ser

recuperados pela getSurfelCollection O Object pode ser ativado com

setActiveObject e recuperado com getActiveObject

Objects podem ser adicionados ou removidos com addObject e

removeObject Os Objects podem ser obtidos pela getFirstObject e

getNextObject

Classe SurfelCollection representa o conjunto de surfels de um modelo

Cada surfelcollection consiste em um conjunto de surfels (SurfelInterface) de

tamanho obtido por getNofSurfels Os surfels podem ser recuperados com

getFirstSurfel getCurrentSurfel e getNextSurfel

A SurfelCollection conteacutem um PropertyDescriptor e uma SurfelList

A SurfelList eacute uma lista duplamente encadeada de surfels Possui os

atributos firstSurfel lastSurfel currentSurfel que satildeo ponteiros para uma

SurfelInterface nSurfels que eacute o nuacutemero de Surfels

A SurfelInterface define a API para os surfels que satildeo os menores

elementos que compotildeem um Object Podem ser considerados como pontos com

uma normal que define a orientaccedilatildeo do ciacuterculo (ou elipse) que seraacute desenhado

Melhorias Propostas 59

tatildeo logo o surfel seja renderizado Tem como atributos dois ponteiros (next e

prev) para SurfelInterface

PropertyDescriptor consiste em ateacute 32 valores descrevendo quais as

propriedades a SurfelInterface suporta

Classe Surfel classe que representa o surfel

Classe StatusBar classe que imprime mensagens na tela Os plugins

podem mandar mensagens para o usuaacuterio pela StatusBar

Mensagens texto podem ser impressas com showMessage O progresso

de uma operaccedilatildeo pode ser indicado com setProgress ou resetProgress

Classe Transformer representa a transformaccedilatildeo entre sistemas de

coordenadas Esta classe fornece meacutetodos para transformar pontos e vetores

entre os diferentes sistemas de coordenadas do Pointshop

A seguir apresentamos as principais estruturas de dados do plugin

Operaccedilotildees Booleanas

As principais estruturas de dados do plugin satildeo boundingbox tree no

lista_surfel surfel

Boundingbox conteacutem dois pontos 3D que definem uma caixa que conteacutem

o modelo um ponto com menores coordenadas xy e z e outro ponto com

maiores xyz

Tree representa a octree do modelo Cada registro conteacutem um ponteiro

para um noacute e oito ponteiros para as 8 octrees filhas

No representa um noacute da octree Conteacutem os seguintes dados

- localizaccedilatildeo do noacute que eacute o canto inferior esquerdo do noacute

- lista_surfel (preenchida apenas para noacutes folha cheios)

- quantidade de surfels do noacute

- classificaccedilatildeo do noacute como dentro fora ou contorno

- classificaccedilatildeo do noacute em relaccedilatildeo a outro modelo

- indica se o noacute eacute folha ou natildeo

- vetor que eacute a meacutedia das normais dos surfels do noacute

- ponto que eacute a meacutedia das localizaccedilotildees dos surfels do noacute

- surfel que tem (entre todos os surfels do noacute) o maior produto interno

entre a sua normal e a normal meacutedia

- surfel que tem (entre todos os surfels do noacute) o menor produto interno

entre a sua normal e a normal meacutedia

- produto interno maacuteximo e miacutenimo entre as normais dos surfels do noacute e a

normal meacutedia deste noacute

Melhorias Propostas 60

- indica se o noacute conteacutem surfels com normais em sentido oposto (produto

interno entre elas eacute menor que zero)

- classificaccedilatildeo dos oito cantos do noacute

lista_surfels lista em que cada registro conteacutem um apontador para um

surfel e um apontador para o proacuteximo registro

surfel representa o surfel da octree Conteacutem a classificaccedilatildeo em relaccedilatildeo a

outro modelo e um ponteiro para o surfel do Poinshop

Resultados 61

6 Resultados

Neste capiacutetulo apresentamos os testes realizados com o plugin para o

PointShop implementado para esta dissertaccedilatildeo a comparaccedilatildeo deste plugin com

o plugin de Pauly [3] e a comparaccedilatildeo entre o meacutetodo de Adams e Dutreacute [2] e o

meacutetodo de Pauly [3]

61 Testes

Os testes foram feitos em um PC x86 Family 6 261600 KB de RAM sem

placa graacutefica sistema operacional Windows 2000 O plugin foi implementado na

linguagem C

Os modelos usados para os testes satildeo modelos disponibilizados no

PointShop [11] Vale lembrar que o meacutetodo implementado em nosso plugin eacute

restrito a modelos soacutelidos e portanto foram usados apenas estes modelos

soacutelidos para os testes

O modelo na Figura 29 que eacute um dos modelos disponibilizados no

PointShop [11] foi usado para mostrar o resultado das operaccedilotildees realizadas

pelo plugin implementado nesta dissertaccedilatildeo O modelo Igea eacute um modelo soacutelido

que conteacutem 134345 surfels

Resultados 62

Figura 29-Modelo do PointShop Igea

Para realizar as operaccedilotildees este modelo foi carregado na cena do

PointShop duas vezes e um deles colorido de vermelho As Figuras 30 31 32

mostram o resultado da operaccedilatildeo de uniatildeo interseccedilatildeo e diferenccedila

respectivamente Os nuacutemeros de surfels dos modelos resultantes satildeo mostrados

na Tabela 2

Resultados 63

Figura 30-Resultado da uniatildeo de duas Igeas

Figura 31-Resultado da interseccedilatildeo de duas Igeas

Resultados 64

Figura 32-Resultado da diferenccedila entre duas Igeas

Tabela 2-Nuacutemero de surfels dos modelos resultantes

Observamos que o nuacutemero de surfels dos modelos resultantes estaacute

coerente com as figuras dos seus modelos

Para avaliar o tempo de processamento das operaccedilotildees foram realizados

vaacuterios testes com o objetivo de obter uma meacutedia dos tempos de realizaccedilatildeo de

cada operaccedilatildeo Tambeacutem foram armazenados os tempos da criaccedilatildeo das duas

octrees e da classificaccedilatildeo de todos os surfels dos dois objetos (como dentro ou

fora do outro modelo) Estes testes foram feitos usando o modelo Igea A meacutedia

dos tempos de processamento foi calculada e os resultados satildeo mostrados na

Tabela 3 Verificamos que o maior tempo gasto eacute para criaccedilatildeo das octrees

Verificamos tambeacutem que este resultado apresentado eacute similar ao resultado

verificado empiricamente com o plugin de Pauly [3] Os tempos gastos para

realizar as operaccedilotildees satildeo similares e o maior tempo gasto no plugin de Pauly

tambeacutem eacute para inicializaccedilatildeo de suas estruturas de dados que incluem a kd-tree

Operaccedilatildeo Nuacutemero de surfels do modelo resultado

Uniatildeo 189715

Interseccedilatildeo 72225

Diferenccedila 134552

Resultados 65

Operaccedilatildeo Criaccedilatildeo das

Octrees (seg)

Classificaccedilatildeo

(seg)

Criaccedilatildeo do

resultado (seg)

Total (seg)

Uniatildeo 39375 1324 18925 7154

Interseccedilatildeo 38585 1585 09547 63982

Diferenccedila 399875 1504 1729 729475

Tabela 3- Meacutedia dos tempos de processamento para as operaccedilotildees com duas Igeas

Com o objetivo de expor melhor os resultados deste trabalho

apresentamos abaixo mais um teste das operaccedilotildees booleanas usando o nosso

plugin Os modelos usados para este segundo teste satildeo o Max Planck e o Male

ambos modelos soacutelidos disponibilizados no PointShop Estes modelos satildeo

mostrados nas figura 33 e 34

O primeiro Max Planck conteacutem 52809 surfels

Figura 33-Modelo do PointShop MaxPlanck

O segundo modelo abaixo Male conteacutem 148138 surfels

Resultados 66

Figura 34-Modelo do PointShop Male

As Figuras 353637 mostram o resultado da operaccedilatildeo de uniatildeo interseccedilatildeo

e diferenccedila respectivamente usando os dois modelos acima Podemos observar

pela figura 35 que o resultado da operaccedilatildeo de diferenccedila neste caso gerou um

modelo resultado com trecircs partes desconexas Os nuacutemeros de surfels de cada

modelo resultado satildeo mostrados na Tabela 5

Figura 35- Resultado da Uniatildeo do modelo Male com MaxPlanck

Resultados 67

Figura 36-Resultado da interseccedilatildeo do modelo Male com o MaxPlanck

Figura 37-Resultado da diferenccedila do modelo Male do modelo MaxPlanck

As meacutedias de tempos de processamento foram calculadas da mesma

forma que o primeiro teste com o modelo Igea acima apresentado Os

resultados satildeo mostrados na Tabela 4 Podemos observar que este teste

Resultados 68

apresenta tempos um pouco menores que o teste com o modelo Igea Isto se

deve ao fato de que o modelo MaxPlanck ser significativamente menor que o

modelo Igea MaxPlanck possui 52809 surfels e Igea conteacutem 134345 surfels

Operaccedilatildeo Criaccedilatildeo das

Octrees (seg)

Classificaccedilatildeo

(seg)

Criaccedilatildeo do

resultado (seg)

Total

(seg)

Uniatildeo 3012 1254 102 5285

Interseccedilatildeo 2985 0901 0861 4747

Diferenccedila 2965 0911 0791 4667

Tabela 4-Tempo de processamento das operaccedilotildees com os modelos MaxPlanck e Male

Operaccedilatildeo Nuacutemero de surfels do resultado

Uniatildeo 126532

Interseccedilatildeo 88414

Diferenccedila 77635

Tabela 5-Nuacutemero de surfels dos modelos resultados das operaccedilotildees com os modelos MaxPlanck e Male

Em seguida apresentaremos uma comparaccedilatildeo entre o nosso plugin e o

plugin de Pauly[3] e tambeacutem uma comparaccedilatildeo entre o meacutetodo de Adams e Dutreacute

[2] e o meacutetodo de Pauly [3]

62 Comparaccedilatildeo entre os dois meacutetodos que realizam operaccedilotildees booleanas

A comparaccedilatildeo entre os meacutetodos de Pauly[3] e de Adams e Dutreacute foi feita

em termos de tempo de processamento e em termos conceituais Em termos de

tempo de processamento comparamos o plugin de Pauly[3] com o nosso plugin

Em termos de tempo de processamento verifica-se empiricamente que os

dois meacutetodos apresentam tempos bastante similares Entretanto o tempo de

processamento do algoritmo aqui implementado ainda pode ser melhorado com

Resultados 69

o uso do meacutetodo TINN [19] que foi proposto em Adams[2] - para otimizar a

pesquisa do surfel mais proacuteximo a um ponto que estaacute localizado na regiatildeo de um

noacute que conteacutem surfels - veja seccedilatildeo 42 O uso deste meacutetodo natildeo foi

implementado para este trabalho e a sua implementaccedilatildeo melhoraria o tempo de

resposta do algoritmo Aleacutem disso o trabalho de Sara F Frisken [12] citado no

capiacutetulo 2 apresenta uma otimizaccedilatildeo no uso de octrees que pode ser

incorporada no algoritmo implementado neste trabalho

Em termos conceituais vamos fazer a comparaccedilatildeo do uso do que

chamamos aqui de Regra 2 do tratamento de interseccedilatildeo e do tratamento de

ldquoarestas vivasrdquo

Como vimos na seccedilatildeo 41 tanto o algoritmo implementado nesta

dissertaccedilatildeo baseado no trabalho de Adams e Dutreacute como o meacutetodo de Pauly

[3] parte do que chamamos aqui de Regra 2 para realizar operaccedilotildees booleanas

com pontos Mas cada um destes meacutetodos daacute um tratamento diferente para o

uso desta regra

O meacutetodo de Pauly usa a Regra 2 para classificaccedilatildeo de cada ponto ou de

cada surfel Para classificar um surfel de B sb como dentro ou fora de A eacute

encontrado o surfel de A sa mais proacuteximo a sb e sb eacute classificado a partir de sa

Para encontrar sa Pauly utiliza uma kd-tree Como esta pesquisa para encontrar

sa eacute cara (mesmo usando uma kd-tree) Pauly utiliza uma esfera que conteacutem

pontos com a mesma classificaccedilatildeo (seccedilatildeo 432) e diminui em 90 este nuacutemero

de pesquisas Pauly utiliza tambeacutem a representaccedilatildeo impliacutecita MLS (Moving Least

Squares) para casos em que a Regra 2 poderia falhar e para tratamento de

interseccedilotildees Entretanto o nuacutemero destes casos em que a Regra 2 poderia falhar

eacute muito pequeno E a representaccedilatildeo MLS natildeo eacute uma estrutura simples de ser

implementada Portanto natildeo encontramos vantagens em usar MLS para estes

casos O meacutetodo de Adams e Dutreacute natildeo trata estes casos e na praacutetica

apresenta resultados bastante satisfatoacuterios como foi mostrado Portanto

consideramos que valeria a pena fazer algum tratamento especial para estes

casos se fosse um procedimento simples Para a execuccedilatildeo do algoritmo de

Pauly o uso de MLS natildeo interfere significativamente porque a construccedilatildeo desta

representaccedilatildeo natildeo eacute feita somente para realizar operaccedilotildees booleanas Os testes

empiacutericos que fizemos com o algoritmo de Pauly natildeo incluem a construccedilatildeo desta

representaccedilatildeo

Aparentemente os dois algoritmos satildeo bastante parecidos um usa octrees

e o outro usa kd-tree As duas estruturas de dados satildeo simples e otimizam a

classificaccedilatildeo dos surfels de um modelo como dentro ou fora do outro modelo

Resultados 70

Mas existe uma diferenccedila conceitual entre dois que merece ser destacada O

algoritmo aqui implementado usa a Regra 2 para classificaccedilatildeo dos noacutes de uma

octree e armazena esta octree classificada (ver capiacutetulo 5) Assim na maioria dos

casos natildeo seraacute necessaacuterio encontrar o surfel mais proacuteximo para classificar um

ponto (ou um surfel) como fora ou dentro de um modelo Caso o ponto esteja em

uma aacuterea da octree classificada ele teraacute a classificaccedilatildeo dada agravequela aacuterea A

pesquisa ao surfel mais proacuteximo seraacute feita apenas nos casos em que o ponto a

ser classificado estaacute localizado entre os planos que subdividem um noacute cheio

O uso desta octree classificada levanta uma questatildeo que natildeo foi citada no

trabalho de Adams e Dutreacute que eacute a proximidade desta estrutura (armazenada)

de octree classificada com uma representaccedilatildeo volumeacutetrica do objeto Sendo

assim esta estrutura pode ser aproveitada para outras funccedilotildees aleacutem da

classificaccedilatildeo dos surfels Por exemplo podemos ter uma aproximaccedilatildeo do

volume de uma cena somando os volumes aproximados dos modelos que a

compotildeem Como o enfoque deste trabalho eacute operaccedilatildeo booleana natildeo vamos nos

aprofundar nesta questatildeo

Outra importante diferenccedila entre os dois trabalhos que jaacute foi explicada na

seccedilatildeo 432 eacute que o meacutetodo de Pauly aplica-se a modelos soacutelidos ou natildeo

soacutelidos enquanto que o meacutetodo de Adams e Dutreacute aplica-se somente a modelos

soacutelidos

Quanto ao tratamento de interseccedilatildeo em termos de visualizaccedilatildeo todos os

dois resolvem bem o problema O tratamento de interseccedilatildeo nos dois trabalhos

tambeacutem resolve o problema da validade da Regra 2 (ver seccedilatildeo 44) Entretanto

o tratamento de Adams e Dutreacute natildeo depende da renderizaccedilatildeo sendo portanto

mais portaacutevel Aleacutem disso uma desvantagem do meacutetodo de Pauly eacute o uso da

representaccedilatildeo impliacutecita MLS (ldquoMoving Least Squaresrdquo) do objeto para obter os

pontos exatamente na curva de interseccedilatildeo Esta representaccedilatildeo torna o

tratamento de interseccedilatildeo mais complexo e a vantagem apresentada natildeo eacute tatildeo

significativa para este tratamento de interseccedilatildeo

Conclusatildeo 71

7 Conclusatildeo

Concluiacutemos entatildeo que as escolhas de Adams e Dutreacute por usar uma

octree classificada e pelo tratamento dado agrave interseccedilatildeo satildeo mais abrangentes

que a escolha de Pauly E consideramos que quanto mais abrangente for uma

escolha conceitual mais resultados poderemos tirar dela No caso de Adams e

Dutreacute eles estendem o problema de classificar um ponto para classificar todo o

modelo Como foi citado ele quase fornece uma representaccedilatildeo volumeacutetrica do

modelo Esta aproximada representaccedilatildeo volumeacutetrica pode nos fornecer outras

informaccedilotildees como por exemplo o volume aproximado do modelo

Aleacutem disso o uso da representaccedilatildeo impliacutecita MLS no meacutetodo de Pauly cria

uma complexidade a mais para o meacutetodo sem apresentar vantagens para a

realizaccedilatildeo de operaccedilotildees booleanas que eacute o nosso enfoque

Logo podemos dizer que o meacutetodo de Adams e Dutreacute apresenta as

seguintes vantagens em relaccedilatildeo ao de Pauly

- a estrutura de octree classificada aleacutem de ser usada para classificaccedilatildeo

fornece informaccedilotildees adicionais como volume aproximado do objeto

- o tempo de processamento no meacutetodo de Adams e Dutreacute tende a ser

melhor que no meacutetodo de Pauly se implementadas as melhorias acima citadas e

se colocaacutessemos em consideraccedilatildeo o uso da representaccedilatildeo impliacutecita MLS

(Moving Least Squares)

- o tratamento de interseccedilatildeo de Adams e Dutreacute apresenta a vantagem da

portabilidade ou seja iraacute funcionar independente do algoritmo de renderizaccedilatildeo

utilizado

E as vantagens do meacutetodo de Pauly em relaccedilatildeo ao de Adams e Dutreacute

- a colocaccedilatildeo de surfels exatamente na curva de interseccedilatildeo

- a possibilidade de trabalhar com modelos soacutelidos ou natildeo soacutelidos

E finalizando concluiacutemos que o estudo relatado nesta dissertaccedilatildeo foi

importante por

- fornecer um breve estudo sobre modelagem por pontos uma nova e

promissora aacuterea dentro da computaccedilatildeo graacutefica

Conclusatildeo 72

- por apresentar uma avaliaccedilatildeo dos dois trabalhos existentes sobre

operaccedilotildees booleanas com pontos encontrando as vantagens de cada um

e levantando questotildees que natildeo tinham sido citadas nos trabalhos originais

- por propor e implementar melhorias ao trabalho de Adams e Dutreacute

71 Trabalhos Futuros

Nossa implementaccedilatildeo pode ser ainda evoluiacuteda com as propostas

apresentadas na seccedilatildeo 62 Como observamos o tempo de processamento do

algoritmo aqui implementado ainda pode ser melhorado com o uso do meacutetodo

TINN [19] - que foi proposto em Adams[2] - para otimizar a pesquisa do surfel

mais proacuteximo a um ponto que estaacute localizado na regiatildeo de um noacute que conteacutem

surfels Aleacutem disso o trabalho Simple and Efficient Trasversal Methods for

Quadtrees and Octrees de Sara F Frisken [12] citado no capiacutetulo 2 apresenta

uma otimizaccedilatildeo no uso de octrees Outra proposta para melhorar o tempo de

processamento do algoritmo aqui implementado eacute usar a forma de trabalhar com

octrees apresentada neste trabalho

O trabalho de Adams e Dutreacute [2] eacute aplicado apenas a objetos soacutelidos O

nosso plugin portanto aplica-se somente a este tipo de objeto Jaacute o trabalho de

Pauly[3] eacute aplicado tambeacutem a modelos natildeo soacutelidos Apresentamos como

proposta a um trabalho futuro a extensatildeo do algoritmo aqui implementado para

modelos natildeo soacutelidos O surfel pode conter uma informaccedilatildeo adicional que indica

se ele estaacute delimitando um volume ou natildeo Assim pode-se ter um modelo com

ldquopartes soacutelidasrdquo e ldquopartes natildeo soacutelidasrdquo Por exemplo a uniatildeo de um plano com

uma esfera poderia resultar numa esfera com ldquoabasrdquo (seriam as partes do plano

que estariam fora da esfera) O modelo resultado teria uma parte correspondente

a um espaccedilo 3D (esfera) e outra parte que seria uma superfiacutecie 2D posicionada

no espaccedilo 3D sem delimitar algum volume (abas)

Muitos trabalhos podem ser desenvolvidos aplicando-se o modelo por

pontos em animaccedilatildeo jogos visualizaccedilatildeo de terrenos criaccedilatildeo de protoacutetipos etc

considerando-se a eficiecircncia e simplicidade do modelo E mais especificamente

as operaccedilotildees booleanas com pontos podem ser aplicadas para criaccedilatildeo de

cenaacuterios testes de colisotildees e nestes casos a representaccedilatildeo usando octrees

pode ser mais explorada considerando-se o seu potencial de representaccedilatildeo

volumeacutetrica de um objeto

Referecircncias Bibliograacuteficas 73

8 Referecircncias Bibliograacuteficas

[1] MAumlNTYLAuml M An Introduction to Solid Modeling Computer Science Press 1988

[2] ADAMS B DUTREacute P Interactive Boolean Operations on Surfel-

Bounded Solids Proceedings of SIGGRAPH 2003 San Diego USA 2003

[3] PAULY M KEISER R KOBBELT L GROSS M Shape Modeling

with Point-Sampled Geometry SIGGRAPH 2003 Computer Graphics

Proceedings Annual Conference Series ACM Press ACM SIGGRAPH 2003

[4] LEVOY M WHITTED T The Use of Points as Display Primitives

Technical Report TR 85-022 The University of North Carolina at Chapel Hill

Department of Computer Science 1985

[5] PFISTER H ZWICKER M VAN BAAR J GROSS M 2000 Surfels

Surface Elements as Rendering Primitives SIGGRAPH 2000 pp 335ndash342 New

Orleans LA July 23-28 2000

[6] ZWICKER M PFISTER H VAN BAAR J GROSS M Surface

Splatting SIGGRAPH 2001

[7] PAULY M KOBBELT L GROSS M Multiresolution Modeling of

Point-Sampled Geometry CS Techinical Report 378 September 16 2002

[8] CURLESS B New Methods for Surface Reconstruction from Range Images PhD thesis Stanford University 1997

[9] RUSINKIEWICZ S Real-time Acquisition and Rendering of Large 3D Models PhD thesis Stanford University 2001

Referecircncias Bibliograacuteficas 74

[10] AMENTA N BERN M KAMVYSSELIS M A new Voronoi-Based

Surface Reconstruction Algorithm SIGGRAPH 98 Conference proceedings pp

415-421 New York 1998

[11] ZWICKER M PAULY M KNOLL O GROSS M Pointshop 3D an

Interactive System for Point-Based Surface Editing Proceedings of SIGGRAPH 2002 San Antonio TX July 2002

[12] FRISKEN S PERRY R Simple and Efficient Traversal Methods for

Quadtrees and Octrees Journal of Graphics Tools Vol 7 Issue 3 May 2003

[13] CORREcircA W T OLIVEIRA M M Silva C T Wang J

Modeling and Rendering of Real Environments

Revista de Informaacutetica Teoacuterica e Aplicada (Brazilian Journal of Theoretic and Applied Computing) 9(2)127-156 2002

[14] DAVIS J MARSCHNER S GARR M LEVOY M Filling Holes in

Complex Surfaces Using Volumetric Diffusion First International Symposium on 3D Data Processing Visualization Transmission June 2002

[15] RAumlSAumlNEN J Surface Splatting Theory Extensions and Implementation Masterrsquos Thesis Dept of Computer Science Helsinki

University of Technology May 28 2002

[16] PAULY M Point Primitives for Interactive Modeling and Processing of 3D Geometry PhD thesis Federal Institute of Technology (ETH)

of Zurich 2003

[17] HOPPE H DEROSE T DUCHAMP T MCDONALD J

STUELZLE W Surface Reconstruction from Unorganized Points Computer Graphics 26(2)71ndash78 July 1992

[18] ALEXA M BEHR J COHEN-OR D FLEISHMAN S LEVIN D

SILVA C T Point Set Surfaces IEEE Visualization 2001 pp 21ndash28 October

2001

Referecircncias Bibliograacuteficas 75

[19] GREENSPAN M GODIN G TALBOT J Acceleration of Binning

Nearest Neighbor Methods Proceedings of Vision Interface 2000 pp 337-

344

[20] MENCL R Reconstruction of Surfaces from Unorganized Three-Dimensional Point Clouds Dissertation Dortmund Univ 2001

[21] KRIVANEK J Representing and Rendering Surfaces With Points

httpciteseernjneccomkrivanek03representinghtml Acesso em 30 jul

2003

[22] KRISTJANSSON ET AL Approximate Boolean Operations on Free-

form Solids Proceedings of SIGGRAPH 01 2001

Melhorias Propostas 56

Figura 27-Software PointShop 3D com dois modelos carregados na sua cena

Aleacutem disso pode-se criar uma cena com vaacuterios modelos e visualizaacute-los de

qualquer ponto de vista Implementa o virtual trackball para rotacionaacute-los e

transladaacute-los Usa uma iluminaccedilatildeo simples direcional A sua arquitetura eacute

extensiacutevel permite que o usuaacuterio adicione seus proacuteprios componentes ao

sistema Possui trecircs tipos de componentes

ldquoToolsrdquo fornece funcionalidades para ediccedilatildeo interativa de superfiacutecie Satildeo

disponibilizados na ldquotoolbarrdquo

Plugins fornece funcionalidades para processar em um soacute passo

modelos ou partes deles selecionadas Satildeo disponibilizados no menu ldquoPluginsrdquo

Renderes fornece funcionalidades de display para os modelos

Para esta dissertaccedilatildeo foi escolhida a construccedilatildeo do componente Plugin

por adequar-se agrave nossa proposta e ser a mais simples de ser construiacuteda O

PointShop [11] jaacute conteacutem uma tool que executa operaccedilotildees booleanas e

deformaccedilatildeo free-form sobre os modelos carregados na cena usando o meacutetodo

de Pauly [3] apresentado no capiacutetulo 4 O nosso plugin Operaccedilotildees Booleanas

implementa o algoritmo descrito na seccedilatildeo anterior baseado na proposta de

Melhorias Propostas 57

Adams e Dutreacute [2] Uma comparaccedilatildeo entre o nosso plugin e a tool de Pauly [3] eacute

feita no capiacutetulo 6

Figura 28-Menu do PointShop com o plugin e as opccedilotildees para operaccedilotildees booleanas

Para se executar o plugin o usuaacuterio precisa carregar dois modelos na

cena do PointShop acionar o plugin informando a operaccedilatildeo que seraacute executada

O plugin executaraacute o algoritmo acima proposto e carregaraacute o resultado na cena

do Pointshop retirando os modelos anteriores

521 Estruturas de Dados

Como vimos o software PointShop [11] trabalha com modelos por pontos

Um modelo deste software descrito na seccedilatildeo 42 conteacutem todas as informaccedilotildees

que o algoritmo proposto em Bart [2] necessita Abaixo relacionamos as

Melhorias Propostas 58

principais estruturas de dados do PointShop usadas no plugin e as principais

estruturas de dados do nosso plugin

As principais classes do PointShop usadas no plugin satildeo

Classe Scene

Classe Objects

Classe SurfelColections

Classe Surfel

Classe StatusBar

Classe Transformer

A hierarquia de dados eacute a seguinte a Scene conteacutem vaacuterios Objects os

quais conteacutem SurfelColections Cada SurfelColections conteacutem Surfels que

suportam uma ou mais propriedades tais como cor difusa cor especular

Classe Scene Classe que representa uma cena que conteacutem modelos

Classe Object Um modelo eacute representado pela classe Object que

conteacutem uma SurfelCollection e as matrizes de transformaccedilatildeo para rotaccedilatildeo

escala e translaccedilatildeo Cada Object eacute identificado pelo seu nome que eacute uacutenico na

Scene O meacutetodo getUniqueName retorna um nome uacutenico Cada Object tem sua

proacutepria matriz de transformaccedilatildeo que pode ser modificada com setRotation

rotate setPosition translate setScale e scale Objects podem ser copiados com

copy Objects consiste em um conjunto de surfels os quais podem ser

recuperados pela getSurfelCollection O Object pode ser ativado com

setActiveObject e recuperado com getActiveObject

Objects podem ser adicionados ou removidos com addObject e

removeObject Os Objects podem ser obtidos pela getFirstObject e

getNextObject

Classe SurfelCollection representa o conjunto de surfels de um modelo

Cada surfelcollection consiste em um conjunto de surfels (SurfelInterface) de

tamanho obtido por getNofSurfels Os surfels podem ser recuperados com

getFirstSurfel getCurrentSurfel e getNextSurfel

A SurfelCollection conteacutem um PropertyDescriptor e uma SurfelList

A SurfelList eacute uma lista duplamente encadeada de surfels Possui os

atributos firstSurfel lastSurfel currentSurfel que satildeo ponteiros para uma

SurfelInterface nSurfels que eacute o nuacutemero de Surfels

A SurfelInterface define a API para os surfels que satildeo os menores

elementos que compotildeem um Object Podem ser considerados como pontos com

uma normal que define a orientaccedilatildeo do ciacuterculo (ou elipse) que seraacute desenhado

Melhorias Propostas 59

tatildeo logo o surfel seja renderizado Tem como atributos dois ponteiros (next e

prev) para SurfelInterface

PropertyDescriptor consiste em ateacute 32 valores descrevendo quais as

propriedades a SurfelInterface suporta

Classe Surfel classe que representa o surfel

Classe StatusBar classe que imprime mensagens na tela Os plugins

podem mandar mensagens para o usuaacuterio pela StatusBar

Mensagens texto podem ser impressas com showMessage O progresso

de uma operaccedilatildeo pode ser indicado com setProgress ou resetProgress

Classe Transformer representa a transformaccedilatildeo entre sistemas de

coordenadas Esta classe fornece meacutetodos para transformar pontos e vetores

entre os diferentes sistemas de coordenadas do Pointshop

A seguir apresentamos as principais estruturas de dados do plugin

Operaccedilotildees Booleanas

As principais estruturas de dados do plugin satildeo boundingbox tree no

lista_surfel surfel

Boundingbox conteacutem dois pontos 3D que definem uma caixa que conteacutem

o modelo um ponto com menores coordenadas xy e z e outro ponto com

maiores xyz

Tree representa a octree do modelo Cada registro conteacutem um ponteiro

para um noacute e oito ponteiros para as 8 octrees filhas

No representa um noacute da octree Conteacutem os seguintes dados

- localizaccedilatildeo do noacute que eacute o canto inferior esquerdo do noacute

- lista_surfel (preenchida apenas para noacutes folha cheios)

- quantidade de surfels do noacute

- classificaccedilatildeo do noacute como dentro fora ou contorno

- classificaccedilatildeo do noacute em relaccedilatildeo a outro modelo

- indica se o noacute eacute folha ou natildeo

- vetor que eacute a meacutedia das normais dos surfels do noacute

- ponto que eacute a meacutedia das localizaccedilotildees dos surfels do noacute

- surfel que tem (entre todos os surfels do noacute) o maior produto interno

entre a sua normal e a normal meacutedia

- surfel que tem (entre todos os surfels do noacute) o menor produto interno

entre a sua normal e a normal meacutedia

- produto interno maacuteximo e miacutenimo entre as normais dos surfels do noacute e a

normal meacutedia deste noacute

Melhorias Propostas 60

- indica se o noacute conteacutem surfels com normais em sentido oposto (produto

interno entre elas eacute menor que zero)

- classificaccedilatildeo dos oito cantos do noacute

lista_surfels lista em que cada registro conteacutem um apontador para um

surfel e um apontador para o proacuteximo registro

surfel representa o surfel da octree Conteacutem a classificaccedilatildeo em relaccedilatildeo a

outro modelo e um ponteiro para o surfel do Poinshop

Resultados 61

6 Resultados

Neste capiacutetulo apresentamos os testes realizados com o plugin para o

PointShop implementado para esta dissertaccedilatildeo a comparaccedilatildeo deste plugin com

o plugin de Pauly [3] e a comparaccedilatildeo entre o meacutetodo de Adams e Dutreacute [2] e o

meacutetodo de Pauly [3]

61 Testes

Os testes foram feitos em um PC x86 Family 6 261600 KB de RAM sem

placa graacutefica sistema operacional Windows 2000 O plugin foi implementado na

linguagem C

Os modelos usados para os testes satildeo modelos disponibilizados no

PointShop [11] Vale lembrar que o meacutetodo implementado em nosso plugin eacute

restrito a modelos soacutelidos e portanto foram usados apenas estes modelos

soacutelidos para os testes

O modelo na Figura 29 que eacute um dos modelos disponibilizados no

PointShop [11] foi usado para mostrar o resultado das operaccedilotildees realizadas

pelo plugin implementado nesta dissertaccedilatildeo O modelo Igea eacute um modelo soacutelido

que conteacutem 134345 surfels

Resultados 62

Figura 29-Modelo do PointShop Igea

Para realizar as operaccedilotildees este modelo foi carregado na cena do

PointShop duas vezes e um deles colorido de vermelho As Figuras 30 31 32

mostram o resultado da operaccedilatildeo de uniatildeo interseccedilatildeo e diferenccedila

respectivamente Os nuacutemeros de surfels dos modelos resultantes satildeo mostrados

na Tabela 2

Resultados 63

Figura 30-Resultado da uniatildeo de duas Igeas

Figura 31-Resultado da interseccedilatildeo de duas Igeas

Resultados 64

Figura 32-Resultado da diferenccedila entre duas Igeas

Tabela 2-Nuacutemero de surfels dos modelos resultantes

Observamos que o nuacutemero de surfels dos modelos resultantes estaacute

coerente com as figuras dos seus modelos

Para avaliar o tempo de processamento das operaccedilotildees foram realizados

vaacuterios testes com o objetivo de obter uma meacutedia dos tempos de realizaccedilatildeo de

cada operaccedilatildeo Tambeacutem foram armazenados os tempos da criaccedilatildeo das duas

octrees e da classificaccedilatildeo de todos os surfels dos dois objetos (como dentro ou

fora do outro modelo) Estes testes foram feitos usando o modelo Igea A meacutedia

dos tempos de processamento foi calculada e os resultados satildeo mostrados na

Tabela 3 Verificamos que o maior tempo gasto eacute para criaccedilatildeo das octrees

Verificamos tambeacutem que este resultado apresentado eacute similar ao resultado

verificado empiricamente com o plugin de Pauly [3] Os tempos gastos para

realizar as operaccedilotildees satildeo similares e o maior tempo gasto no plugin de Pauly

tambeacutem eacute para inicializaccedilatildeo de suas estruturas de dados que incluem a kd-tree

Operaccedilatildeo Nuacutemero de surfels do modelo resultado

Uniatildeo 189715

Interseccedilatildeo 72225

Diferenccedila 134552

Resultados 65

Operaccedilatildeo Criaccedilatildeo das

Octrees (seg)

Classificaccedilatildeo

(seg)

Criaccedilatildeo do

resultado (seg)

Total (seg)

Uniatildeo 39375 1324 18925 7154

Interseccedilatildeo 38585 1585 09547 63982

Diferenccedila 399875 1504 1729 729475

Tabela 3- Meacutedia dos tempos de processamento para as operaccedilotildees com duas Igeas

Com o objetivo de expor melhor os resultados deste trabalho

apresentamos abaixo mais um teste das operaccedilotildees booleanas usando o nosso

plugin Os modelos usados para este segundo teste satildeo o Max Planck e o Male

ambos modelos soacutelidos disponibilizados no PointShop Estes modelos satildeo

mostrados nas figura 33 e 34

O primeiro Max Planck conteacutem 52809 surfels

Figura 33-Modelo do PointShop MaxPlanck

O segundo modelo abaixo Male conteacutem 148138 surfels

Resultados 66

Figura 34-Modelo do PointShop Male

As Figuras 353637 mostram o resultado da operaccedilatildeo de uniatildeo interseccedilatildeo

e diferenccedila respectivamente usando os dois modelos acima Podemos observar

pela figura 35 que o resultado da operaccedilatildeo de diferenccedila neste caso gerou um

modelo resultado com trecircs partes desconexas Os nuacutemeros de surfels de cada

modelo resultado satildeo mostrados na Tabela 5

Figura 35- Resultado da Uniatildeo do modelo Male com MaxPlanck

Resultados 67

Figura 36-Resultado da interseccedilatildeo do modelo Male com o MaxPlanck

Figura 37-Resultado da diferenccedila do modelo Male do modelo MaxPlanck

As meacutedias de tempos de processamento foram calculadas da mesma

forma que o primeiro teste com o modelo Igea acima apresentado Os

resultados satildeo mostrados na Tabela 4 Podemos observar que este teste

Resultados 68

apresenta tempos um pouco menores que o teste com o modelo Igea Isto se

deve ao fato de que o modelo MaxPlanck ser significativamente menor que o

modelo Igea MaxPlanck possui 52809 surfels e Igea conteacutem 134345 surfels

Operaccedilatildeo Criaccedilatildeo das

Octrees (seg)

Classificaccedilatildeo

(seg)

Criaccedilatildeo do

resultado (seg)

Total

(seg)

Uniatildeo 3012 1254 102 5285

Interseccedilatildeo 2985 0901 0861 4747

Diferenccedila 2965 0911 0791 4667

Tabela 4-Tempo de processamento das operaccedilotildees com os modelos MaxPlanck e Male

Operaccedilatildeo Nuacutemero de surfels do resultado

Uniatildeo 126532

Interseccedilatildeo 88414

Diferenccedila 77635

Tabela 5-Nuacutemero de surfels dos modelos resultados das operaccedilotildees com os modelos MaxPlanck e Male

Em seguida apresentaremos uma comparaccedilatildeo entre o nosso plugin e o

plugin de Pauly[3] e tambeacutem uma comparaccedilatildeo entre o meacutetodo de Adams e Dutreacute

[2] e o meacutetodo de Pauly [3]

62 Comparaccedilatildeo entre os dois meacutetodos que realizam operaccedilotildees booleanas

A comparaccedilatildeo entre os meacutetodos de Pauly[3] e de Adams e Dutreacute foi feita

em termos de tempo de processamento e em termos conceituais Em termos de

tempo de processamento comparamos o plugin de Pauly[3] com o nosso plugin

Em termos de tempo de processamento verifica-se empiricamente que os

dois meacutetodos apresentam tempos bastante similares Entretanto o tempo de

processamento do algoritmo aqui implementado ainda pode ser melhorado com

Resultados 69

o uso do meacutetodo TINN [19] que foi proposto em Adams[2] - para otimizar a

pesquisa do surfel mais proacuteximo a um ponto que estaacute localizado na regiatildeo de um

noacute que conteacutem surfels - veja seccedilatildeo 42 O uso deste meacutetodo natildeo foi

implementado para este trabalho e a sua implementaccedilatildeo melhoraria o tempo de

resposta do algoritmo Aleacutem disso o trabalho de Sara F Frisken [12] citado no

capiacutetulo 2 apresenta uma otimizaccedilatildeo no uso de octrees que pode ser

incorporada no algoritmo implementado neste trabalho

Em termos conceituais vamos fazer a comparaccedilatildeo do uso do que

chamamos aqui de Regra 2 do tratamento de interseccedilatildeo e do tratamento de

ldquoarestas vivasrdquo

Como vimos na seccedilatildeo 41 tanto o algoritmo implementado nesta

dissertaccedilatildeo baseado no trabalho de Adams e Dutreacute como o meacutetodo de Pauly

[3] parte do que chamamos aqui de Regra 2 para realizar operaccedilotildees booleanas

com pontos Mas cada um destes meacutetodos daacute um tratamento diferente para o

uso desta regra

O meacutetodo de Pauly usa a Regra 2 para classificaccedilatildeo de cada ponto ou de

cada surfel Para classificar um surfel de B sb como dentro ou fora de A eacute

encontrado o surfel de A sa mais proacuteximo a sb e sb eacute classificado a partir de sa

Para encontrar sa Pauly utiliza uma kd-tree Como esta pesquisa para encontrar

sa eacute cara (mesmo usando uma kd-tree) Pauly utiliza uma esfera que conteacutem

pontos com a mesma classificaccedilatildeo (seccedilatildeo 432) e diminui em 90 este nuacutemero

de pesquisas Pauly utiliza tambeacutem a representaccedilatildeo impliacutecita MLS (Moving Least

Squares) para casos em que a Regra 2 poderia falhar e para tratamento de

interseccedilotildees Entretanto o nuacutemero destes casos em que a Regra 2 poderia falhar

eacute muito pequeno E a representaccedilatildeo MLS natildeo eacute uma estrutura simples de ser

implementada Portanto natildeo encontramos vantagens em usar MLS para estes

casos O meacutetodo de Adams e Dutreacute natildeo trata estes casos e na praacutetica

apresenta resultados bastante satisfatoacuterios como foi mostrado Portanto

consideramos que valeria a pena fazer algum tratamento especial para estes

casos se fosse um procedimento simples Para a execuccedilatildeo do algoritmo de

Pauly o uso de MLS natildeo interfere significativamente porque a construccedilatildeo desta

representaccedilatildeo natildeo eacute feita somente para realizar operaccedilotildees booleanas Os testes

empiacutericos que fizemos com o algoritmo de Pauly natildeo incluem a construccedilatildeo desta

representaccedilatildeo

Aparentemente os dois algoritmos satildeo bastante parecidos um usa octrees

e o outro usa kd-tree As duas estruturas de dados satildeo simples e otimizam a

classificaccedilatildeo dos surfels de um modelo como dentro ou fora do outro modelo

Resultados 70

Mas existe uma diferenccedila conceitual entre dois que merece ser destacada O

algoritmo aqui implementado usa a Regra 2 para classificaccedilatildeo dos noacutes de uma

octree e armazena esta octree classificada (ver capiacutetulo 5) Assim na maioria dos

casos natildeo seraacute necessaacuterio encontrar o surfel mais proacuteximo para classificar um

ponto (ou um surfel) como fora ou dentro de um modelo Caso o ponto esteja em

uma aacuterea da octree classificada ele teraacute a classificaccedilatildeo dada agravequela aacuterea A

pesquisa ao surfel mais proacuteximo seraacute feita apenas nos casos em que o ponto a

ser classificado estaacute localizado entre os planos que subdividem um noacute cheio

O uso desta octree classificada levanta uma questatildeo que natildeo foi citada no

trabalho de Adams e Dutreacute que eacute a proximidade desta estrutura (armazenada)

de octree classificada com uma representaccedilatildeo volumeacutetrica do objeto Sendo

assim esta estrutura pode ser aproveitada para outras funccedilotildees aleacutem da

classificaccedilatildeo dos surfels Por exemplo podemos ter uma aproximaccedilatildeo do

volume de uma cena somando os volumes aproximados dos modelos que a

compotildeem Como o enfoque deste trabalho eacute operaccedilatildeo booleana natildeo vamos nos

aprofundar nesta questatildeo

Outra importante diferenccedila entre os dois trabalhos que jaacute foi explicada na

seccedilatildeo 432 eacute que o meacutetodo de Pauly aplica-se a modelos soacutelidos ou natildeo

soacutelidos enquanto que o meacutetodo de Adams e Dutreacute aplica-se somente a modelos

soacutelidos

Quanto ao tratamento de interseccedilatildeo em termos de visualizaccedilatildeo todos os

dois resolvem bem o problema O tratamento de interseccedilatildeo nos dois trabalhos

tambeacutem resolve o problema da validade da Regra 2 (ver seccedilatildeo 44) Entretanto

o tratamento de Adams e Dutreacute natildeo depende da renderizaccedilatildeo sendo portanto

mais portaacutevel Aleacutem disso uma desvantagem do meacutetodo de Pauly eacute o uso da

representaccedilatildeo impliacutecita MLS (ldquoMoving Least Squaresrdquo) do objeto para obter os

pontos exatamente na curva de interseccedilatildeo Esta representaccedilatildeo torna o

tratamento de interseccedilatildeo mais complexo e a vantagem apresentada natildeo eacute tatildeo

significativa para este tratamento de interseccedilatildeo

Conclusatildeo 71

7 Conclusatildeo

Concluiacutemos entatildeo que as escolhas de Adams e Dutreacute por usar uma

octree classificada e pelo tratamento dado agrave interseccedilatildeo satildeo mais abrangentes

que a escolha de Pauly E consideramos que quanto mais abrangente for uma

escolha conceitual mais resultados poderemos tirar dela No caso de Adams e

Dutreacute eles estendem o problema de classificar um ponto para classificar todo o

modelo Como foi citado ele quase fornece uma representaccedilatildeo volumeacutetrica do

modelo Esta aproximada representaccedilatildeo volumeacutetrica pode nos fornecer outras

informaccedilotildees como por exemplo o volume aproximado do modelo

Aleacutem disso o uso da representaccedilatildeo impliacutecita MLS no meacutetodo de Pauly cria

uma complexidade a mais para o meacutetodo sem apresentar vantagens para a

realizaccedilatildeo de operaccedilotildees booleanas que eacute o nosso enfoque

Logo podemos dizer que o meacutetodo de Adams e Dutreacute apresenta as

seguintes vantagens em relaccedilatildeo ao de Pauly

- a estrutura de octree classificada aleacutem de ser usada para classificaccedilatildeo

fornece informaccedilotildees adicionais como volume aproximado do objeto

- o tempo de processamento no meacutetodo de Adams e Dutreacute tende a ser

melhor que no meacutetodo de Pauly se implementadas as melhorias acima citadas e

se colocaacutessemos em consideraccedilatildeo o uso da representaccedilatildeo impliacutecita MLS

(Moving Least Squares)

- o tratamento de interseccedilatildeo de Adams e Dutreacute apresenta a vantagem da

portabilidade ou seja iraacute funcionar independente do algoritmo de renderizaccedilatildeo

utilizado

E as vantagens do meacutetodo de Pauly em relaccedilatildeo ao de Adams e Dutreacute

- a colocaccedilatildeo de surfels exatamente na curva de interseccedilatildeo

- a possibilidade de trabalhar com modelos soacutelidos ou natildeo soacutelidos

E finalizando concluiacutemos que o estudo relatado nesta dissertaccedilatildeo foi

importante por

- fornecer um breve estudo sobre modelagem por pontos uma nova e

promissora aacuterea dentro da computaccedilatildeo graacutefica

Conclusatildeo 72

- por apresentar uma avaliaccedilatildeo dos dois trabalhos existentes sobre

operaccedilotildees booleanas com pontos encontrando as vantagens de cada um

e levantando questotildees que natildeo tinham sido citadas nos trabalhos originais

- por propor e implementar melhorias ao trabalho de Adams e Dutreacute

71 Trabalhos Futuros

Nossa implementaccedilatildeo pode ser ainda evoluiacuteda com as propostas

apresentadas na seccedilatildeo 62 Como observamos o tempo de processamento do

algoritmo aqui implementado ainda pode ser melhorado com o uso do meacutetodo

TINN [19] - que foi proposto em Adams[2] - para otimizar a pesquisa do surfel

mais proacuteximo a um ponto que estaacute localizado na regiatildeo de um noacute que conteacutem

surfels Aleacutem disso o trabalho Simple and Efficient Trasversal Methods for

Quadtrees and Octrees de Sara F Frisken [12] citado no capiacutetulo 2 apresenta

uma otimizaccedilatildeo no uso de octrees Outra proposta para melhorar o tempo de

processamento do algoritmo aqui implementado eacute usar a forma de trabalhar com

octrees apresentada neste trabalho

O trabalho de Adams e Dutreacute [2] eacute aplicado apenas a objetos soacutelidos O

nosso plugin portanto aplica-se somente a este tipo de objeto Jaacute o trabalho de

Pauly[3] eacute aplicado tambeacutem a modelos natildeo soacutelidos Apresentamos como

proposta a um trabalho futuro a extensatildeo do algoritmo aqui implementado para

modelos natildeo soacutelidos O surfel pode conter uma informaccedilatildeo adicional que indica

se ele estaacute delimitando um volume ou natildeo Assim pode-se ter um modelo com

ldquopartes soacutelidasrdquo e ldquopartes natildeo soacutelidasrdquo Por exemplo a uniatildeo de um plano com

uma esfera poderia resultar numa esfera com ldquoabasrdquo (seriam as partes do plano

que estariam fora da esfera) O modelo resultado teria uma parte correspondente

a um espaccedilo 3D (esfera) e outra parte que seria uma superfiacutecie 2D posicionada

no espaccedilo 3D sem delimitar algum volume (abas)

Muitos trabalhos podem ser desenvolvidos aplicando-se o modelo por

pontos em animaccedilatildeo jogos visualizaccedilatildeo de terrenos criaccedilatildeo de protoacutetipos etc

considerando-se a eficiecircncia e simplicidade do modelo E mais especificamente

as operaccedilotildees booleanas com pontos podem ser aplicadas para criaccedilatildeo de

cenaacuterios testes de colisotildees e nestes casos a representaccedilatildeo usando octrees

pode ser mais explorada considerando-se o seu potencial de representaccedilatildeo

volumeacutetrica de um objeto

Referecircncias Bibliograacuteficas 73

8 Referecircncias Bibliograacuteficas

[1] MAumlNTYLAuml M An Introduction to Solid Modeling Computer Science Press 1988

[2] ADAMS B DUTREacute P Interactive Boolean Operations on Surfel-

Bounded Solids Proceedings of SIGGRAPH 2003 San Diego USA 2003

[3] PAULY M KEISER R KOBBELT L GROSS M Shape Modeling

with Point-Sampled Geometry SIGGRAPH 2003 Computer Graphics

Proceedings Annual Conference Series ACM Press ACM SIGGRAPH 2003

[4] LEVOY M WHITTED T The Use of Points as Display Primitives

Technical Report TR 85-022 The University of North Carolina at Chapel Hill

Department of Computer Science 1985

[5] PFISTER H ZWICKER M VAN BAAR J GROSS M 2000 Surfels

Surface Elements as Rendering Primitives SIGGRAPH 2000 pp 335ndash342 New

Orleans LA July 23-28 2000

[6] ZWICKER M PFISTER H VAN BAAR J GROSS M Surface

Splatting SIGGRAPH 2001

[7] PAULY M KOBBELT L GROSS M Multiresolution Modeling of

Point-Sampled Geometry CS Techinical Report 378 September 16 2002

[8] CURLESS B New Methods for Surface Reconstruction from Range Images PhD thesis Stanford University 1997

[9] RUSINKIEWICZ S Real-time Acquisition and Rendering of Large 3D Models PhD thesis Stanford University 2001

Referecircncias Bibliograacuteficas 74

[10] AMENTA N BERN M KAMVYSSELIS M A new Voronoi-Based

Surface Reconstruction Algorithm SIGGRAPH 98 Conference proceedings pp

415-421 New York 1998

[11] ZWICKER M PAULY M KNOLL O GROSS M Pointshop 3D an

Interactive System for Point-Based Surface Editing Proceedings of SIGGRAPH 2002 San Antonio TX July 2002

[12] FRISKEN S PERRY R Simple and Efficient Traversal Methods for

Quadtrees and Octrees Journal of Graphics Tools Vol 7 Issue 3 May 2003

[13] CORREcircA W T OLIVEIRA M M Silva C T Wang J

Modeling and Rendering of Real Environments

Revista de Informaacutetica Teoacuterica e Aplicada (Brazilian Journal of Theoretic and Applied Computing) 9(2)127-156 2002

[14] DAVIS J MARSCHNER S GARR M LEVOY M Filling Holes in

Complex Surfaces Using Volumetric Diffusion First International Symposium on 3D Data Processing Visualization Transmission June 2002

[15] RAumlSAumlNEN J Surface Splatting Theory Extensions and Implementation Masterrsquos Thesis Dept of Computer Science Helsinki

University of Technology May 28 2002

[16] PAULY M Point Primitives for Interactive Modeling and Processing of 3D Geometry PhD thesis Federal Institute of Technology (ETH)

of Zurich 2003

[17] HOPPE H DEROSE T DUCHAMP T MCDONALD J

STUELZLE W Surface Reconstruction from Unorganized Points Computer Graphics 26(2)71ndash78 July 1992

[18] ALEXA M BEHR J COHEN-OR D FLEISHMAN S LEVIN D

SILVA C T Point Set Surfaces IEEE Visualization 2001 pp 21ndash28 October

2001

Referecircncias Bibliograacuteficas 75

[19] GREENSPAN M GODIN G TALBOT J Acceleration of Binning

Nearest Neighbor Methods Proceedings of Vision Interface 2000 pp 337-

344

[20] MENCL R Reconstruction of Surfaces from Unorganized Three-Dimensional Point Clouds Dissertation Dortmund Univ 2001

[21] KRIVANEK J Representing and Rendering Surfaces With Points

httpciteseernjneccomkrivanek03representinghtml Acesso em 30 jul

2003

[22] KRISTJANSSON ET AL Approximate Boolean Operations on Free-

form Solids Proceedings of SIGGRAPH 01 2001

Melhorias Propostas 57

Adams e Dutreacute [2] Uma comparaccedilatildeo entre o nosso plugin e a tool de Pauly [3] eacute

feita no capiacutetulo 6

Figura 28-Menu do PointShop com o plugin e as opccedilotildees para operaccedilotildees booleanas

Para se executar o plugin o usuaacuterio precisa carregar dois modelos na

cena do PointShop acionar o plugin informando a operaccedilatildeo que seraacute executada

O plugin executaraacute o algoritmo acima proposto e carregaraacute o resultado na cena

do Pointshop retirando os modelos anteriores

521 Estruturas de Dados

Como vimos o software PointShop [11] trabalha com modelos por pontos

Um modelo deste software descrito na seccedilatildeo 42 conteacutem todas as informaccedilotildees

que o algoritmo proposto em Bart [2] necessita Abaixo relacionamos as

Melhorias Propostas 58

principais estruturas de dados do PointShop usadas no plugin e as principais

estruturas de dados do nosso plugin

As principais classes do PointShop usadas no plugin satildeo

Classe Scene

Classe Objects

Classe SurfelColections

Classe Surfel

Classe StatusBar

Classe Transformer

A hierarquia de dados eacute a seguinte a Scene conteacutem vaacuterios Objects os

quais conteacutem SurfelColections Cada SurfelColections conteacutem Surfels que

suportam uma ou mais propriedades tais como cor difusa cor especular

Classe Scene Classe que representa uma cena que conteacutem modelos

Classe Object Um modelo eacute representado pela classe Object que

conteacutem uma SurfelCollection e as matrizes de transformaccedilatildeo para rotaccedilatildeo

escala e translaccedilatildeo Cada Object eacute identificado pelo seu nome que eacute uacutenico na

Scene O meacutetodo getUniqueName retorna um nome uacutenico Cada Object tem sua

proacutepria matriz de transformaccedilatildeo que pode ser modificada com setRotation

rotate setPosition translate setScale e scale Objects podem ser copiados com

copy Objects consiste em um conjunto de surfels os quais podem ser

recuperados pela getSurfelCollection O Object pode ser ativado com

setActiveObject e recuperado com getActiveObject

Objects podem ser adicionados ou removidos com addObject e

removeObject Os Objects podem ser obtidos pela getFirstObject e

getNextObject

Classe SurfelCollection representa o conjunto de surfels de um modelo

Cada surfelcollection consiste em um conjunto de surfels (SurfelInterface) de

tamanho obtido por getNofSurfels Os surfels podem ser recuperados com

getFirstSurfel getCurrentSurfel e getNextSurfel

A SurfelCollection conteacutem um PropertyDescriptor e uma SurfelList

A SurfelList eacute uma lista duplamente encadeada de surfels Possui os

atributos firstSurfel lastSurfel currentSurfel que satildeo ponteiros para uma

SurfelInterface nSurfels que eacute o nuacutemero de Surfels

A SurfelInterface define a API para os surfels que satildeo os menores

elementos que compotildeem um Object Podem ser considerados como pontos com

uma normal que define a orientaccedilatildeo do ciacuterculo (ou elipse) que seraacute desenhado

Melhorias Propostas 59

tatildeo logo o surfel seja renderizado Tem como atributos dois ponteiros (next e

prev) para SurfelInterface

PropertyDescriptor consiste em ateacute 32 valores descrevendo quais as

propriedades a SurfelInterface suporta

Classe Surfel classe que representa o surfel

Classe StatusBar classe que imprime mensagens na tela Os plugins

podem mandar mensagens para o usuaacuterio pela StatusBar

Mensagens texto podem ser impressas com showMessage O progresso

de uma operaccedilatildeo pode ser indicado com setProgress ou resetProgress

Classe Transformer representa a transformaccedilatildeo entre sistemas de

coordenadas Esta classe fornece meacutetodos para transformar pontos e vetores

entre os diferentes sistemas de coordenadas do Pointshop

A seguir apresentamos as principais estruturas de dados do plugin

Operaccedilotildees Booleanas

As principais estruturas de dados do plugin satildeo boundingbox tree no

lista_surfel surfel

Boundingbox conteacutem dois pontos 3D que definem uma caixa que conteacutem

o modelo um ponto com menores coordenadas xy e z e outro ponto com

maiores xyz

Tree representa a octree do modelo Cada registro conteacutem um ponteiro

para um noacute e oito ponteiros para as 8 octrees filhas

No representa um noacute da octree Conteacutem os seguintes dados

- localizaccedilatildeo do noacute que eacute o canto inferior esquerdo do noacute

- lista_surfel (preenchida apenas para noacutes folha cheios)

- quantidade de surfels do noacute

- classificaccedilatildeo do noacute como dentro fora ou contorno

- classificaccedilatildeo do noacute em relaccedilatildeo a outro modelo

- indica se o noacute eacute folha ou natildeo

- vetor que eacute a meacutedia das normais dos surfels do noacute

- ponto que eacute a meacutedia das localizaccedilotildees dos surfels do noacute

- surfel que tem (entre todos os surfels do noacute) o maior produto interno

entre a sua normal e a normal meacutedia

- surfel que tem (entre todos os surfels do noacute) o menor produto interno

entre a sua normal e a normal meacutedia

- produto interno maacuteximo e miacutenimo entre as normais dos surfels do noacute e a

normal meacutedia deste noacute

Melhorias Propostas 60

- indica se o noacute conteacutem surfels com normais em sentido oposto (produto

interno entre elas eacute menor que zero)

- classificaccedilatildeo dos oito cantos do noacute

lista_surfels lista em que cada registro conteacutem um apontador para um

surfel e um apontador para o proacuteximo registro

surfel representa o surfel da octree Conteacutem a classificaccedilatildeo em relaccedilatildeo a

outro modelo e um ponteiro para o surfel do Poinshop

Resultados 61

6 Resultados

Neste capiacutetulo apresentamos os testes realizados com o plugin para o

PointShop implementado para esta dissertaccedilatildeo a comparaccedilatildeo deste plugin com

o plugin de Pauly [3] e a comparaccedilatildeo entre o meacutetodo de Adams e Dutreacute [2] e o

meacutetodo de Pauly [3]

61 Testes

Os testes foram feitos em um PC x86 Family 6 261600 KB de RAM sem

placa graacutefica sistema operacional Windows 2000 O plugin foi implementado na

linguagem C

Os modelos usados para os testes satildeo modelos disponibilizados no

PointShop [11] Vale lembrar que o meacutetodo implementado em nosso plugin eacute

restrito a modelos soacutelidos e portanto foram usados apenas estes modelos

soacutelidos para os testes

O modelo na Figura 29 que eacute um dos modelos disponibilizados no

PointShop [11] foi usado para mostrar o resultado das operaccedilotildees realizadas

pelo plugin implementado nesta dissertaccedilatildeo O modelo Igea eacute um modelo soacutelido

que conteacutem 134345 surfels

Resultados 62

Figura 29-Modelo do PointShop Igea

Para realizar as operaccedilotildees este modelo foi carregado na cena do

PointShop duas vezes e um deles colorido de vermelho As Figuras 30 31 32

mostram o resultado da operaccedilatildeo de uniatildeo interseccedilatildeo e diferenccedila

respectivamente Os nuacutemeros de surfels dos modelos resultantes satildeo mostrados

na Tabela 2

Resultados 63

Figura 30-Resultado da uniatildeo de duas Igeas

Figura 31-Resultado da interseccedilatildeo de duas Igeas

Resultados 64

Figura 32-Resultado da diferenccedila entre duas Igeas

Tabela 2-Nuacutemero de surfels dos modelos resultantes

Observamos que o nuacutemero de surfels dos modelos resultantes estaacute

coerente com as figuras dos seus modelos

Para avaliar o tempo de processamento das operaccedilotildees foram realizados

vaacuterios testes com o objetivo de obter uma meacutedia dos tempos de realizaccedilatildeo de

cada operaccedilatildeo Tambeacutem foram armazenados os tempos da criaccedilatildeo das duas

octrees e da classificaccedilatildeo de todos os surfels dos dois objetos (como dentro ou

fora do outro modelo) Estes testes foram feitos usando o modelo Igea A meacutedia

dos tempos de processamento foi calculada e os resultados satildeo mostrados na

Tabela 3 Verificamos que o maior tempo gasto eacute para criaccedilatildeo das octrees

Verificamos tambeacutem que este resultado apresentado eacute similar ao resultado

verificado empiricamente com o plugin de Pauly [3] Os tempos gastos para

realizar as operaccedilotildees satildeo similares e o maior tempo gasto no plugin de Pauly

tambeacutem eacute para inicializaccedilatildeo de suas estruturas de dados que incluem a kd-tree

Operaccedilatildeo Nuacutemero de surfels do modelo resultado

Uniatildeo 189715

Interseccedilatildeo 72225

Diferenccedila 134552

Resultados 65

Operaccedilatildeo Criaccedilatildeo das

Octrees (seg)

Classificaccedilatildeo

(seg)

Criaccedilatildeo do

resultado (seg)

Total (seg)

Uniatildeo 39375 1324 18925 7154

Interseccedilatildeo 38585 1585 09547 63982

Diferenccedila 399875 1504 1729 729475

Tabela 3- Meacutedia dos tempos de processamento para as operaccedilotildees com duas Igeas

Com o objetivo de expor melhor os resultados deste trabalho

apresentamos abaixo mais um teste das operaccedilotildees booleanas usando o nosso

plugin Os modelos usados para este segundo teste satildeo o Max Planck e o Male

ambos modelos soacutelidos disponibilizados no PointShop Estes modelos satildeo

mostrados nas figura 33 e 34

O primeiro Max Planck conteacutem 52809 surfels

Figura 33-Modelo do PointShop MaxPlanck

O segundo modelo abaixo Male conteacutem 148138 surfels

Resultados 66

Figura 34-Modelo do PointShop Male

As Figuras 353637 mostram o resultado da operaccedilatildeo de uniatildeo interseccedilatildeo

e diferenccedila respectivamente usando os dois modelos acima Podemos observar

pela figura 35 que o resultado da operaccedilatildeo de diferenccedila neste caso gerou um

modelo resultado com trecircs partes desconexas Os nuacutemeros de surfels de cada

modelo resultado satildeo mostrados na Tabela 5

Figura 35- Resultado da Uniatildeo do modelo Male com MaxPlanck

Resultados 67

Figura 36-Resultado da interseccedilatildeo do modelo Male com o MaxPlanck

Figura 37-Resultado da diferenccedila do modelo Male do modelo MaxPlanck

As meacutedias de tempos de processamento foram calculadas da mesma

forma que o primeiro teste com o modelo Igea acima apresentado Os

resultados satildeo mostrados na Tabela 4 Podemos observar que este teste

Resultados 68

apresenta tempos um pouco menores que o teste com o modelo Igea Isto se

deve ao fato de que o modelo MaxPlanck ser significativamente menor que o

modelo Igea MaxPlanck possui 52809 surfels e Igea conteacutem 134345 surfels

Operaccedilatildeo Criaccedilatildeo das

Octrees (seg)

Classificaccedilatildeo

(seg)

Criaccedilatildeo do

resultado (seg)

Total

(seg)

Uniatildeo 3012 1254 102 5285

Interseccedilatildeo 2985 0901 0861 4747

Diferenccedila 2965 0911 0791 4667

Tabela 4-Tempo de processamento das operaccedilotildees com os modelos MaxPlanck e Male

Operaccedilatildeo Nuacutemero de surfels do resultado

Uniatildeo 126532

Interseccedilatildeo 88414

Diferenccedila 77635

Tabela 5-Nuacutemero de surfels dos modelos resultados das operaccedilotildees com os modelos MaxPlanck e Male

Em seguida apresentaremos uma comparaccedilatildeo entre o nosso plugin e o

plugin de Pauly[3] e tambeacutem uma comparaccedilatildeo entre o meacutetodo de Adams e Dutreacute

[2] e o meacutetodo de Pauly [3]

62 Comparaccedilatildeo entre os dois meacutetodos que realizam operaccedilotildees booleanas

A comparaccedilatildeo entre os meacutetodos de Pauly[3] e de Adams e Dutreacute foi feita

em termos de tempo de processamento e em termos conceituais Em termos de

tempo de processamento comparamos o plugin de Pauly[3] com o nosso plugin

Em termos de tempo de processamento verifica-se empiricamente que os

dois meacutetodos apresentam tempos bastante similares Entretanto o tempo de

processamento do algoritmo aqui implementado ainda pode ser melhorado com

Resultados 69

o uso do meacutetodo TINN [19] que foi proposto em Adams[2] - para otimizar a

pesquisa do surfel mais proacuteximo a um ponto que estaacute localizado na regiatildeo de um

noacute que conteacutem surfels - veja seccedilatildeo 42 O uso deste meacutetodo natildeo foi

implementado para este trabalho e a sua implementaccedilatildeo melhoraria o tempo de

resposta do algoritmo Aleacutem disso o trabalho de Sara F Frisken [12] citado no

capiacutetulo 2 apresenta uma otimizaccedilatildeo no uso de octrees que pode ser

incorporada no algoritmo implementado neste trabalho

Em termos conceituais vamos fazer a comparaccedilatildeo do uso do que

chamamos aqui de Regra 2 do tratamento de interseccedilatildeo e do tratamento de

ldquoarestas vivasrdquo

Como vimos na seccedilatildeo 41 tanto o algoritmo implementado nesta

dissertaccedilatildeo baseado no trabalho de Adams e Dutreacute como o meacutetodo de Pauly

[3] parte do que chamamos aqui de Regra 2 para realizar operaccedilotildees booleanas

com pontos Mas cada um destes meacutetodos daacute um tratamento diferente para o

uso desta regra

O meacutetodo de Pauly usa a Regra 2 para classificaccedilatildeo de cada ponto ou de

cada surfel Para classificar um surfel de B sb como dentro ou fora de A eacute

encontrado o surfel de A sa mais proacuteximo a sb e sb eacute classificado a partir de sa

Para encontrar sa Pauly utiliza uma kd-tree Como esta pesquisa para encontrar

sa eacute cara (mesmo usando uma kd-tree) Pauly utiliza uma esfera que conteacutem

pontos com a mesma classificaccedilatildeo (seccedilatildeo 432) e diminui em 90 este nuacutemero

de pesquisas Pauly utiliza tambeacutem a representaccedilatildeo impliacutecita MLS (Moving Least

Squares) para casos em que a Regra 2 poderia falhar e para tratamento de

interseccedilotildees Entretanto o nuacutemero destes casos em que a Regra 2 poderia falhar

eacute muito pequeno E a representaccedilatildeo MLS natildeo eacute uma estrutura simples de ser

implementada Portanto natildeo encontramos vantagens em usar MLS para estes

casos O meacutetodo de Adams e Dutreacute natildeo trata estes casos e na praacutetica

apresenta resultados bastante satisfatoacuterios como foi mostrado Portanto

consideramos que valeria a pena fazer algum tratamento especial para estes

casos se fosse um procedimento simples Para a execuccedilatildeo do algoritmo de

Pauly o uso de MLS natildeo interfere significativamente porque a construccedilatildeo desta

representaccedilatildeo natildeo eacute feita somente para realizar operaccedilotildees booleanas Os testes

empiacutericos que fizemos com o algoritmo de Pauly natildeo incluem a construccedilatildeo desta

representaccedilatildeo

Aparentemente os dois algoritmos satildeo bastante parecidos um usa octrees

e o outro usa kd-tree As duas estruturas de dados satildeo simples e otimizam a

classificaccedilatildeo dos surfels de um modelo como dentro ou fora do outro modelo

Resultados 70

Mas existe uma diferenccedila conceitual entre dois que merece ser destacada O

algoritmo aqui implementado usa a Regra 2 para classificaccedilatildeo dos noacutes de uma

octree e armazena esta octree classificada (ver capiacutetulo 5) Assim na maioria dos

casos natildeo seraacute necessaacuterio encontrar o surfel mais proacuteximo para classificar um

ponto (ou um surfel) como fora ou dentro de um modelo Caso o ponto esteja em

uma aacuterea da octree classificada ele teraacute a classificaccedilatildeo dada agravequela aacuterea A

pesquisa ao surfel mais proacuteximo seraacute feita apenas nos casos em que o ponto a

ser classificado estaacute localizado entre os planos que subdividem um noacute cheio

O uso desta octree classificada levanta uma questatildeo que natildeo foi citada no

trabalho de Adams e Dutreacute que eacute a proximidade desta estrutura (armazenada)

de octree classificada com uma representaccedilatildeo volumeacutetrica do objeto Sendo

assim esta estrutura pode ser aproveitada para outras funccedilotildees aleacutem da

classificaccedilatildeo dos surfels Por exemplo podemos ter uma aproximaccedilatildeo do

volume de uma cena somando os volumes aproximados dos modelos que a

compotildeem Como o enfoque deste trabalho eacute operaccedilatildeo booleana natildeo vamos nos

aprofundar nesta questatildeo

Outra importante diferenccedila entre os dois trabalhos que jaacute foi explicada na

seccedilatildeo 432 eacute que o meacutetodo de Pauly aplica-se a modelos soacutelidos ou natildeo

soacutelidos enquanto que o meacutetodo de Adams e Dutreacute aplica-se somente a modelos

soacutelidos

Quanto ao tratamento de interseccedilatildeo em termos de visualizaccedilatildeo todos os

dois resolvem bem o problema O tratamento de interseccedilatildeo nos dois trabalhos

tambeacutem resolve o problema da validade da Regra 2 (ver seccedilatildeo 44) Entretanto

o tratamento de Adams e Dutreacute natildeo depende da renderizaccedilatildeo sendo portanto

mais portaacutevel Aleacutem disso uma desvantagem do meacutetodo de Pauly eacute o uso da

representaccedilatildeo impliacutecita MLS (ldquoMoving Least Squaresrdquo) do objeto para obter os

pontos exatamente na curva de interseccedilatildeo Esta representaccedilatildeo torna o

tratamento de interseccedilatildeo mais complexo e a vantagem apresentada natildeo eacute tatildeo

significativa para este tratamento de interseccedilatildeo

Conclusatildeo 71

7 Conclusatildeo

Concluiacutemos entatildeo que as escolhas de Adams e Dutreacute por usar uma

octree classificada e pelo tratamento dado agrave interseccedilatildeo satildeo mais abrangentes

que a escolha de Pauly E consideramos que quanto mais abrangente for uma

escolha conceitual mais resultados poderemos tirar dela No caso de Adams e

Dutreacute eles estendem o problema de classificar um ponto para classificar todo o

modelo Como foi citado ele quase fornece uma representaccedilatildeo volumeacutetrica do

modelo Esta aproximada representaccedilatildeo volumeacutetrica pode nos fornecer outras

informaccedilotildees como por exemplo o volume aproximado do modelo

Aleacutem disso o uso da representaccedilatildeo impliacutecita MLS no meacutetodo de Pauly cria

uma complexidade a mais para o meacutetodo sem apresentar vantagens para a

realizaccedilatildeo de operaccedilotildees booleanas que eacute o nosso enfoque

Logo podemos dizer que o meacutetodo de Adams e Dutreacute apresenta as

seguintes vantagens em relaccedilatildeo ao de Pauly

- a estrutura de octree classificada aleacutem de ser usada para classificaccedilatildeo

fornece informaccedilotildees adicionais como volume aproximado do objeto

- o tempo de processamento no meacutetodo de Adams e Dutreacute tende a ser

melhor que no meacutetodo de Pauly se implementadas as melhorias acima citadas e

se colocaacutessemos em consideraccedilatildeo o uso da representaccedilatildeo impliacutecita MLS

(Moving Least Squares)

- o tratamento de interseccedilatildeo de Adams e Dutreacute apresenta a vantagem da

portabilidade ou seja iraacute funcionar independente do algoritmo de renderizaccedilatildeo

utilizado

E as vantagens do meacutetodo de Pauly em relaccedilatildeo ao de Adams e Dutreacute

- a colocaccedilatildeo de surfels exatamente na curva de interseccedilatildeo

- a possibilidade de trabalhar com modelos soacutelidos ou natildeo soacutelidos

E finalizando concluiacutemos que o estudo relatado nesta dissertaccedilatildeo foi

importante por

- fornecer um breve estudo sobre modelagem por pontos uma nova e

promissora aacuterea dentro da computaccedilatildeo graacutefica

Conclusatildeo 72

- por apresentar uma avaliaccedilatildeo dos dois trabalhos existentes sobre

operaccedilotildees booleanas com pontos encontrando as vantagens de cada um

e levantando questotildees que natildeo tinham sido citadas nos trabalhos originais

- por propor e implementar melhorias ao trabalho de Adams e Dutreacute

71 Trabalhos Futuros

Nossa implementaccedilatildeo pode ser ainda evoluiacuteda com as propostas

apresentadas na seccedilatildeo 62 Como observamos o tempo de processamento do

algoritmo aqui implementado ainda pode ser melhorado com o uso do meacutetodo

TINN [19] - que foi proposto em Adams[2] - para otimizar a pesquisa do surfel

mais proacuteximo a um ponto que estaacute localizado na regiatildeo de um noacute que conteacutem

surfels Aleacutem disso o trabalho Simple and Efficient Trasversal Methods for

Quadtrees and Octrees de Sara F Frisken [12] citado no capiacutetulo 2 apresenta

uma otimizaccedilatildeo no uso de octrees Outra proposta para melhorar o tempo de

processamento do algoritmo aqui implementado eacute usar a forma de trabalhar com

octrees apresentada neste trabalho

O trabalho de Adams e Dutreacute [2] eacute aplicado apenas a objetos soacutelidos O

nosso plugin portanto aplica-se somente a este tipo de objeto Jaacute o trabalho de

Pauly[3] eacute aplicado tambeacutem a modelos natildeo soacutelidos Apresentamos como

proposta a um trabalho futuro a extensatildeo do algoritmo aqui implementado para

modelos natildeo soacutelidos O surfel pode conter uma informaccedilatildeo adicional que indica

se ele estaacute delimitando um volume ou natildeo Assim pode-se ter um modelo com

ldquopartes soacutelidasrdquo e ldquopartes natildeo soacutelidasrdquo Por exemplo a uniatildeo de um plano com

uma esfera poderia resultar numa esfera com ldquoabasrdquo (seriam as partes do plano

que estariam fora da esfera) O modelo resultado teria uma parte correspondente

a um espaccedilo 3D (esfera) e outra parte que seria uma superfiacutecie 2D posicionada

no espaccedilo 3D sem delimitar algum volume (abas)

Muitos trabalhos podem ser desenvolvidos aplicando-se o modelo por

pontos em animaccedilatildeo jogos visualizaccedilatildeo de terrenos criaccedilatildeo de protoacutetipos etc

considerando-se a eficiecircncia e simplicidade do modelo E mais especificamente

as operaccedilotildees booleanas com pontos podem ser aplicadas para criaccedilatildeo de

cenaacuterios testes de colisotildees e nestes casos a representaccedilatildeo usando octrees

pode ser mais explorada considerando-se o seu potencial de representaccedilatildeo

volumeacutetrica de um objeto

Referecircncias Bibliograacuteficas 73

8 Referecircncias Bibliograacuteficas

[1] MAumlNTYLAuml M An Introduction to Solid Modeling Computer Science Press 1988

[2] ADAMS B DUTREacute P Interactive Boolean Operations on Surfel-

Bounded Solids Proceedings of SIGGRAPH 2003 San Diego USA 2003

[3] PAULY M KEISER R KOBBELT L GROSS M Shape Modeling

with Point-Sampled Geometry SIGGRAPH 2003 Computer Graphics

Proceedings Annual Conference Series ACM Press ACM SIGGRAPH 2003

[4] LEVOY M WHITTED T The Use of Points as Display Primitives

Technical Report TR 85-022 The University of North Carolina at Chapel Hill

Department of Computer Science 1985

[5] PFISTER H ZWICKER M VAN BAAR J GROSS M 2000 Surfels

Surface Elements as Rendering Primitives SIGGRAPH 2000 pp 335ndash342 New

Orleans LA July 23-28 2000

[6] ZWICKER M PFISTER H VAN BAAR J GROSS M Surface

Splatting SIGGRAPH 2001

[7] PAULY M KOBBELT L GROSS M Multiresolution Modeling of

Point-Sampled Geometry CS Techinical Report 378 September 16 2002

[8] CURLESS B New Methods for Surface Reconstruction from Range Images PhD thesis Stanford University 1997

[9] RUSINKIEWICZ S Real-time Acquisition and Rendering of Large 3D Models PhD thesis Stanford University 2001

Referecircncias Bibliograacuteficas 74

[10] AMENTA N BERN M KAMVYSSELIS M A new Voronoi-Based

Surface Reconstruction Algorithm SIGGRAPH 98 Conference proceedings pp

415-421 New York 1998

[11] ZWICKER M PAULY M KNOLL O GROSS M Pointshop 3D an

Interactive System for Point-Based Surface Editing Proceedings of SIGGRAPH 2002 San Antonio TX July 2002

[12] FRISKEN S PERRY R Simple and Efficient Traversal Methods for

Quadtrees and Octrees Journal of Graphics Tools Vol 7 Issue 3 May 2003

[13] CORREcircA W T OLIVEIRA M M Silva C T Wang J

Modeling and Rendering of Real Environments

Revista de Informaacutetica Teoacuterica e Aplicada (Brazilian Journal of Theoretic and Applied Computing) 9(2)127-156 2002

[14] DAVIS J MARSCHNER S GARR M LEVOY M Filling Holes in

Complex Surfaces Using Volumetric Diffusion First International Symposium on 3D Data Processing Visualization Transmission June 2002

[15] RAumlSAumlNEN J Surface Splatting Theory Extensions and Implementation Masterrsquos Thesis Dept of Computer Science Helsinki

University of Technology May 28 2002

[16] PAULY M Point Primitives for Interactive Modeling and Processing of 3D Geometry PhD thesis Federal Institute of Technology (ETH)

of Zurich 2003

[17] HOPPE H DEROSE T DUCHAMP T MCDONALD J

STUELZLE W Surface Reconstruction from Unorganized Points Computer Graphics 26(2)71ndash78 July 1992

[18] ALEXA M BEHR J COHEN-OR D FLEISHMAN S LEVIN D

SILVA C T Point Set Surfaces IEEE Visualization 2001 pp 21ndash28 October

2001

Referecircncias Bibliograacuteficas 75

[19] GREENSPAN M GODIN G TALBOT J Acceleration of Binning

Nearest Neighbor Methods Proceedings of Vision Interface 2000 pp 337-

344

[20] MENCL R Reconstruction of Surfaces from Unorganized Three-Dimensional Point Clouds Dissertation Dortmund Univ 2001

[21] KRIVANEK J Representing and Rendering Surfaces With Points

httpciteseernjneccomkrivanek03representinghtml Acesso em 30 jul

2003

[22] KRISTJANSSON ET AL Approximate Boolean Operations on Free-

form Solids Proceedings of SIGGRAPH 01 2001

Melhorias Propostas 58

principais estruturas de dados do PointShop usadas no plugin e as principais

estruturas de dados do nosso plugin

As principais classes do PointShop usadas no plugin satildeo

Classe Scene

Classe Objects

Classe SurfelColections

Classe Surfel

Classe StatusBar

Classe Transformer

A hierarquia de dados eacute a seguinte a Scene conteacutem vaacuterios Objects os

quais conteacutem SurfelColections Cada SurfelColections conteacutem Surfels que

suportam uma ou mais propriedades tais como cor difusa cor especular

Classe Scene Classe que representa uma cena que conteacutem modelos

Classe Object Um modelo eacute representado pela classe Object que

conteacutem uma SurfelCollection e as matrizes de transformaccedilatildeo para rotaccedilatildeo

escala e translaccedilatildeo Cada Object eacute identificado pelo seu nome que eacute uacutenico na

Scene O meacutetodo getUniqueName retorna um nome uacutenico Cada Object tem sua

proacutepria matriz de transformaccedilatildeo que pode ser modificada com setRotation

rotate setPosition translate setScale e scale Objects podem ser copiados com

copy Objects consiste em um conjunto de surfels os quais podem ser

recuperados pela getSurfelCollection O Object pode ser ativado com

setActiveObject e recuperado com getActiveObject

Objects podem ser adicionados ou removidos com addObject e

removeObject Os Objects podem ser obtidos pela getFirstObject e

getNextObject

Classe SurfelCollection representa o conjunto de surfels de um modelo

Cada surfelcollection consiste em um conjunto de surfels (SurfelInterface) de

tamanho obtido por getNofSurfels Os surfels podem ser recuperados com

getFirstSurfel getCurrentSurfel e getNextSurfel

A SurfelCollection conteacutem um PropertyDescriptor e uma SurfelList

A SurfelList eacute uma lista duplamente encadeada de surfels Possui os

atributos firstSurfel lastSurfel currentSurfel que satildeo ponteiros para uma

SurfelInterface nSurfels que eacute o nuacutemero de Surfels

A SurfelInterface define a API para os surfels que satildeo os menores

elementos que compotildeem um Object Podem ser considerados como pontos com

uma normal que define a orientaccedilatildeo do ciacuterculo (ou elipse) que seraacute desenhado

Melhorias Propostas 59

tatildeo logo o surfel seja renderizado Tem como atributos dois ponteiros (next e

prev) para SurfelInterface

PropertyDescriptor consiste em ateacute 32 valores descrevendo quais as

propriedades a SurfelInterface suporta

Classe Surfel classe que representa o surfel

Classe StatusBar classe que imprime mensagens na tela Os plugins

podem mandar mensagens para o usuaacuterio pela StatusBar

Mensagens texto podem ser impressas com showMessage O progresso

de uma operaccedilatildeo pode ser indicado com setProgress ou resetProgress

Classe Transformer representa a transformaccedilatildeo entre sistemas de

coordenadas Esta classe fornece meacutetodos para transformar pontos e vetores

entre os diferentes sistemas de coordenadas do Pointshop

A seguir apresentamos as principais estruturas de dados do plugin

Operaccedilotildees Booleanas

As principais estruturas de dados do plugin satildeo boundingbox tree no

lista_surfel surfel

Boundingbox conteacutem dois pontos 3D que definem uma caixa que conteacutem

o modelo um ponto com menores coordenadas xy e z e outro ponto com

maiores xyz

Tree representa a octree do modelo Cada registro conteacutem um ponteiro

para um noacute e oito ponteiros para as 8 octrees filhas

No representa um noacute da octree Conteacutem os seguintes dados

- localizaccedilatildeo do noacute que eacute o canto inferior esquerdo do noacute

- lista_surfel (preenchida apenas para noacutes folha cheios)

- quantidade de surfels do noacute

- classificaccedilatildeo do noacute como dentro fora ou contorno

- classificaccedilatildeo do noacute em relaccedilatildeo a outro modelo

- indica se o noacute eacute folha ou natildeo

- vetor que eacute a meacutedia das normais dos surfels do noacute

- ponto que eacute a meacutedia das localizaccedilotildees dos surfels do noacute

- surfel que tem (entre todos os surfels do noacute) o maior produto interno

entre a sua normal e a normal meacutedia

- surfel que tem (entre todos os surfels do noacute) o menor produto interno

entre a sua normal e a normal meacutedia

- produto interno maacuteximo e miacutenimo entre as normais dos surfels do noacute e a

normal meacutedia deste noacute

Melhorias Propostas 60

- indica se o noacute conteacutem surfels com normais em sentido oposto (produto

interno entre elas eacute menor que zero)

- classificaccedilatildeo dos oito cantos do noacute

lista_surfels lista em que cada registro conteacutem um apontador para um

surfel e um apontador para o proacuteximo registro

surfel representa o surfel da octree Conteacutem a classificaccedilatildeo em relaccedilatildeo a

outro modelo e um ponteiro para o surfel do Poinshop

Resultados 61

6 Resultados

Neste capiacutetulo apresentamos os testes realizados com o plugin para o

PointShop implementado para esta dissertaccedilatildeo a comparaccedilatildeo deste plugin com

o plugin de Pauly [3] e a comparaccedilatildeo entre o meacutetodo de Adams e Dutreacute [2] e o

meacutetodo de Pauly [3]

61 Testes

Os testes foram feitos em um PC x86 Family 6 261600 KB de RAM sem

placa graacutefica sistema operacional Windows 2000 O plugin foi implementado na

linguagem C

Os modelos usados para os testes satildeo modelos disponibilizados no

PointShop [11] Vale lembrar que o meacutetodo implementado em nosso plugin eacute

restrito a modelos soacutelidos e portanto foram usados apenas estes modelos

soacutelidos para os testes

O modelo na Figura 29 que eacute um dos modelos disponibilizados no

PointShop [11] foi usado para mostrar o resultado das operaccedilotildees realizadas

pelo plugin implementado nesta dissertaccedilatildeo O modelo Igea eacute um modelo soacutelido

que conteacutem 134345 surfels

Resultados 62

Figura 29-Modelo do PointShop Igea

Para realizar as operaccedilotildees este modelo foi carregado na cena do

PointShop duas vezes e um deles colorido de vermelho As Figuras 30 31 32

mostram o resultado da operaccedilatildeo de uniatildeo interseccedilatildeo e diferenccedila

respectivamente Os nuacutemeros de surfels dos modelos resultantes satildeo mostrados

na Tabela 2

Resultados 63

Figura 30-Resultado da uniatildeo de duas Igeas

Figura 31-Resultado da interseccedilatildeo de duas Igeas

Resultados 64

Figura 32-Resultado da diferenccedila entre duas Igeas

Tabela 2-Nuacutemero de surfels dos modelos resultantes

Observamos que o nuacutemero de surfels dos modelos resultantes estaacute

coerente com as figuras dos seus modelos

Para avaliar o tempo de processamento das operaccedilotildees foram realizados

vaacuterios testes com o objetivo de obter uma meacutedia dos tempos de realizaccedilatildeo de

cada operaccedilatildeo Tambeacutem foram armazenados os tempos da criaccedilatildeo das duas

octrees e da classificaccedilatildeo de todos os surfels dos dois objetos (como dentro ou

fora do outro modelo) Estes testes foram feitos usando o modelo Igea A meacutedia

dos tempos de processamento foi calculada e os resultados satildeo mostrados na

Tabela 3 Verificamos que o maior tempo gasto eacute para criaccedilatildeo das octrees

Verificamos tambeacutem que este resultado apresentado eacute similar ao resultado

verificado empiricamente com o plugin de Pauly [3] Os tempos gastos para

realizar as operaccedilotildees satildeo similares e o maior tempo gasto no plugin de Pauly

tambeacutem eacute para inicializaccedilatildeo de suas estruturas de dados que incluem a kd-tree

Operaccedilatildeo Nuacutemero de surfels do modelo resultado

Uniatildeo 189715

Interseccedilatildeo 72225

Diferenccedila 134552

Resultados 65

Operaccedilatildeo Criaccedilatildeo das

Octrees (seg)

Classificaccedilatildeo

(seg)

Criaccedilatildeo do

resultado (seg)

Total (seg)

Uniatildeo 39375 1324 18925 7154

Interseccedilatildeo 38585 1585 09547 63982

Diferenccedila 399875 1504 1729 729475

Tabela 3- Meacutedia dos tempos de processamento para as operaccedilotildees com duas Igeas

Com o objetivo de expor melhor os resultados deste trabalho

apresentamos abaixo mais um teste das operaccedilotildees booleanas usando o nosso

plugin Os modelos usados para este segundo teste satildeo o Max Planck e o Male

ambos modelos soacutelidos disponibilizados no PointShop Estes modelos satildeo

mostrados nas figura 33 e 34

O primeiro Max Planck conteacutem 52809 surfels

Figura 33-Modelo do PointShop MaxPlanck

O segundo modelo abaixo Male conteacutem 148138 surfels

Resultados 66

Figura 34-Modelo do PointShop Male

As Figuras 353637 mostram o resultado da operaccedilatildeo de uniatildeo interseccedilatildeo

e diferenccedila respectivamente usando os dois modelos acima Podemos observar

pela figura 35 que o resultado da operaccedilatildeo de diferenccedila neste caso gerou um

modelo resultado com trecircs partes desconexas Os nuacutemeros de surfels de cada

modelo resultado satildeo mostrados na Tabela 5

Figura 35- Resultado da Uniatildeo do modelo Male com MaxPlanck

Resultados 67

Figura 36-Resultado da interseccedilatildeo do modelo Male com o MaxPlanck

Figura 37-Resultado da diferenccedila do modelo Male do modelo MaxPlanck

As meacutedias de tempos de processamento foram calculadas da mesma

forma que o primeiro teste com o modelo Igea acima apresentado Os

resultados satildeo mostrados na Tabela 4 Podemos observar que este teste

Resultados 68

apresenta tempos um pouco menores que o teste com o modelo Igea Isto se

deve ao fato de que o modelo MaxPlanck ser significativamente menor que o

modelo Igea MaxPlanck possui 52809 surfels e Igea conteacutem 134345 surfels

Operaccedilatildeo Criaccedilatildeo das

Octrees (seg)

Classificaccedilatildeo

(seg)

Criaccedilatildeo do

resultado (seg)

Total

(seg)

Uniatildeo 3012 1254 102 5285

Interseccedilatildeo 2985 0901 0861 4747

Diferenccedila 2965 0911 0791 4667

Tabela 4-Tempo de processamento das operaccedilotildees com os modelos MaxPlanck e Male

Operaccedilatildeo Nuacutemero de surfels do resultado

Uniatildeo 126532

Interseccedilatildeo 88414

Diferenccedila 77635

Tabela 5-Nuacutemero de surfels dos modelos resultados das operaccedilotildees com os modelos MaxPlanck e Male

Em seguida apresentaremos uma comparaccedilatildeo entre o nosso plugin e o

plugin de Pauly[3] e tambeacutem uma comparaccedilatildeo entre o meacutetodo de Adams e Dutreacute

[2] e o meacutetodo de Pauly [3]

62 Comparaccedilatildeo entre os dois meacutetodos que realizam operaccedilotildees booleanas

A comparaccedilatildeo entre os meacutetodos de Pauly[3] e de Adams e Dutreacute foi feita

em termos de tempo de processamento e em termos conceituais Em termos de

tempo de processamento comparamos o plugin de Pauly[3] com o nosso plugin

Em termos de tempo de processamento verifica-se empiricamente que os

dois meacutetodos apresentam tempos bastante similares Entretanto o tempo de

processamento do algoritmo aqui implementado ainda pode ser melhorado com

Resultados 69

o uso do meacutetodo TINN [19] que foi proposto em Adams[2] - para otimizar a

pesquisa do surfel mais proacuteximo a um ponto que estaacute localizado na regiatildeo de um

noacute que conteacutem surfels - veja seccedilatildeo 42 O uso deste meacutetodo natildeo foi

implementado para este trabalho e a sua implementaccedilatildeo melhoraria o tempo de

resposta do algoritmo Aleacutem disso o trabalho de Sara F Frisken [12] citado no

capiacutetulo 2 apresenta uma otimizaccedilatildeo no uso de octrees que pode ser

incorporada no algoritmo implementado neste trabalho

Em termos conceituais vamos fazer a comparaccedilatildeo do uso do que

chamamos aqui de Regra 2 do tratamento de interseccedilatildeo e do tratamento de

ldquoarestas vivasrdquo

Como vimos na seccedilatildeo 41 tanto o algoritmo implementado nesta

dissertaccedilatildeo baseado no trabalho de Adams e Dutreacute como o meacutetodo de Pauly

[3] parte do que chamamos aqui de Regra 2 para realizar operaccedilotildees booleanas

com pontos Mas cada um destes meacutetodos daacute um tratamento diferente para o

uso desta regra

O meacutetodo de Pauly usa a Regra 2 para classificaccedilatildeo de cada ponto ou de

cada surfel Para classificar um surfel de B sb como dentro ou fora de A eacute

encontrado o surfel de A sa mais proacuteximo a sb e sb eacute classificado a partir de sa

Para encontrar sa Pauly utiliza uma kd-tree Como esta pesquisa para encontrar

sa eacute cara (mesmo usando uma kd-tree) Pauly utiliza uma esfera que conteacutem

pontos com a mesma classificaccedilatildeo (seccedilatildeo 432) e diminui em 90 este nuacutemero

de pesquisas Pauly utiliza tambeacutem a representaccedilatildeo impliacutecita MLS (Moving Least

Squares) para casos em que a Regra 2 poderia falhar e para tratamento de

interseccedilotildees Entretanto o nuacutemero destes casos em que a Regra 2 poderia falhar

eacute muito pequeno E a representaccedilatildeo MLS natildeo eacute uma estrutura simples de ser

implementada Portanto natildeo encontramos vantagens em usar MLS para estes

casos O meacutetodo de Adams e Dutreacute natildeo trata estes casos e na praacutetica

apresenta resultados bastante satisfatoacuterios como foi mostrado Portanto

consideramos que valeria a pena fazer algum tratamento especial para estes

casos se fosse um procedimento simples Para a execuccedilatildeo do algoritmo de

Pauly o uso de MLS natildeo interfere significativamente porque a construccedilatildeo desta

representaccedilatildeo natildeo eacute feita somente para realizar operaccedilotildees booleanas Os testes

empiacutericos que fizemos com o algoritmo de Pauly natildeo incluem a construccedilatildeo desta

representaccedilatildeo

Aparentemente os dois algoritmos satildeo bastante parecidos um usa octrees

e o outro usa kd-tree As duas estruturas de dados satildeo simples e otimizam a

classificaccedilatildeo dos surfels de um modelo como dentro ou fora do outro modelo

Resultados 70

Mas existe uma diferenccedila conceitual entre dois que merece ser destacada O

algoritmo aqui implementado usa a Regra 2 para classificaccedilatildeo dos noacutes de uma

octree e armazena esta octree classificada (ver capiacutetulo 5) Assim na maioria dos

casos natildeo seraacute necessaacuterio encontrar o surfel mais proacuteximo para classificar um

ponto (ou um surfel) como fora ou dentro de um modelo Caso o ponto esteja em

uma aacuterea da octree classificada ele teraacute a classificaccedilatildeo dada agravequela aacuterea A

pesquisa ao surfel mais proacuteximo seraacute feita apenas nos casos em que o ponto a

ser classificado estaacute localizado entre os planos que subdividem um noacute cheio

O uso desta octree classificada levanta uma questatildeo que natildeo foi citada no

trabalho de Adams e Dutreacute que eacute a proximidade desta estrutura (armazenada)

de octree classificada com uma representaccedilatildeo volumeacutetrica do objeto Sendo

assim esta estrutura pode ser aproveitada para outras funccedilotildees aleacutem da

classificaccedilatildeo dos surfels Por exemplo podemos ter uma aproximaccedilatildeo do

volume de uma cena somando os volumes aproximados dos modelos que a

compotildeem Como o enfoque deste trabalho eacute operaccedilatildeo booleana natildeo vamos nos

aprofundar nesta questatildeo

Outra importante diferenccedila entre os dois trabalhos que jaacute foi explicada na

seccedilatildeo 432 eacute que o meacutetodo de Pauly aplica-se a modelos soacutelidos ou natildeo

soacutelidos enquanto que o meacutetodo de Adams e Dutreacute aplica-se somente a modelos

soacutelidos

Quanto ao tratamento de interseccedilatildeo em termos de visualizaccedilatildeo todos os

dois resolvem bem o problema O tratamento de interseccedilatildeo nos dois trabalhos

tambeacutem resolve o problema da validade da Regra 2 (ver seccedilatildeo 44) Entretanto

o tratamento de Adams e Dutreacute natildeo depende da renderizaccedilatildeo sendo portanto

mais portaacutevel Aleacutem disso uma desvantagem do meacutetodo de Pauly eacute o uso da

representaccedilatildeo impliacutecita MLS (ldquoMoving Least Squaresrdquo) do objeto para obter os

pontos exatamente na curva de interseccedilatildeo Esta representaccedilatildeo torna o

tratamento de interseccedilatildeo mais complexo e a vantagem apresentada natildeo eacute tatildeo

significativa para este tratamento de interseccedilatildeo

Conclusatildeo 71

7 Conclusatildeo

Concluiacutemos entatildeo que as escolhas de Adams e Dutreacute por usar uma

octree classificada e pelo tratamento dado agrave interseccedilatildeo satildeo mais abrangentes

que a escolha de Pauly E consideramos que quanto mais abrangente for uma

escolha conceitual mais resultados poderemos tirar dela No caso de Adams e

Dutreacute eles estendem o problema de classificar um ponto para classificar todo o

modelo Como foi citado ele quase fornece uma representaccedilatildeo volumeacutetrica do

modelo Esta aproximada representaccedilatildeo volumeacutetrica pode nos fornecer outras

informaccedilotildees como por exemplo o volume aproximado do modelo

Aleacutem disso o uso da representaccedilatildeo impliacutecita MLS no meacutetodo de Pauly cria

uma complexidade a mais para o meacutetodo sem apresentar vantagens para a

realizaccedilatildeo de operaccedilotildees booleanas que eacute o nosso enfoque

Logo podemos dizer que o meacutetodo de Adams e Dutreacute apresenta as

seguintes vantagens em relaccedilatildeo ao de Pauly

- a estrutura de octree classificada aleacutem de ser usada para classificaccedilatildeo

fornece informaccedilotildees adicionais como volume aproximado do objeto

- o tempo de processamento no meacutetodo de Adams e Dutreacute tende a ser

melhor que no meacutetodo de Pauly se implementadas as melhorias acima citadas e

se colocaacutessemos em consideraccedilatildeo o uso da representaccedilatildeo impliacutecita MLS

(Moving Least Squares)

- o tratamento de interseccedilatildeo de Adams e Dutreacute apresenta a vantagem da

portabilidade ou seja iraacute funcionar independente do algoritmo de renderizaccedilatildeo

utilizado

E as vantagens do meacutetodo de Pauly em relaccedilatildeo ao de Adams e Dutreacute

- a colocaccedilatildeo de surfels exatamente na curva de interseccedilatildeo

- a possibilidade de trabalhar com modelos soacutelidos ou natildeo soacutelidos

E finalizando concluiacutemos que o estudo relatado nesta dissertaccedilatildeo foi

importante por

- fornecer um breve estudo sobre modelagem por pontos uma nova e

promissora aacuterea dentro da computaccedilatildeo graacutefica

Conclusatildeo 72

- por apresentar uma avaliaccedilatildeo dos dois trabalhos existentes sobre

operaccedilotildees booleanas com pontos encontrando as vantagens de cada um

e levantando questotildees que natildeo tinham sido citadas nos trabalhos originais

- por propor e implementar melhorias ao trabalho de Adams e Dutreacute

71 Trabalhos Futuros

Nossa implementaccedilatildeo pode ser ainda evoluiacuteda com as propostas

apresentadas na seccedilatildeo 62 Como observamos o tempo de processamento do

algoritmo aqui implementado ainda pode ser melhorado com o uso do meacutetodo

TINN [19] - que foi proposto em Adams[2] - para otimizar a pesquisa do surfel

mais proacuteximo a um ponto que estaacute localizado na regiatildeo de um noacute que conteacutem

surfels Aleacutem disso o trabalho Simple and Efficient Trasversal Methods for

Quadtrees and Octrees de Sara F Frisken [12] citado no capiacutetulo 2 apresenta

uma otimizaccedilatildeo no uso de octrees Outra proposta para melhorar o tempo de

processamento do algoritmo aqui implementado eacute usar a forma de trabalhar com

octrees apresentada neste trabalho

O trabalho de Adams e Dutreacute [2] eacute aplicado apenas a objetos soacutelidos O

nosso plugin portanto aplica-se somente a este tipo de objeto Jaacute o trabalho de

Pauly[3] eacute aplicado tambeacutem a modelos natildeo soacutelidos Apresentamos como

proposta a um trabalho futuro a extensatildeo do algoritmo aqui implementado para

modelos natildeo soacutelidos O surfel pode conter uma informaccedilatildeo adicional que indica

se ele estaacute delimitando um volume ou natildeo Assim pode-se ter um modelo com

ldquopartes soacutelidasrdquo e ldquopartes natildeo soacutelidasrdquo Por exemplo a uniatildeo de um plano com

uma esfera poderia resultar numa esfera com ldquoabasrdquo (seriam as partes do plano

que estariam fora da esfera) O modelo resultado teria uma parte correspondente

a um espaccedilo 3D (esfera) e outra parte que seria uma superfiacutecie 2D posicionada

no espaccedilo 3D sem delimitar algum volume (abas)

Muitos trabalhos podem ser desenvolvidos aplicando-se o modelo por

pontos em animaccedilatildeo jogos visualizaccedilatildeo de terrenos criaccedilatildeo de protoacutetipos etc

considerando-se a eficiecircncia e simplicidade do modelo E mais especificamente

as operaccedilotildees booleanas com pontos podem ser aplicadas para criaccedilatildeo de

cenaacuterios testes de colisotildees e nestes casos a representaccedilatildeo usando octrees

pode ser mais explorada considerando-se o seu potencial de representaccedilatildeo

volumeacutetrica de um objeto

Referecircncias Bibliograacuteficas 73

8 Referecircncias Bibliograacuteficas

[1] MAumlNTYLAuml M An Introduction to Solid Modeling Computer Science Press 1988

[2] ADAMS B DUTREacute P Interactive Boolean Operations on Surfel-

Bounded Solids Proceedings of SIGGRAPH 2003 San Diego USA 2003

[3] PAULY M KEISER R KOBBELT L GROSS M Shape Modeling

with Point-Sampled Geometry SIGGRAPH 2003 Computer Graphics

Proceedings Annual Conference Series ACM Press ACM SIGGRAPH 2003

[4] LEVOY M WHITTED T The Use of Points as Display Primitives

Technical Report TR 85-022 The University of North Carolina at Chapel Hill

Department of Computer Science 1985

[5] PFISTER H ZWICKER M VAN BAAR J GROSS M 2000 Surfels

Surface Elements as Rendering Primitives SIGGRAPH 2000 pp 335ndash342 New

Orleans LA July 23-28 2000

[6] ZWICKER M PFISTER H VAN BAAR J GROSS M Surface

Splatting SIGGRAPH 2001

[7] PAULY M KOBBELT L GROSS M Multiresolution Modeling of

Point-Sampled Geometry CS Techinical Report 378 September 16 2002

[8] CURLESS B New Methods for Surface Reconstruction from Range Images PhD thesis Stanford University 1997

[9] RUSINKIEWICZ S Real-time Acquisition and Rendering of Large 3D Models PhD thesis Stanford University 2001

Referecircncias Bibliograacuteficas 74

[10] AMENTA N BERN M KAMVYSSELIS M A new Voronoi-Based

Surface Reconstruction Algorithm SIGGRAPH 98 Conference proceedings pp

415-421 New York 1998

[11] ZWICKER M PAULY M KNOLL O GROSS M Pointshop 3D an

Interactive System for Point-Based Surface Editing Proceedings of SIGGRAPH 2002 San Antonio TX July 2002

[12] FRISKEN S PERRY R Simple and Efficient Traversal Methods for

Quadtrees and Octrees Journal of Graphics Tools Vol 7 Issue 3 May 2003

[13] CORREcircA W T OLIVEIRA M M Silva C T Wang J

Modeling and Rendering of Real Environments

Revista de Informaacutetica Teoacuterica e Aplicada (Brazilian Journal of Theoretic and Applied Computing) 9(2)127-156 2002

[14] DAVIS J MARSCHNER S GARR M LEVOY M Filling Holes in

Complex Surfaces Using Volumetric Diffusion First International Symposium on 3D Data Processing Visualization Transmission June 2002

[15] RAumlSAumlNEN J Surface Splatting Theory Extensions and Implementation Masterrsquos Thesis Dept of Computer Science Helsinki

University of Technology May 28 2002

[16] PAULY M Point Primitives for Interactive Modeling and Processing of 3D Geometry PhD thesis Federal Institute of Technology (ETH)

of Zurich 2003

[17] HOPPE H DEROSE T DUCHAMP T MCDONALD J

STUELZLE W Surface Reconstruction from Unorganized Points Computer Graphics 26(2)71ndash78 July 1992

[18] ALEXA M BEHR J COHEN-OR D FLEISHMAN S LEVIN D

SILVA C T Point Set Surfaces IEEE Visualization 2001 pp 21ndash28 October

2001

Referecircncias Bibliograacuteficas 75

[19] GREENSPAN M GODIN G TALBOT J Acceleration of Binning

Nearest Neighbor Methods Proceedings of Vision Interface 2000 pp 337-

344

[20] MENCL R Reconstruction of Surfaces from Unorganized Three-Dimensional Point Clouds Dissertation Dortmund Univ 2001

[21] KRIVANEK J Representing and Rendering Surfaces With Points

httpciteseernjneccomkrivanek03representinghtml Acesso em 30 jul

2003

[22] KRISTJANSSON ET AL Approximate Boolean Operations on Free-

form Solids Proceedings of SIGGRAPH 01 2001

Melhorias Propostas 59

tatildeo logo o surfel seja renderizado Tem como atributos dois ponteiros (next e

prev) para SurfelInterface

PropertyDescriptor consiste em ateacute 32 valores descrevendo quais as

propriedades a SurfelInterface suporta

Classe Surfel classe que representa o surfel

Classe StatusBar classe que imprime mensagens na tela Os plugins

podem mandar mensagens para o usuaacuterio pela StatusBar

Mensagens texto podem ser impressas com showMessage O progresso

de uma operaccedilatildeo pode ser indicado com setProgress ou resetProgress

Classe Transformer representa a transformaccedilatildeo entre sistemas de

coordenadas Esta classe fornece meacutetodos para transformar pontos e vetores

entre os diferentes sistemas de coordenadas do Pointshop

A seguir apresentamos as principais estruturas de dados do plugin

Operaccedilotildees Booleanas

As principais estruturas de dados do plugin satildeo boundingbox tree no

lista_surfel surfel

Boundingbox conteacutem dois pontos 3D que definem uma caixa que conteacutem

o modelo um ponto com menores coordenadas xy e z e outro ponto com

maiores xyz

Tree representa a octree do modelo Cada registro conteacutem um ponteiro

para um noacute e oito ponteiros para as 8 octrees filhas

No representa um noacute da octree Conteacutem os seguintes dados

- localizaccedilatildeo do noacute que eacute o canto inferior esquerdo do noacute

- lista_surfel (preenchida apenas para noacutes folha cheios)

- quantidade de surfels do noacute

- classificaccedilatildeo do noacute como dentro fora ou contorno

- classificaccedilatildeo do noacute em relaccedilatildeo a outro modelo

- indica se o noacute eacute folha ou natildeo

- vetor que eacute a meacutedia das normais dos surfels do noacute

- ponto que eacute a meacutedia das localizaccedilotildees dos surfels do noacute

- surfel que tem (entre todos os surfels do noacute) o maior produto interno

entre a sua normal e a normal meacutedia

- surfel que tem (entre todos os surfels do noacute) o menor produto interno

entre a sua normal e a normal meacutedia

- produto interno maacuteximo e miacutenimo entre as normais dos surfels do noacute e a

normal meacutedia deste noacute

Melhorias Propostas 60

- indica se o noacute conteacutem surfels com normais em sentido oposto (produto

interno entre elas eacute menor que zero)

- classificaccedilatildeo dos oito cantos do noacute

lista_surfels lista em que cada registro conteacutem um apontador para um

surfel e um apontador para o proacuteximo registro

surfel representa o surfel da octree Conteacutem a classificaccedilatildeo em relaccedilatildeo a

outro modelo e um ponteiro para o surfel do Poinshop

Resultados 61

6 Resultados

Neste capiacutetulo apresentamos os testes realizados com o plugin para o

PointShop implementado para esta dissertaccedilatildeo a comparaccedilatildeo deste plugin com

o plugin de Pauly [3] e a comparaccedilatildeo entre o meacutetodo de Adams e Dutreacute [2] e o

meacutetodo de Pauly [3]

61 Testes

Os testes foram feitos em um PC x86 Family 6 261600 KB de RAM sem

placa graacutefica sistema operacional Windows 2000 O plugin foi implementado na

linguagem C

Os modelos usados para os testes satildeo modelos disponibilizados no

PointShop [11] Vale lembrar que o meacutetodo implementado em nosso plugin eacute

restrito a modelos soacutelidos e portanto foram usados apenas estes modelos

soacutelidos para os testes

O modelo na Figura 29 que eacute um dos modelos disponibilizados no

PointShop [11] foi usado para mostrar o resultado das operaccedilotildees realizadas

pelo plugin implementado nesta dissertaccedilatildeo O modelo Igea eacute um modelo soacutelido

que conteacutem 134345 surfels

Resultados 62

Figura 29-Modelo do PointShop Igea

Para realizar as operaccedilotildees este modelo foi carregado na cena do

PointShop duas vezes e um deles colorido de vermelho As Figuras 30 31 32

mostram o resultado da operaccedilatildeo de uniatildeo interseccedilatildeo e diferenccedila

respectivamente Os nuacutemeros de surfels dos modelos resultantes satildeo mostrados

na Tabela 2

Resultados 63

Figura 30-Resultado da uniatildeo de duas Igeas

Figura 31-Resultado da interseccedilatildeo de duas Igeas

Resultados 64

Figura 32-Resultado da diferenccedila entre duas Igeas

Tabela 2-Nuacutemero de surfels dos modelos resultantes

Observamos que o nuacutemero de surfels dos modelos resultantes estaacute

coerente com as figuras dos seus modelos

Para avaliar o tempo de processamento das operaccedilotildees foram realizados

vaacuterios testes com o objetivo de obter uma meacutedia dos tempos de realizaccedilatildeo de

cada operaccedilatildeo Tambeacutem foram armazenados os tempos da criaccedilatildeo das duas

octrees e da classificaccedilatildeo de todos os surfels dos dois objetos (como dentro ou

fora do outro modelo) Estes testes foram feitos usando o modelo Igea A meacutedia

dos tempos de processamento foi calculada e os resultados satildeo mostrados na

Tabela 3 Verificamos que o maior tempo gasto eacute para criaccedilatildeo das octrees

Verificamos tambeacutem que este resultado apresentado eacute similar ao resultado

verificado empiricamente com o plugin de Pauly [3] Os tempos gastos para

realizar as operaccedilotildees satildeo similares e o maior tempo gasto no plugin de Pauly

tambeacutem eacute para inicializaccedilatildeo de suas estruturas de dados que incluem a kd-tree

Operaccedilatildeo Nuacutemero de surfels do modelo resultado

Uniatildeo 189715

Interseccedilatildeo 72225

Diferenccedila 134552

Resultados 65

Operaccedilatildeo Criaccedilatildeo das

Octrees (seg)

Classificaccedilatildeo

(seg)

Criaccedilatildeo do

resultado (seg)

Total (seg)

Uniatildeo 39375 1324 18925 7154

Interseccedilatildeo 38585 1585 09547 63982

Diferenccedila 399875 1504 1729 729475

Tabela 3- Meacutedia dos tempos de processamento para as operaccedilotildees com duas Igeas

Com o objetivo de expor melhor os resultados deste trabalho

apresentamos abaixo mais um teste das operaccedilotildees booleanas usando o nosso

plugin Os modelos usados para este segundo teste satildeo o Max Planck e o Male

ambos modelos soacutelidos disponibilizados no PointShop Estes modelos satildeo

mostrados nas figura 33 e 34

O primeiro Max Planck conteacutem 52809 surfels

Figura 33-Modelo do PointShop MaxPlanck

O segundo modelo abaixo Male conteacutem 148138 surfels

Resultados 66

Figura 34-Modelo do PointShop Male

As Figuras 353637 mostram o resultado da operaccedilatildeo de uniatildeo interseccedilatildeo

e diferenccedila respectivamente usando os dois modelos acima Podemos observar

pela figura 35 que o resultado da operaccedilatildeo de diferenccedila neste caso gerou um

modelo resultado com trecircs partes desconexas Os nuacutemeros de surfels de cada

modelo resultado satildeo mostrados na Tabela 5

Figura 35- Resultado da Uniatildeo do modelo Male com MaxPlanck

Resultados 67

Figura 36-Resultado da interseccedilatildeo do modelo Male com o MaxPlanck

Figura 37-Resultado da diferenccedila do modelo Male do modelo MaxPlanck

As meacutedias de tempos de processamento foram calculadas da mesma

forma que o primeiro teste com o modelo Igea acima apresentado Os

resultados satildeo mostrados na Tabela 4 Podemos observar que este teste

Resultados 68

apresenta tempos um pouco menores que o teste com o modelo Igea Isto se

deve ao fato de que o modelo MaxPlanck ser significativamente menor que o

modelo Igea MaxPlanck possui 52809 surfels e Igea conteacutem 134345 surfels

Operaccedilatildeo Criaccedilatildeo das

Octrees (seg)

Classificaccedilatildeo

(seg)

Criaccedilatildeo do

resultado (seg)

Total

(seg)

Uniatildeo 3012 1254 102 5285

Interseccedilatildeo 2985 0901 0861 4747

Diferenccedila 2965 0911 0791 4667

Tabela 4-Tempo de processamento das operaccedilotildees com os modelos MaxPlanck e Male

Operaccedilatildeo Nuacutemero de surfels do resultado

Uniatildeo 126532

Interseccedilatildeo 88414

Diferenccedila 77635

Tabela 5-Nuacutemero de surfels dos modelos resultados das operaccedilotildees com os modelos MaxPlanck e Male

Em seguida apresentaremos uma comparaccedilatildeo entre o nosso plugin e o

plugin de Pauly[3] e tambeacutem uma comparaccedilatildeo entre o meacutetodo de Adams e Dutreacute

[2] e o meacutetodo de Pauly [3]

62 Comparaccedilatildeo entre os dois meacutetodos que realizam operaccedilotildees booleanas

A comparaccedilatildeo entre os meacutetodos de Pauly[3] e de Adams e Dutreacute foi feita

em termos de tempo de processamento e em termos conceituais Em termos de

tempo de processamento comparamos o plugin de Pauly[3] com o nosso plugin

Em termos de tempo de processamento verifica-se empiricamente que os

dois meacutetodos apresentam tempos bastante similares Entretanto o tempo de

processamento do algoritmo aqui implementado ainda pode ser melhorado com

Resultados 69

o uso do meacutetodo TINN [19] que foi proposto em Adams[2] - para otimizar a

pesquisa do surfel mais proacuteximo a um ponto que estaacute localizado na regiatildeo de um

noacute que conteacutem surfels - veja seccedilatildeo 42 O uso deste meacutetodo natildeo foi

implementado para este trabalho e a sua implementaccedilatildeo melhoraria o tempo de

resposta do algoritmo Aleacutem disso o trabalho de Sara F Frisken [12] citado no

capiacutetulo 2 apresenta uma otimizaccedilatildeo no uso de octrees que pode ser

incorporada no algoritmo implementado neste trabalho

Em termos conceituais vamos fazer a comparaccedilatildeo do uso do que

chamamos aqui de Regra 2 do tratamento de interseccedilatildeo e do tratamento de

ldquoarestas vivasrdquo

Como vimos na seccedilatildeo 41 tanto o algoritmo implementado nesta

dissertaccedilatildeo baseado no trabalho de Adams e Dutreacute como o meacutetodo de Pauly

[3] parte do que chamamos aqui de Regra 2 para realizar operaccedilotildees booleanas

com pontos Mas cada um destes meacutetodos daacute um tratamento diferente para o

uso desta regra

O meacutetodo de Pauly usa a Regra 2 para classificaccedilatildeo de cada ponto ou de

cada surfel Para classificar um surfel de B sb como dentro ou fora de A eacute

encontrado o surfel de A sa mais proacuteximo a sb e sb eacute classificado a partir de sa

Para encontrar sa Pauly utiliza uma kd-tree Como esta pesquisa para encontrar

sa eacute cara (mesmo usando uma kd-tree) Pauly utiliza uma esfera que conteacutem

pontos com a mesma classificaccedilatildeo (seccedilatildeo 432) e diminui em 90 este nuacutemero

de pesquisas Pauly utiliza tambeacutem a representaccedilatildeo impliacutecita MLS (Moving Least

Squares) para casos em que a Regra 2 poderia falhar e para tratamento de

interseccedilotildees Entretanto o nuacutemero destes casos em que a Regra 2 poderia falhar

eacute muito pequeno E a representaccedilatildeo MLS natildeo eacute uma estrutura simples de ser

implementada Portanto natildeo encontramos vantagens em usar MLS para estes

casos O meacutetodo de Adams e Dutreacute natildeo trata estes casos e na praacutetica

apresenta resultados bastante satisfatoacuterios como foi mostrado Portanto

consideramos que valeria a pena fazer algum tratamento especial para estes

casos se fosse um procedimento simples Para a execuccedilatildeo do algoritmo de

Pauly o uso de MLS natildeo interfere significativamente porque a construccedilatildeo desta

representaccedilatildeo natildeo eacute feita somente para realizar operaccedilotildees booleanas Os testes

empiacutericos que fizemos com o algoritmo de Pauly natildeo incluem a construccedilatildeo desta

representaccedilatildeo

Aparentemente os dois algoritmos satildeo bastante parecidos um usa octrees

e o outro usa kd-tree As duas estruturas de dados satildeo simples e otimizam a

classificaccedilatildeo dos surfels de um modelo como dentro ou fora do outro modelo

Resultados 70

Mas existe uma diferenccedila conceitual entre dois que merece ser destacada O

algoritmo aqui implementado usa a Regra 2 para classificaccedilatildeo dos noacutes de uma

octree e armazena esta octree classificada (ver capiacutetulo 5) Assim na maioria dos

casos natildeo seraacute necessaacuterio encontrar o surfel mais proacuteximo para classificar um

ponto (ou um surfel) como fora ou dentro de um modelo Caso o ponto esteja em

uma aacuterea da octree classificada ele teraacute a classificaccedilatildeo dada agravequela aacuterea A

pesquisa ao surfel mais proacuteximo seraacute feita apenas nos casos em que o ponto a

ser classificado estaacute localizado entre os planos que subdividem um noacute cheio

O uso desta octree classificada levanta uma questatildeo que natildeo foi citada no

trabalho de Adams e Dutreacute que eacute a proximidade desta estrutura (armazenada)

de octree classificada com uma representaccedilatildeo volumeacutetrica do objeto Sendo

assim esta estrutura pode ser aproveitada para outras funccedilotildees aleacutem da

classificaccedilatildeo dos surfels Por exemplo podemos ter uma aproximaccedilatildeo do

volume de uma cena somando os volumes aproximados dos modelos que a

compotildeem Como o enfoque deste trabalho eacute operaccedilatildeo booleana natildeo vamos nos

aprofundar nesta questatildeo

Outra importante diferenccedila entre os dois trabalhos que jaacute foi explicada na

seccedilatildeo 432 eacute que o meacutetodo de Pauly aplica-se a modelos soacutelidos ou natildeo

soacutelidos enquanto que o meacutetodo de Adams e Dutreacute aplica-se somente a modelos

soacutelidos

Quanto ao tratamento de interseccedilatildeo em termos de visualizaccedilatildeo todos os

dois resolvem bem o problema O tratamento de interseccedilatildeo nos dois trabalhos

tambeacutem resolve o problema da validade da Regra 2 (ver seccedilatildeo 44) Entretanto

o tratamento de Adams e Dutreacute natildeo depende da renderizaccedilatildeo sendo portanto

mais portaacutevel Aleacutem disso uma desvantagem do meacutetodo de Pauly eacute o uso da

representaccedilatildeo impliacutecita MLS (ldquoMoving Least Squaresrdquo) do objeto para obter os

pontos exatamente na curva de interseccedilatildeo Esta representaccedilatildeo torna o

tratamento de interseccedilatildeo mais complexo e a vantagem apresentada natildeo eacute tatildeo

significativa para este tratamento de interseccedilatildeo

Conclusatildeo 71

7 Conclusatildeo

Concluiacutemos entatildeo que as escolhas de Adams e Dutreacute por usar uma

octree classificada e pelo tratamento dado agrave interseccedilatildeo satildeo mais abrangentes

que a escolha de Pauly E consideramos que quanto mais abrangente for uma

escolha conceitual mais resultados poderemos tirar dela No caso de Adams e

Dutreacute eles estendem o problema de classificar um ponto para classificar todo o

modelo Como foi citado ele quase fornece uma representaccedilatildeo volumeacutetrica do

modelo Esta aproximada representaccedilatildeo volumeacutetrica pode nos fornecer outras

informaccedilotildees como por exemplo o volume aproximado do modelo

Aleacutem disso o uso da representaccedilatildeo impliacutecita MLS no meacutetodo de Pauly cria

uma complexidade a mais para o meacutetodo sem apresentar vantagens para a

realizaccedilatildeo de operaccedilotildees booleanas que eacute o nosso enfoque

Logo podemos dizer que o meacutetodo de Adams e Dutreacute apresenta as

seguintes vantagens em relaccedilatildeo ao de Pauly

- a estrutura de octree classificada aleacutem de ser usada para classificaccedilatildeo

fornece informaccedilotildees adicionais como volume aproximado do objeto

- o tempo de processamento no meacutetodo de Adams e Dutreacute tende a ser

melhor que no meacutetodo de Pauly se implementadas as melhorias acima citadas e

se colocaacutessemos em consideraccedilatildeo o uso da representaccedilatildeo impliacutecita MLS

(Moving Least Squares)

- o tratamento de interseccedilatildeo de Adams e Dutreacute apresenta a vantagem da

portabilidade ou seja iraacute funcionar independente do algoritmo de renderizaccedilatildeo

utilizado

E as vantagens do meacutetodo de Pauly em relaccedilatildeo ao de Adams e Dutreacute

- a colocaccedilatildeo de surfels exatamente na curva de interseccedilatildeo

- a possibilidade de trabalhar com modelos soacutelidos ou natildeo soacutelidos

E finalizando concluiacutemos que o estudo relatado nesta dissertaccedilatildeo foi

importante por

- fornecer um breve estudo sobre modelagem por pontos uma nova e

promissora aacuterea dentro da computaccedilatildeo graacutefica

Conclusatildeo 72

- por apresentar uma avaliaccedilatildeo dos dois trabalhos existentes sobre

operaccedilotildees booleanas com pontos encontrando as vantagens de cada um

e levantando questotildees que natildeo tinham sido citadas nos trabalhos originais

- por propor e implementar melhorias ao trabalho de Adams e Dutreacute

71 Trabalhos Futuros

Nossa implementaccedilatildeo pode ser ainda evoluiacuteda com as propostas

apresentadas na seccedilatildeo 62 Como observamos o tempo de processamento do

algoritmo aqui implementado ainda pode ser melhorado com o uso do meacutetodo

TINN [19] - que foi proposto em Adams[2] - para otimizar a pesquisa do surfel

mais proacuteximo a um ponto que estaacute localizado na regiatildeo de um noacute que conteacutem

surfels Aleacutem disso o trabalho Simple and Efficient Trasversal Methods for

Quadtrees and Octrees de Sara F Frisken [12] citado no capiacutetulo 2 apresenta

uma otimizaccedilatildeo no uso de octrees Outra proposta para melhorar o tempo de

processamento do algoritmo aqui implementado eacute usar a forma de trabalhar com

octrees apresentada neste trabalho

O trabalho de Adams e Dutreacute [2] eacute aplicado apenas a objetos soacutelidos O

nosso plugin portanto aplica-se somente a este tipo de objeto Jaacute o trabalho de

Pauly[3] eacute aplicado tambeacutem a modelos natildeo soacutelidos Apresentamos como

proposta a um trabalho futuro a extensatildeo do algoritmo aqui implementado para

modelos natildeo soacutelidos O surfel pode conter uma informaccedilatildeo adicional que indica

se ele estaacute delimitando um volume ou natildeo Assim pode-se ter um modelo com

ldquopartes soacutelidasrdquo e ldquopartes natildeo soacutelidasrdquo Por exemplo a uniatildeo de um plano com

uma esfera poderia resultar numa esfera com ldquoabasrdquo (seriam as partes do plano

que estariam fora da esfera) O modelo resultado teria uma parte correspondente

a um espaccedilo 3D (esfera) e outra parte que seria uma superfiacutecie 2D posicionada

no espaccedilo 3D sem delimitar algum volume (abas)

Muitos trabalhos podem ser desenvolvidos aplicando-se o modelo por

pontos em animaccedilatildeo jogos visualizaccedilatildeo de terrenos criaccedilatildeo de protoacutetipos etc

considerando-se a eficiecircncia e simplicidade do modelo E mais especificamente

as operaccedilotildees booleanas com pontos podem ser aplicadas para criaccedilatildeo de

cenaacuterios testes de colisotildees e nestes casos a representaccedilatildeo usando octrees

pode ser mais explorada considerando-se o seu potencial de representaccedilatildeo

volumeacutetrica de um objeto

Referecircncias Bibliograacuteficas 73

8 Referecircncias Bibliograacuteficas

[1] MAumlNTYLAuml M An Introduction to Solid Modeling Computer Science Press 1988

[2] ADAMS B DUTREacute P Interactive Boolean Operations on Surfel-

Bounded Solids Proceedings of SIGGRAPH 2003 San Diego USA 2003

[3] PAULY M KEISER R KOBBELT L GROSS M Shape Modeling

with Point-Sampled Geometry SIGGRAPH 2003 Computer Graphics

Proceedings Annual Conference Series ACM Press ACM SIGGRAPH 2003

[4] LEVOY M WHITTED T The Use of Points as Display Primitives

Technical Report TR 85-022 The University of North Carolina at Chapel Hill

Department of Computer Science 1985

[5] PFISTER H ZWICKER M VAN BAAR J GROSS M 2000 Surfels

Surface Elements as Rendering Primitives SIGGRAPH 2000 pp 335ndash342 New

Orleans LA July 23-28 2000

[6] ZWICKER M PFISTER H VAN BAAR J GROSS M Surface

Splatting SIGGRAPH 2001

[7] PAULY M KOBBELT L GROSS M Multiresolution Modeling of

Point-Sampled Geometry CS Techinical Report 378 September 16 2002

[8] CURLESS B New Methods for Surface Reconstruction from Range Images PhD thesis Stanford University 1997

[9] RUSINKIEWICZ S Real-time Acquisition and Rendering of Large 3D Models PhD thesis Stanford University 2001

Referecircncias Bibliograacuteficas 74

[10] AMENTA N BERN M KAMVYSSELIS M A new Voronoi-Based

Surface Reconstruction Algorithm SIGGRAPH 98 Conference proceedings pp

415-421 New York 1998

[11] ZWICKER M PAULY M KNOLL O GROSS M Pointshop 3D an

Interactive System for Point-Based Surface Editing Proceedings of SIGGRAPH 2002 San Antonio TX July 2002

[12] FRISKEN S PERRY R Simple and Efficient Traversal Methods for

Quadtrees and Octrees Journal of Graphics Tools Vol 7 Issue 3 May 2003

[13] CORREcircA W T OLIVEIRA M M Silva C T Wang J

Modeling and Rendering of Real Environments

Revista de Informaacutetica Teoacuterica e Aplicada (Brazilian Journal of Theoretic and Applied Computing) 9(2)127-156 2002

[14] DAVIS J MARSCHNER S GARR M LEVOY M Filling Holes in

Complex Surfaces Using Volumetric Diffusion First International Symposium on 3D Data Processing Visualization Transmission June 2002

[15] RAumlSAumlNEN J Surface Splatting Theory Extensions and Implementation Masterrsquos Thesis Dept of Computer Science Helsinki

University of Technology May 28 2002

[16] PAULY M Point Primitives for Interactive Modeling and Processing of 3D Geometry PhD thesis Federal Institute of Technology (ETH)

of Zurich 2003

[17] HOPPE H DEROSE T DUCHAMP T MCDONALD J

STUELZLE W Surface Reconstruction from Unorganized Points Computer Graphics 26(2)71ndash78 July 1992

[18] ALEXA M BEHR J COHEN-OR D FLEISHMAN S LEVIN D

SILVA C T Point Set Surfaces IEEE Visualization 2001 pp 21ndash28 October

2001

Referecircncias Bibliograacuteficas 75

[19] GREENSPAN M GODIN G TALBOT J Acceleration of Binning

Nearest Neighbor Methods Proceedings of Vision Interface 2000 pp 337-

344

[20] MENCL R Reconstruction of Surfaces from Unorganized Three-Dimensional Point Clouds Dissertation Dortmund Univ 2001

[21] KRIVANEK J Representing and Rendering Surfaces With Points

httpciteseernjneccomkrivanek03representinghtml Acesso em 30 jul

2003

[22] KRISTJANSSON ET AL Approximate Boolean Operations on Free-

form Solids Proceedings of SIGGRAPH 01 2001

Melhorias Propostas 60

- indica se o noacute conteacutem surfels com normais em sentido oposto (produto

interno entre elas eacute menor que zero)

- classificaccedilatildeo dos oito cantos do noacute

lista_surfels lista em que cada registro conteacutem um apontador para um

surfel e um apontador para o proacuteximo registro

surfel representa o surfel da octree Conteacutem a classificaccedilatildeo em relaccedilatildeo a

outro modelo e um ponteiro para o surfel do Poinshop

Resultados 61

6 Resultados

Neste capiacutetulo apresentamos os testes realizados com o plugin para o

PointShop implementado para esta dissertaccedilatildeo a comparaccedilatildeo deste plugin com

o plugin de Pauly [3] e a comparaccedilatildeo entre o meacutetodo de Adams e Dutreacute [2] e o

meacutetodo de Pauly [3]

61 Testes

Os testes foram feitos em um PC x86 Family 6 261600 KB de RAM sem

placa graacutefica sistema operacional Windows 2000 O plugin foi implementado na

linguagem C

Os modelos usados para os testes satildeo modelos disponibilizados no

PointShop [11] Vale lembrar que o meacutetodo implementado em nosso plugin eacute

restrito a modelos soacutelidos e portanto foram usados apenas estes modelos

soacutelidos para os testes

O modelo na Figura 29 que eacute um dos modelos disponibilizados no

PointShop [11] foi usado para mostrar o resultado das operaccedilotildees realizadas

pelo plugin implementado nesta dissertaccedilatildeo O modelo Igea eacute um modelo soacutelido

que conteacutem 134345 surfels

Resultados 62

Figura 29-Modelo do PointShop Igea

Para realizar as operaccedilotildees este modelo foi carregado na cena do

PointShop duas vezes e um deles colorido de vermelho As Figuras 30 31 32

mostram o resultado da operaccedilatildeo de uniatildeo interseccedilatildeo e diferenccedila

respectivamente Os nuacutemeros de surfels dos modelos resultantes satildeo mostrados

na Tabela 2

Resultados 63

Figura 30-Resultado da uniatildeo de duas Igeas

Figura 31-Resultado da interseccedilatildeo de duas Igeas

Resultados 64

Figura 32-Resultado da diferenccedila entre duas Igeas

Tabela 2-Nuacutemero de surfels dos modelos resultantes

Observamos que o nuacutemero de surfels dos modelos resultantes estaacute

coerente com as figuras dos seus modelos

Para avaliar o tempo de processamento das operaccedilotildees foram realizados

vaacuterios testes com o objetivo de obter uma meacutedia dos tempos de realizaccedilatildeo de

cada operaccedilatildeo Tambeacutem foram armazenados os tempos da criaccedilatildeo das duas

octrees e da classificaccedilatildeo de todos os surfels dos dois objetos (como dentro ou

fora do outro modelo) Estes testes foram feitos usando o modelo Igea A meacutedia

dos tempos de processamento foi calculada e os resultados satildeo mostrados na

Tabela 3 Verificamos que o maior tempo gasto eacute para criaccedilatildeo das octrees

Verificamos tambeacutem que este resultado apresentado eacute similar ao resultado

verificado empiricamente com o plugin de Pauly [3] Os tempos gastos para

realizar as operaccedilotildees satildeo similares e o maior tempo gasto no plugin de Pauly

tambeacutem eacute para inicializaccedilatildeo de suas estruturas de dados que incluem a kd-tree

Operaccedilatildeo Nuacutemero de surfels do modelo resultado

Uniatildeo 189715

Interseccedilatildeo 72225

Diferenccedila 134552

Resultados 65

Operaccedilatildeo Criaccedilatildeo das

Octrees (seg)

Classificaccedilatildeo

(seg)

Criaccedilatildeo do

resultado (seg)

Total (seg)

Uniatildeo 39375 1324 18925 7154

Interseccedilatildeo 38585 1585 09547 63982

Diferenccedila 399875 1504 1729 729475

Tabela 3- Meacutedia dos tempos de processamento para as operaccedilotildees com duas Igeas

Com o objetivo de expor melhor os resultados deste trabalho

apresentamos abaixo mais um teste das operaccedilotildees booleanas usando o nosso

plugin Os modelos usados para este segundo teste satildeo o Max Planck e o Male

ambos modelos soacutelidos disponibilizados no PointShop Estes modelos satildeo

mostrados nas figura 33 e 34

O primeiro Max Planck conteacutem 52809 surfels

Figura 33-Modelo do PointShop MaxPlanck

O segundo modelo abaixo Male conteacutem 148138 surfels

Resultados 66

Figura 34-Modelo do PointShop Male

As Figuras 353637 mostram o resultado da operaccedilatildeo de uniatildeo interseccedilatildeo

e diferenccedila respectivamente usando os dois modelos acima Podemos observar

pela figura 35 que o resultado da operaccedilatildeo de diferenccedila neste caso gerou um

modelo resultado com trecircs partes desconexas Os nuacutemeros de surfels de cada

modelo resultado satildeo mostrados na Tabela 5

Figura 35- Resultado da Uniatildeo do modelo Male com MaxPlanck

Resultados 67

Figura 36-Resultado da interseccedilatildeo do modelo Male com o MaxPlanck

Figura 37-Resultado da diferenccedila do modelo Male do modelo MaxPlanck

As meacutedias de tempos de processamento foram calculadas da mesma

forma que o primeiro teste com o modelo Igea acima apresentado Os

resultados satildeo mostrados na Tabela 4 Podemos observar que este teste

Resultados 68

apresenta tempos um pouco menores que o teste com o modelo Igea Isto se

deve ao fato de que o modelo MaxPlanck ser significativamente menor que o

modelo Igea MaxPlanck possui 52809 surfels e Igea conteacutem 134345 surfels

Operaccedilatildeo Criaccedilatildeo das

Octrees (seg)

Classificaccedilatildeo

(seg)

Criaccedilatildeo do

resultado (seg)

Total

(seg)

Uniatildeo 3012 1254 102 5285

Interseccedilatildeo 2985 0901 0861 4747

Diferenccedila 2965 0911 0791 4667

Tabela 4-Tempo de processamento das operaccedilotildees com os modelos MaxPlanck e Male

Operaccedilatildeo Nuacutemero de surfels do resultado

Uniatildeo 126532

Interseccedilatildeo 88414

Diferenccedila 77635

Tabela 5-Nuacutemero de surfels dos modelos resultados das operaccedilotildees com os modelos MaxPlanck e Male

Em seguida apresentaremos uma comparaccedilatildeo entre o nosso plugin e o

plugin de Pauly[3] e tambeacutem uma comparaccedilatildeo entre o meacutetodo de Adams e Dutreacute

[2] e o meacutetodo de Pauly [3]

62 Comparaccedilatildeo entre os dois meacutetodos que realizam operaccedilotildees booleanas

A comparaccedilatildeo entre os meacutetodos de Pauly[3] e de Adams e Dutreacute foi feita

em termos de tempo de processamento e em termos conceituais Em termos de

tempo de processamento comparamos o plugin de Pauly[3] com o nosso plugin

Em termos de tempo de processamento verifica-se empiricamente que os

dois meacutetodos apresentam tempos bastante similares Entretanto o tempo de

processamento do algoritmo aqui implementado ainda pode ser melhorado com

Resultados 69

o uso do meacutetodo TINN [19] que foi proposto em Adams[2] - para otimizar a

pesquisa do surfel mais proacuteximo a um ponto que estaacute localizado na regiatildeo de um

noacute que conteacutem surfels - veja seccedilatildeo 42 O uso deste meacutetodo natildeo foi

implementado para este trabalho e a sua implementaccedilatildeo melhoraria o tempo de

resposta do algoritmo Aleacutem disso o trabalho de Sara F Frisken [12] citado no

capiacutetulo 2 apresenta uma otimizaccedilatildeo no uso de octrees que pode ser

incorporada no algoritmo implementado neste trabalho

Em termos conceituais vamos fazer a comparaccedilatildeo do uso do que

chamamos aqui de Regra 2 do tratamento de interseccedilatildeo e do tratamento de

ldquoarestas vivasrdquo

Como vimos na seccedilatildeo 41 tanto o algoritmo implementado nesta

dissertaccedilatildeo baseado no trabalho de Adams e Dutreacute como o meacutetodo de Pauly

[3] parte do que chamamos aqui de Regra 2 para realizar operaccedilotildees booleanas

com pontos Mas cada um destes meacutetodos daacute um tratamento diferente para o

uso desta regra

O meacutetodo de Pauly usa a Regra 2 para classificaccedilatildeo de cada ponto ou de

cada surfel Para classificar um surfel de B sb como dentro ou fora de A eacute

encontrado o surfel de A sa mais proacuteximo a sb e sb eacute classificado a partir de sa

Para encontrar sa Pauly utiliza uma kd-tree Como esta pesquisa para encontrar

sa eacute cara (mesmo usando uma kd-tree) Pauly utiliza uma esfera que conteacutem

pontos com a mesma classificaccedilatildeo (seccedilatildeo 432) e diminui em 90 este nuacutemero

de pesquisas Pauly utiliza tambeacutem a representaccedilatildeo impliacutecita MLS (Moving Least

Squares) para casos em que a Regra 2 poderia falhar e para tratamento de

interseccedilotildees Entretanto o nuacutemero destes casos em que a Regra 2 poderia falhar

eacute muito pequeno E a representaccedilatildeo MLS natildeo eacute uma estrutura simples de ser

implementada Portanto natildeo encontramos vantagens em usar MLS para estes

casos O meacutetodo de Adams e Dutreacute natildeo trata estes casos e na praacutetica

apresenta resultados bastante satisfatoacuterios como foi mostrado Portanto

consideramos que valeria a pena fazer algum tratamento especial para estes

casos se fosse um procedimento simples Para a execuccedilatildeo do algoritmo de

Pauly o uso de MLS natildeo interfere significativamente porque a construccedilatildeo desta

representaccedilatildeo natildeo eacute feita somente para realizar operaccedilotildees booleanas Os testes

empiacutericos que fizemos com o algoritmo de Pauly natildeo incluem a construccedilatildeo desta

representaccedilatildeo

Aparentemente os dois algoritmos satildeo bastante parecidos um usa octrees

e o outro usa kd-tree As duas estruturas de dados satildeo simples e otimizam a

classificaccedilatildeo dos surfels de um modelo como dentro ou fora do outro modelo

Resultados 70

Mas existe uma diferenccedila conceitual entre dois que merece ser destacada O

algoritmo aqui implementado usa a Regra 2 para classificaccedilatildeo dos noacutes de uma

octree e armazena esta octree classificada (ver capiacutetulo 5) Assim na maioria dos

casos natildeo seraacute necessaacuterio encontrar o surfel mais proacuteximo para classificar um

ponto (ou um surfel) como fora ou dentro de um modelo Caso o ponto esteja em

uma aacuterea da octree classificada ele teraacute a classificaccedilatildeo dada agravequela aacuterea A

pesquisa ao surfel mais proacuteximo seraacute feita apenas nos casos em que o ponto a

ser classificado estaacute localizado entre os planos que subdividem um noacute cheio

O uso desta octree classificada levanta uma questatildeo que natildeo foi citada no

trabalho de Adams e Dutreacute que eacute a proximidade desta estrutura (armazenada)

de octree classificada com uma representaccedilatildeo volumeacutetrica do objeto Sendo

assim esta estrutura pode ser aproveitada para outras funccedilotildees aleacutem da

classificaccedilatildeo dos surfels Por exemplo podemos ter uma aproximaccedilatildeo do

volume de uma cena somando os volumes aproximados dos modelos que a

compotildeem Como o enfoque deste trabalho eacute operaccedilatildeo booleana natildeo vamos nos

aprofundar nesta questatildeo

Outra importante diferenccedila entre os dois trabalhos que jaacute foi explicada na

seccedilatildeo 432 eacute que o meacutetodo de Pauly aplica-se a modelos soacutelidos ou natildeo

soacutelidos enquanto que o meacutetodo de Adams e Dutreacute aplica-se somente a modelos

soacutelidos

Quanto ao tratamento de interseccedilatildeo em termos de visualizaccedilatildeo todos os

dois resolvem bem o problema O tratamento de interseccedilatildeo nos dois trabalhos

tambeacutem resolve o problema da validade da Regra 2 (ver seccedilatildeo 44) Entretanto

o tratamento de Adams e Dutreacute natildeo depende da renderizaccedilatildeo sendo portanto

mais portaacutevel Aleacutem disso uma desvantagem do meacutetodo de Pauly eacute o uso da

representaccedilatildeo impliacutecita MLS (ldquoMoving Least Squaresrdquo) do objeto para obter os

pontos exatamente na curva de interseccedilatildeo Esta representaccedilatildeo torna o

tratamento de interseccedilatildeo mais complexo e a vantagem apresentada natildeo eacute tatildeo

significativa para este tratamento de interseccedilatildeo

Conclusatildeo 71

7 Conclusatildeo

Concluiacutemos entatildeo que as escolhas de Adams e Dutreacute por usar uma

octree classificada e pelo tratamento dado agrave interseccedilatildeo satildeo mais abrangentes

que a escolha de Pauly E consideramos que quanto mais abrangente for uma

escolha conceitual mais resultados poderemos tirar dela No caso de Adams e

Dutreacute eles estendem o problema de classificar um ponto para classificar todo o

modelo Como foi citado ele quase fornece uma representaccedilatildeo volumeacutetrica do

modelo Esta aproximada representaccedilatildeo volumeacutetrica pode nos fornecer outras

informaccedilotildees como por exemplo o volume aproximado do modelo

Aleacutem disso o uso da representaccedilatildeo impliacutecita MLS no meacutetodo de Pauly cria

uma complexidade a mais para o meacutetodo sem apresentar vantagens para a

realizaccedilatildeo de operaccedilotildees booleanas que eacute o nosso enfoque

Logo podemos dizer que o meacutetodo de Adams e Dutreacute apresenta as

seguintes vantagens em relaccedilatildeo ao de Pauly

- a estrutura de octree classificada aleacutem de ser usada para classificaccedilatildeo

fornece informaccedilotildees adicionais como volume aproximado do objeto

- o tempo de processamento no meacutetodo de Adams e Dutreacute tende a ser

melhor que no meacutetodo de Pauly se implementadas as melhorias acima citadas e

se colocaacutessemos em consideraccedilatildeo o uso da representaccedilatildeo impliacutecita MLS

(Moving Least Squares)

- o tratamento de interseccedilatildeo de Adams e Dutreacute apresenta a vantagem da

portabilidade ou seja iraacute funcionar independente do algoritmo de renderizaccedilatildeo

utilizado

E as vantagens do meacutetodo de Pauly em relaccedilatildeo ao de Adams e Dutreacute

- a colocaccedilatildeo de surfels exatamente na curva de interseccedilatildeo

- a possibilidade de trabalhar com modelos soacutelidos ou natildeo soacutelidos

E finalizando concluiacutemos que o estudo relatado nesta dissertaccedilatildeo foi

importante por

- fornecer um breve estudo sobre modelagem por pontos uma nova e

promissora aacuterea dentro da computaccedilatildeo graacutefica

Conclusatildeo 72

- por apresentar uma avaliaccedilatildeo dos dois trabalhos existentes sobre

operaccedilotildees booleanas com pontos encontrando as vantagens de cada um

e levantando questotildees que natildeo tinham sido citadas nos trabalhos originais

- por propor e implementar melhorias ao trabalho de Adams e Dutreacute

71 Trabalhos Futuros

Nossa implementaccedilatildeo pode ser ainda evoluiacuteda com as propostas

apresentadas na seccedilatildeo 62 Como observamos o tempo de processamento do

algoritmo aqui implementado ainda pode ser melhorado com o uso do meacutetodo

TINN [19] - que foi proposto em Adams[2] - para otimizar a pesquisa do surfel

mais proacuteximo a um ponto que estaacute localizado na regiatildeo de um noacute que conteacutem

surfels Aleacutem disso o trabalho Simple and Efficient Trasversal Methods for

Quadtrees and Octrees de Sara F Frisken [12] citado no capiacutetulo 2 apresenta

uma otimizaccedilatildeo no uso de octrees Outra proposta para melhorar o tempo de

processamento do algoritmo aqui implementado eacute usar a forma de trabalhar com

octrees apresentada neste trabalho

O trabalho de Adams e Dutreacute [2] eacute aplicado apenas a objetos soacutelidos O

nosso plugin portanto aplica-se somente a este tipo de objeto Jaacute o trabalho de

Pauly[3] eacute aplicado tambeacutem a modelos natildeo soacutelidos Apresentamos como

proposta a um trabalho futuro a extensatildeo do algoritmo aqui implementado para

modelos natildeo soacutelidos O surfel pode conter uma informaccedilatildeo adicional que indica

se ele estaacute delimitando um volume ou natildeo Assim pode-se ter um modelo com

ldquopartes soacutelidasrdquo e ldquopartes natildeo soacutelidasrdquo Por exemplo a uniatildeo de um plano com

uma esfera poderia resultar numa esfera com ldquoabasrdquo (seriam as partes do plano

que estariam fora da esfera) O modelo resultado teria uma parte correspondente

a um espaccedilo 3D (esfera) e outra parte que seria uma superfiacutecie 2D posicionada

no espaccedilo 3D sem delimitar algum volume (abas)

Muitos trabalhos podem ser desenvolvidos aplicando-se o modelo por

pontos em animaccedilatildeo jogos visualizaccedilatildeo de terrenos criaccedilatildeo de protoacutetipos etc

considerando-se a eficiecircncia e simplicidade do modelo E mais especificamente

as operaccedilotildees booleanas com pontos podem ser aplicadas para criaccedilatildeo de

cenaacuterios testes de colisotildees e nestes casos a representaccedilatildeo usando octrees

pode ser mais explorada considerando-se o seu potencial de representaccedilatildeo

volumeacutetrica de um objeto

Referecircncias Bibliograacuteficas 73

8 Referecircncias Bibliograacuteficas

[1] MAumlNTYLAuml M An Introduction to Solid Modeling Computer Science Press 1988

[2] ADAMS B DUTREacute P Interactive Boolean Operations on Surfel-

Bounded Solids Proceedings of SIGGRAPH 2003 San Diego USA 2003

[3] PAULY M KEISER R KOBBELT L GROSS M Shape Modeling

with Point-Sampled Geometry SIGGRAPH 2003 Computer Graphics

Proceedings Annual Conference Series ACM Press ACM SIGGRAPH 2003

[4] LEVOY M WHITTED T The Use of Points as Display Primitives

Technical Report TR 85-022 The University of North Carolina at Chapel Hill

Department of Computer Science 1985

[5] PFISTER H ZWICKER M VAN BAAR J GROSS M 2000 Surfels

Surface Elements as Rendering Primitives SIGGRAPH 2000 pp 335ndash342 New

Orleans LA July 23-28 2000

[6] ZWICKER M PFISTER H VAN BAAR J GROSS M Surface

Splatting SIGGRAPH 2001

[7] PAULY M KOBBELT L GROSS M Multiresolution Modeling of

Point-Sampled Geometry CS Techinical Report 378 September 16 2002

[8] CURLESS B New Methods for Surface Reconstruction from Range Images PhD thesis Stanford University 1997

[9] RUSINKIEWICZ S Real-time Acquisition and Rendering of Large 3D Models PhD thesis Stanford University 2001

Referecircncias Bibliograacuteficas 74

[10] AMENTA N BERN M KAMVYSSELIS M A new Voronoi-Based

Surface Reconstruction Algorithm SIGGRAPH 98 Conference proceedings pp

415-421 New York 1998

[11] ZWICKER M PAULY M KNOLL O GROSS M Pointshop 3D an

Interactive System for Point-Based Surface Editing Proceedings of SIGGRAPH 2002 San Antonio TX July 2002

[12] FRISKEN S PERRY R Simple and Efficient Traversal Methods for

Quadtrees and Octrees Journal of Graphics Tools Vol 7 Issue 3 May 2003

[13] CORREcircA W T OLIVEIRA M M Silva C T Wang J

Modeling and Rendering of Real Environments

Revista de Informaacutetica Teoacuterica e Aplicada (Brazilian Journal of Theoretic and Applied Computing) 9(2)127-156 2002

[14] DAVIS J MARSCHNER S GARR M LEVOY M Filling Holes in

Complex Surfaces Using Volumetric Diffusion First International Symposium on 3D Data Processing Visualization Transmission June 2002

[15] RAumlSAumlNEN J Surface Splatting Theory Extensions and Implementation Masterrsquos Thesis Dept of Computer Science Helsinki

University of Technology May 28 2002

[16] PAULY M Point Primitives for Interactive Modeling and Processing of 3D Geometry PhD thesis Federal Institute of Technology (ETH)

of Zurich 2003

[17] HOPPE H DEROSE T DUCHAMP T MCDONALD J

STUELZLE W Surface Reconstruction from Unorganized Points Computer Graphics 26(2)71ndash78 July 1992

[18] ALEXA M BEHR J COHEN-OR D FLEISHMAN S LEVIN D

SILVA C T Point Set Surfaces IEEE Visualization 2001 pp 21ndash28 October

2001

Referecircncias Bibliograacuteficas 75

[19] GREENSPAN M GODIN G TALBOT J Acceleration of Binning

Nearest Neighbor Methods Proceedings of Vision Interface 2000 pp 337-

344

[20] MENCL R Reconstruction of Surfaces from Unorganized Three-Dimensional Point Clouds Dissertation Dortmund Univ 2001

[21] KRIVANEK J Representing and Rendering Surfaces With Points

httpciteseernjneccomkrivanek03representinghtml Acesso em 30 jul

2003

[22] KRISTJANSSON ET AL Approximate Boolean Operations on Free-

form Solids Proceedings of SIGGRAPH 01 2001

Resultados 61

6 Resultados

Neste capiacutetulo apresentamos os testes realizados com o plugin para o

PointShop implementado para esta dissertaccedilatildeo a comparaccedilatildeo deste plugin com

o plugin de Pauly [3] e a comparaccedilatildeo entre o meacutetodo de Adams e Dutreacute [2] e o

meacutetodo de Pauly [3]

61 Testes

Os testes foram feitos em um PC x86 Family 6 261600 KB de RAM sem

placa graacutefica sistema operacional Windows 2000 O plugin foi implementado na

linguagem C

Os modelos usados para os testes satildeo modelos disponibilizados no

PointShop [11] Vale lembrar que o meacutetodo implementado em nosso plugin eacute

restrito a modelos soacutelidos e portanto foram usados apenas estes modelos

soacutelidos para os testes

O modelo na Figura 29 que eacute um dos modelos disponibilizados no

PointShop [11] foi usado para mostrar o resultado das operaccedilotildees realizadas

pelo plugin implementado nesta dissertaccedilatildeo O modelo Igea eacute um modelo soacutelido

que conteacutem 134345 surfels

Resultados 62

Figura 29-Modelo do PointShop Igea

Para realizar as operaccedilotildees este modelo foi carregado na cena do

PointShop duas vezes e um deles colorido de vermelho As Figuras 30 31 32

mostram o resultado da operaccedilatildeo de uniatildeo interseccedilatildeo e diferenccedila

respectivamente Os nuacutemeros de surfels dos modelos resultantes satildeo mostrados

na Tabela 2

Resultados 63

Figura 30-Resultado da uniatildeo de duas Igeas

Figura 31-Resultado da interseccedilatildeo de duas Igeas

Resultados 64

Figura 32-Resultado da diferenccedila entre duas Igeas

Tabela 2-Nuacutemero de surfels dos modelos resultantes

Observamos que o nuacutemero de surfels dos modelos resultantes estaacute

coerente com as figuras dos seus modelos

Para avaliar o tempo de processamento das operaccedilotildees foram realizados

vaacuterios testes com o objetivo de obter uma meacutedia dos tempos de realizaccedilatildeo de

cada operaccedilatildeo Tambeacutem foram armazenados os tempos da criaccedilatildeo das duas

octrees e da classificaccedilatildeo de todos os surfels dos dois objetos (como dentro ou

fora do outro modelo) Estes testes foram feitos usando o modelo Igea A meacutedia

dos tempos de processamento foi calculada e os resultados satildeo mostrados na

Tabela 3 Verificamos que o maior tempo gasto eacute para criaccedilatildeo das octrees

Verificamos tambeacutem que este resultado apresentado eacute similar ao resultado

verificado empiricamente com o plugin de Pauly [3] Os tempos gastos para

realizar as operaccedilotildees satildeo similares e o maior tempo gasto no plugin de Pauly

tambeacutem eacute para inicializaccedilatildeo de suas estruturas de dados que incluem a kd-tree

Operaccedilatildeo Nuacutemero de surfels do modelo resultado

Uniatildeo 189715

Interseccedilatildeo 72225

Diferenccedila 134552

Resultados 65

Operaccedilatildeo Criaccedilatildeo das

Octrees (seg)

Classificaccedilatildeo

(seg)

Criaccedilatildeo do

resultado (seg)

Total (seg)

Uniatildeo 39375 1324 18925 7154

Interseccedilatildeo 38585 1585 09547 63982

Diferenccedila 399875 1504 1729 729475

Tabela 3- Meacutedia dos tempos de processamento para as operaccedilotildees com duas Igeas

Com o objetivo de expor melhor os resultados deste trabalho

apresentamos abaixo mais um teste das operaccedilotildees booleanas usando o nosso

plugin Os modelos usados para este segundo teste satildeo o Max Planck e o Male

ambos modelos soacutelidos disponibilizados no PointShop Estes modelos satildeo

mostrados nas figura 33 e 34

O primeiro Max Planck conteacutem 52809 surfels

Figura 33-Modelo do PointShop MaxPlanck

O segundo modelo abaixo Male conteacutem 148138 surfels

Resultados 66

Figura 34-Modelo do PointShop Male

As Figuras 353637 mostram o resultado da operaccedilatildeo de uniatildeo interseccedilatildeo

e diferenccedila respectivamente usando os dois modelos acima Podemos observar

pela figura 35 que o resultado da operaccedilatildeo de diferenccedila neste caso gerou um

modelo resultado com trecircs partes desconexas Os nuacutemeros de surfels de cada

modelo resultado satildeo mostrados na Tabela 5

Figura 35- Resultado da Uniatildeo do modelo Male com MaxPlanck

Resultados 67

Figura 36-Resultado da interseccedilatildeo do modelo Male com o MaxPlanck

Figura 37-Resultado da diferenccedila do modelo Male do modelo MaxPlanck

As meacutedias de tempos de processamento foram calculadas da mesma

forma que o primeiro teste com o modelo Igea acima apresentado Os

resultados satildeo mostrados na Tabela 4 Podemos observar que este teste

Resultados 68

apresenta tempos um pouco menores que o teste com o modelo Igea Isto se

deve ao fato de que o modelo MaxPlanck ser significativamente menor que o

modelo Igea MaxPlanck possui 52809 surfels e Igea conteacutem 134345 surfels

Operaccedilatildeo Criaccedilatildeo das

Octrees (seg)

Classificaccedilatildeo

(seg)

Criaccedilatildeo do

resultado (seg)

Total

(seg)

Uniatildeo 3012 1254 102 5285

Interseccedilatildeo 2985 0901 0861 4747

Diferenccedila 2965 0911 0791 4667

Tabela 4-Tempo de processamento das operaccedilotildees com os modelos MaxPlanck e Male

Operaccedilatildeo Nuacutemero de surfels do resultado

Uniatildeo 126532

Interseccedilatildeo 88414

Diferenccedila 77635

Tabela 5-Nuacutemero de surfels dos modelos resultados das operaccedilotildees com os modelos MaxPlanck e Male

Em seguida apresentaremos uma comparaccedilatildeo entre o nosso plugin e o

plugin de Pauly[3] e tambeacutem uma comparaccedilatildeo entre o meacutetodo de Adams e Dutreacute

[2] e o meacutetodo de Pauly [3]

62 Comparaccedilatildeo entre os dois meacutetodos que realizam operaccedilotildees booleanas

A comparaccedilatildeo entre os meacutetodos de Pauly[3] e de Adams e Dutreacute foi feita

em termos de tempo de processamento e em termos conceituais Em termos de

tempo de processamento comparamos o plugin de Pauly[3] com o nosso plugin

Em termos de tempo de processamento verifica-se empiricamente que os

dois meacutetodos apresentam tempos bastante similares Entretanto o tempo de

processamento do algoritmo aqui implementado ainda pode ser melhorado com

Resultados 69

o uso do meacutetodo TINN [19] que foi proposto em Adams[2] - para otimizar a

pesquisa do surfel mais proacuteximo a um ponto que estaacute localizado na regiatildeo de um

noacute que conteacutem surfels - veja seccedilatildeo 42 O uso deste meacutetodo natildeo foi

implementado para este trabalho e a sua implementaccedilatildeo melhoraria o tempo de

resposta do algoritmo Aleacutem disso o trabalho de Sara F Frisken [12] citado no

capiacutetulo 2 apresenta uma otimizaccedilatildeo no uso de octrees que pode ser

incorporada no algoritmo implementado neste trabalho

Em termos conceituais vamos fazer a comparaccedilatildeo do uso do que

chamamos aqui de Regra 2 do tratamento de interseccedilatildeo e do tratamento de

ldquoarestas vivasrdquo

Como vimos na seccedilatildeo 41 tanto o algoritmo implementado nesta

dissertaccedilatildeo baseado no trabalho de Adams e Dutreacute como o meacutetodo de Pauly

[3] parte do que chamamos aqui de Regra 2 para realizar operaccedilotildees booleanas

com pontos Mas cada um destes meacutetodos daacute um tratamento diferente para o

uso desta regra

O meacutetodo de Pauly usa a Regra 2 para classificaccedilatildeo de cada ponto ou de

cada surfel Para classificar um surfel de B sb como dentro ou fora de A eacute

encontrado o surfel de A sa mais proacuteximo a sb e sb eacute classificado a partir de sa

Para encontrar sa Pauly utiliza uma kd-tree Como esta pesquisa para encontrar

sa eacute cara (mesmo usando uma kd-tree) Pauly utiliza uma esfera que conteacutem

pontos com a mesma classificaccedilatildeo (seccedilatildeo 432) e diminui em 90 este nuacutemero

de pesquisas Pauly utiliza tambeacutem a representaccedilatildeo impliacutecita MLS (Moving Least

Squares) para casos em que a Regra 2 poderia falhar e para tratamento de

interseccedilotildees Entretanto o nuacutemero destes casos em que a Regra 2 poderia falhar

eacute muito pequeno E a representaccedilatildeo MLS natildeo eacute uma estrutura simples de ser

implementada Portanto natildeo encontramos vantagens em usar MLS para estes

casos O meacutetodo de Adams e Dutreacute natildeo trata estes casos e na praacutetica

apresenta resultados bastante satisfatoacuterios como foi mostrado Portanto

consideramos que valeria a pena fazer algum tratamento especial para estes

casos se fosse um procedimento simples Para a execuccedilatildeo do algoritmo de

Pauly o uso de MLS natildeo interfere significativamente porque a construccedilatildeo desta

representaccedilatildeo natildeo eacute feita somente para realizar operaccedilotildees booleanas Os testes

empiacutericos que fizemos com o algoritmo de Pauly natildeo incluem a construccedilatildeo desta

representaccedilatildeo

Aparentemente os dois algoritmos satildeo bastante parecidos um usa octrees

e o outro usa kd-tree As duas estruturas de dados satildeo simples e otimizam a

classificaccedilatildeo dos surfels de um modelo como dentro ou fora do outro modelo

Resultados 70

Mas existe uma diferenccedila conceitual entre dois que merece ser destacada O

algoritmo aqui implementado usa a Regra 2 para classificaccedilatildeo dos noacutes de uma

octree e armazena esta octree classificada (ver capiacutetulo 5) Assim na maioria dos

casos natildeo seraacute necessaacuterio encontrar o surfel mais proacuteximo para classificar um

ponto (ou um surfel) como fora ou dentro de um modelo Caso o ponto esteja em

uma aacuterea da octree classificada ele teraacute a classificaccedilatildeo dada agravequela aacuterea A

pesquisa ao surfel mais proacuteximo seraacute feita apenas nos casos em que o ponto a

ser classificado estaacute localizado entre os planos que subdividem um noacute cheio

O uso desta octree classificada levanta uma questatildeo que natildeo foi citada no

trabalho de Adams e Dutreacute que eacute a proximidade desta estrutura (armazenada)

de octree classificada com uma representaccedilatildeo volumeacutetrica do objeto Sendo

assim esta estrutura pode ser aproveitada para outras funccedilotildees aleacutem da

classificaccedilatildeo dos surfels Por exemplo podemos ter uma aproximaccedilatildeo do

volume de uma cena somando os volumes aproximados dos modelos que a

compotildeem Como o enfoque deste trabalho eacute operaccedilatildeo booleana natildeo vamos nos

aprofundar nesta questatildeo

Outra importante diferenccedila entre os dois trabalhos que jaacute foi explicada na

seccedilatildeo 432 eacute que o meacutetodo de Pauly aplica-se a modelos soacutelidos ou natildeo

soacutelidos enquanto que o meacutetodo de Adams e Dutreacute aplica-se somente a modelos

soacutelidos

Quanto ao tratamento de interseccedilatildeo em termos de visualizaccedilatildeo todos os

dois resolvem bem o problema O tratamento de interseccedilatildeo nos dois trabalhos

tambeacutem resolve o problema da validade da Regra 2 (ver seccedilatildeo 44) Entretanto

o tratamento de Adams e Dutreacute natildeo depende da renderizaccedilatildeo sendo portanto

mais portaacutevel Aleacutem disso uma desvantagem do meacutetodo de Pauly eacute o uso da

representaccedilatildeo impliacutecita MLS (ldquoMoving Least Squaresrdquo) do objeto para obter os

pontos exatamente na curva de interseccedilatildeo Esta representaccedilatildeo torna o

tratamento de interseccedilatildeo mais complexo e a vantagem apresentada natildeo eacute tatildeo

significativa para este tratamento de interseccedilatildeo

Conclusatildeo 71

7 Conclusatildeo

Concluiacutemos entatildeo que as escolhas de Adams e Dutreacute por usar uma

octree classificada e pelo tratamento dado agrave interseccedilatildeo satildeo mais abrangentes

que a escolha de Pauly E consideramos que quanto mais abrangente for uma

escolha conceitual mais resultados poderemos tirar dela No caso de Adams e

Dutreacute eles estendem o problema de classificar um ponto para classificar todo o

modelo Como foi citado ele quase fornece uma representaccedilatildeo volumeacutetrica do

modelo Esta aproximada representaccedilatildeo volumeacutetrica pode nos fornecer outras

informaccedilotildees como por exemplo o volume aproximado do modelo

Aleacutem disso o uso da representaccedilatildeo impliacutecita MLS no meacutetodo de Pauly cria

uma complexidade a mais para o meacutetodo sem apresentar vantagens para a

realizaccedilatildeo de operaccedilotildees booleanas que eacute o nosso enfoque

Logo podemos dizer que o meacutetodo de Adams e Dutreacute apresenta as

seguintes vantagens em relaccedilatildeo ao de Pauly

- a estrutura de octree classificada aleacutem de ser usada para classificaccedilatildeo

fornece informaccedilotildees adicionais como volume aproximado do objeto

- o tempo de processamento no meacutetodo de Adams e Dutreacute tende a ser

melhor que no meacutetodo de Pauly se implementadas as melhorias acima citadas e

se colocaacutessemos em consideraccedilatildeo o uso da representaccedilatildeo impliacutecita MLS

(Moving Least Squares)

- o tratamento de interseccedilatildeo de Adams e Dutreacute apresenta a vantagem da

portabilidade ou seja iraacute funcionar independente do algoritmo de renderizaccedilatildeo

utilizado

E as vantagens do meacutetodo de Pauly em relaccedilatildeo ao de Adams e Dutreacute

- a colocaccedilatildeo de surfels exatamente na curva de interseccedilatildeo

- a possibilidade de trabalhar com modelos soacutelidos ou natildeo soacutelidos

E finalizando concluiacutemos que o estudo relatado nesta dissertaccedilatildeo foi

importante por

- fornecer um breve estudo sobre modelagem por pontos uma nova e

promissora aacuterea dentro da computaccedilatildeo graacutefica

Conclusatildeo 72

- por apresentar uma avaliaccedilatildeo dos dois trabalhos existentes sobre

operaccedilotildees booleanas com pontos encontrando as vantagens de cada um

e levantando questotildees que natildeo tinham sido citadas nos trabalhos originais

- por propor e implementar melhorias ao trabalho de Adams e Dutreacute

71 Trabalhos Futuros

Nossa implementaccedilatildeo pode ser ainda evoluiacuteda com as propostas

apresentadas na seccedilatildeo 62 Como observamos o tempo de processamento do

algoritmo aqui implementado ainda pode ser melhorado com o uso do meacutetodo

TINN [19] - que foi proposto em Adams[2] - para otimizar a pesquisa do surfel

mais proacuteximo a um ponto que estaacute localizado na regiatildeo de um noacute que conteacutem

surfels Aleacutem disso o trabalho Simple and Efficient Trasversal Methods for

Quadtrees and Octrees de Sara F Frisken [12] citado no capiacutetulo 2 apresenta

uma otimizaccedilatildeo no uso de octrees Outra proposta para melhorar o tempo de

processamento do algoritmo aqui implementado eacute usar a forma de trabalhar com

octrees apresentada neste trabalho

O trabalho de Adams e Dutreacute [2] eacute aplicado apenas a objetos soacutelidos O

nosso plugin portanto aplica-se somente a este tipo de objeto Jaacute o trabalho de

Pauly[3] eacute aplicado tambeacutem a modelos natildeo soacutelidos Apresentamos como

proposta a um trabalho futuro a extensatildeo do algoritmo aqui implementado para

modelos natildeo soacutelidos O surfel pode conter uma informaccedilatildeo adicional que indica

se ele estaacute delimitando um volume ou natildeo Assim pode-se ter um modelo com

ldquopartes soacutelidasrdquo e ldquopartes natildeo soacutelidasrdquo Por exemplo a uniatildeo de um plano com

uma esfera poderia resultar numa esfera com ldquoabasrdquo (seriam as partes do plano

que estariam fora da esfera) O modelo resultado teria uma parte correspondente

a um espaccedilo 3D (esfera) e outra parte que seria uma superfiacutecie 2D posicionada

no espaccedilo 3D sem delimitar algum volume (abas)

Muitos trabalhos podem ser desenvolvidos aplicando-se o modelo por

pontos em animaccedilatildeo jogos visualizaccedilatildeo de terrenos criaccedilatildeo de protoacutetipos etc

considerando-se a eficiecircncia e simplicidade do modelo E mais especificamente

as operaccedilotildees booleanas com pontos podem ser aplicadas para criaccedilatildeo de

cenaacuterios testes de colisotildees e nestes casos a representaccedilatildeo usando octrees

pode ser mais explorada considerando-se o seu potencial de representaccedilatildeo

volumeacutetrica de um objeto

Referecircncias Bibliograacuteficas 73

8 Referecircncias Bibliograacuteficas

[1] MAumlNTYLAuml M An Introduction to Solid Modeling Computer Science Press 1988

[2] ADAMS B DUTREacute P Interactive Boolean Operations on Surfel-

Bounded Solids Proceedings of SIGGRAPH 2003 San Diego USA 2003

[3] PAULY M KEISER R KOBBELT L GROSS M Shape Modeling

with Point-Sampled Geometry SIGGRAPH 2003 Computer Graphics

Proceedings Annual Conference Series ACM Press ACM SIGGRAPH 2003

[4] LEVOY M WHITTED T The Use of Points as Display Primitives

Technical Report TR 85-022 The University of North Carolina at Chapel Hill

Department of Computer Science 1985

[5] PFISTER H ZWICKER M VAN BAAR J GROSS M 2000 Surfels

Surface Elements as Rendering Primitives SIGGRAPH 2000 pp 335ndash342 New

Orleans LA July 23-28 2000

[6] ZWICKER M PFISTER H VAN BAAR J GROSS M Surface

Splatting SIGGRAPH 2001

[7] PAULY M KOBBELT L GROSS M Multiresolution Modeling of

Point-Sampled Geometry CS Techinical Report 378 September 16 2002

[8] CURLESS B New Methods for Surface Reconstruction from Range Images PhD thesis Stanford University 1997

[9] RUSINKIEWICZ S Real-time Acquisition and Rendering of Large 3D Models PhD thesis Stanford University 2001

Referecircncias Bibliograacuteficas 74

[10] AMENTA N BERN M KAMVYSSELIS M A new Voronoi-Based

Surface Reconstruction Algorithm SIGGRAPH 98 Conference proceedings pp

415-421 New York 1998

[11] ZWICKER M PAULY M KNOLL O GROSS M Pointshop 3D an

Interactive System for Point-Based Surface Editing Proceedings of SIGGRAPH 2002 San Antonio TX July 2002

[12] FRISKEN S PERRY R Simple and Efficient Traversal Methods for

Quadtrees and Octrees Journal of Graphics Tools Vol 7 Issue 3 May 2003

[13] CORREcircA W T OLIVEIRA M M Silva C T Wang J

Modeling and Rendering of Real Environments

Revista de Informaacutetica Teoacuterica e Aplicada (Brazilian Journal of Theoretic and Applied Computing) 9(2)127-156 2002

[14] DAVIS J MARSCHNER S GARR M LEVOY M Filling Holes in

Complex Surfaces Using Volumetric Diffusion First International Symposium on 3D Data Processing Visualization Transmission June 2002

[15] RAumlSAumlNEN J Surface Splatting Theory Extensions and Implementation Masterrsquos Thesis Dept of Computer Science Helsinki

University of Technology May 28 2002

[16] PAULY M Point Primitives for Interactive Modeling and Processing of 3D Geometry PhD thesis Federal Institute of Technology (ETH)

of Zurich 2003

[17] HOPPE H DEROSE T DUCHAMP T MCDONALD J

STUELZLE W Surface Reconstruction from Unorganized Points Computer Graphics 26(2)71ndash78 July 1992

[18] ALEXA M BEHR J COHEN-OR D FLEISHMAN S LEVIN D

SILVA C T Point Set Surfaces IEEE Visualization 2001 pp 21ndash28 October

2001

Referecircncias Bibliograacuteficas 75

[19] GREENSPAN M GODIN G TALBOT J Acceleration of Binning

Nearest Neighbor Methods Proceedings of Vision Interface 2000 pp 337-

344

[20] MENCL R Reconstruction of Surfaces from Unorganized Three-Dimensional Point Clouds Dissertation Dortmund Univ 2001

[21] KRIVANEK J Representing and Rendering Surfaces With Points

httpciteseernjneccomkrivanek03representinghtml Acesso em 30 jul

2003

[22] KRISTJANSSON ET AL Approximate Boolean Operations on Free-

form Solids Proceedings of SIGGRAPH 01 2001

Resultados 62

Figura 29-Modelo do PointShop Igea

Para realizar as operaccedilotildees este modelo foi carregado na cena do

PointShop duas vezes e um deles colorido de vermelho As Figuras 30 31 32

mostram o resultado da operaccedilatildeo de uniatildeo interseccedilatildeo e diferenccedila

respectivamente Os nuacutemeros de surfels dos modelos resultantes satildeo mostrados

na Tabela 2

Resultados 63

Figura 30-Resultado da uniatildeo de duas Igeas

Figura 31-Resultado da interseccedilatildeo de duas Igeas

Resultados 64

Figura 32-Resultado da diferenccedila entre duas Igeas

Tabela 2-Nuacutemero de surfels dos modelos resultantes

Observamos que o nuacutemero de surfels dos modelos resultantes estaacute

coerente com as figuras dos seus modelos

Para avaliar o tempo de processamento das operaccedilotildees foram realizados

vaacuterios testes com o objetivo de obter uma meacutedia dos tempos de realizaccedilatildeo de

cada operaccedilatildeo Tambeacutem foram armazenados os tempos da criaccedilatildeo das duas

octrees e da classificaccedilatildeo de todos os surfels dos dois objetos (como dentro ou

fora do outro modelo) Estes testes foram feitos usando o modelo Igea A meacutedia

dos tempos de processamento foi calculada e os resultados satildeo mostrados na

Tabela 3 Verificamos que o maior tempo gasto eacute para criaccedilatildeo das octrees

Verificamos tambeacutem que este resultado apresentado eacute similar ao resultado

verificado empiricamente com o plugin de Pauly [3] Os tempos gastos para

realizar as operaccedilotildees satildeo similares e o maior tempo gasto no plugin de Pauly

tambeacutem eacute para inicializaccedilatildeo de suas estruturas de dados que incluem a kd-tree

Operaccedilatildeo Nuacutemero de surfels do modelo resultado

Uniatildeo 189715

Interseccedilatildeo 72225

Diferenccedila 134552

Resultados 65

Operaccedilatildeo Criaccedilatildeo das

Octrees (seg)

Classificaccedilatildeo

(seg)

Criaccedilatildeo do

resultado (seg)

Total (seg)

Uniatildeo 39375 1324 18925 7154

Interseccedilatildeo 38585 1585 09547 63982

Diferenccedila 399875 1504 1729 729475

Tabela 3- Meacutedia dos tempos de processamento para as operaccedilotildees com duas Igeas

Com o objetivo de expor melhor os resultados deste trabalho

apresentamos abaixo mais um teste das operaccedilotildees booleanas usando o nosso

plugin Os modelos usados para este segundo teste satildeo o Max Planck e o Male

ambos modelos soacutelidos disponibilizados no PointShop Estes modelos satildeo

mostrados nas figura 33 e 34

O primeiro Max Planck conteacutem 52809 surfels

Figura 33-Modelo do PointShop MaxPlanck

O segundo modelo abaixo Male conteacutem 148138 surfels

Resultados 66

Figura 34-Modelo do PointShop Male

As Figuras 353637 mostram o resultado da operaccedilatildeo de uniatildeo interseccedilatildeo

e diferenccedila respectivamente usando os dois modelos acima Podemos observar

pela figura 35 que o resultado da operaccedilatildeo de diferenccedila neste caso gerou um

modelo resultado com trecircs partes desconexas Os nuacutemeros de surfels de cada

modelo resultado satildeo mostrados na Tabela 5

Figura 35- Resultado da Uniatildeo do modelo Male com MaxPlanck

Resultados 67

Figura 36-Resultado da interseccedilatildeo do modelo Male com o MaxPlanck

Figura 37-Resultado da diferenccedila do modelo Male do modelo MaxPlanck

As meacutedias de tempos de processamento foram calculadas da mesma

forma que o primeiro teste com o modelo Igea acima apresentado Os

resultados satildeo mostrados na Tabela 4 Podemos observar que este teste

Resultados 68

apresenta tempos um pouco menores que o teste com o modelo Igea Isto se

deve ao fato de que o modelo MaxPlanck ser significativamente menor que o

modelo Igea MaxPlanck possui 52809 surfels e Igea conteacutem 134345 surfels

Operaccedilatildeo Criaccedilatildeo das

Octrees (seg)

Classificaccedilatildeo

(seg)

Criaccedilatildeo do

resultado (seg)

Total

(seg)

Uniatildeo 3012 1254 102 5285

Interseccedilatildeo 2985 0901 0861 4747

Diferenccedila 2965 0911 0791 4667

Tabela 4-Tempo de processamento das operaccedilotildees com os modelos MaxPlanck e Male

Operaccedilatildeo Nuacutemero de surfels do resultado

Uniatildeo 126532

Interseccedilatildeo 88414

Diferenccedila 77635

Tabela 5-Nuacutemero de surfels dos modelos resultados das operaccedilotildees com os modelos MaxPlanck e Male

Em seguida apresentaremos uma comparaccedilatildeo entre o nosso plugin e o

plugin de Pauly[3] e tambeacutem uma comparaccedilatildeo entre o meacutetodo de Adams e Dutreacute

[2] e o meacutetodo de Pauly [3]

62 Comparaccedilatildeo entre os dois meacutetodos que realizam operaccedilotildees booleanas

A comparaccedilatildeo entre os meacutetodos de Pauly[3] e de Adams e Dutreacute foi feita

em termos de tempo de processamento e em termos conceituais Em termos de

tempo de processamento comparamos o plugin de Pauly[3] com o nosso plugin

Em termos de tempo de processamento verifica-se empiricamente que os

dois meacutetodos apresentam tempos bastante similares Entretanto o tempo de

processamento do algoritmo aqui implementado ainda pode ser melhorado com

Resultados 69

o uso do meacutetodo TINN [19] que foi proposto em Adams[2] - para otimizar a

pesquisa do surfel mais proacuteximo a um ponto que estaacute localizado na regiatildeo de um

noacute que conteacutem surfels - veja seccedilatildeo 42 O uso deste meacutetodo natildeo foi

implementado para este trabalho e a sua implementaccedilatildeo melhoraria o tempo de

resposta do algoritmo Aleacutem disso o trabalho de Sara F Frisken [12] citado no

capiacutetulo 2 apresenta uma otimizaccedilatildeo no uso de octrees que pode ser

incorporada no algoritmo implementado neste trabalho

Em termos conceituais vamos fazer a comparaccedilatildeo do uso do que

chamamos aqui de Regra 2 do tratamento de interseccedilatildeo e do tratamento de

ldquoarestas vivasrdquo

Como vimos na seccedilatildeo 41 tanto o algoritmo implementado nesta

dissertaccedilatildeo baseado no trabalho de Adams e Dutreacute como o meacutetodo de Pauly

[3] parte do que chamamos aqui de Regra 2 para realizar operaccedilotildees booleanas

com pontos Mas cada um destes meacutetodos daacute um tratamento diferente para o

uso desta regra

O meacutetodo de Pauly usa a Regra 2 para classificaccedilatildeo de cada ponto ou de

cada surfel Para classificar um surfel de B sb como dentro ou fora de A eacute

encontrado o surfel de A sa mais proacuteximo a sb e sb eacute classificado a partir de sa

Para encontrar sa Pauly utiliza uma kd-tree Como esta pesquisa para encontrar

sa eacute cara (mesmo usando uma kd-tree) Pauly utiliza uma esfera que conteacutem

pontos com a mesma classificaccedilatildeo (seccedilatildeo 432) e diminui em 90 este nuacutemero

de pesquisas Pauly utiliza tambeacutem a representaccedilatildeo impliacutecita MLS (Moving Least

Squares) para casos em que a Regra 2 poderia falhar e para tratamento de

interseccedilotildees Entretanto o nuacutemero destes casos em que a Regra 2 poderia falhar

eacute muito pequeno E a representaccedilatildeo MLS natildeo eacute uma estrutura simples de ser

implementada Portanto natildeo encontramos vantagens em usar MLS para estes

casos O meacutetodo de Adams e Dutreacute natildeo trata estes casos e na praacutetica

apresenta resultados bastante satisfatoacuterios como foi mostrado Portanto

consideramos que valeria a pena fazer algum tratamento especial para estes

casos se fosse um procedimento simples Para a execuccedilatildeo do algoritmo de

Pauly o uso de MLS natildeo interfere significativamente porque a construccedilatildeo desta

representaccedilatildeo natildeo eacute feita somente para realizar operaccedilotildees booleanas Os testes

empiacutericos que fizemos com o algoritmo de Pauly natildeo incluem a construccedilatildeo desta

representaccedilatildeo

Aparentemente os dois algoritmos satildeo bastante parecidos um usa octrees

e o outro usa kd-tree As duas estruturas de dados satildeo simples e otimizam a

classificaccedilatildeo dos surfels de um modelo como dentro ou fora do outro modelo

Resultados 70

Mas existe uma diferenccedila conceitual entre dois que merece ser destacada O

algoritmo aqui implementado usa a Regra 2 para classificaccedilatildeo dos noacutes de uma

octree e armazena esta octree classificada (ver capiacutetulo 5) Assim na maioria dos

casos natildeo seraacute necessaacuterio encontrar o surfel mais proacuteximo para classificar um

ponto (ou um surfel) como fora ou dentro de um modelo Caso o ponto esteja em

uma aacuterea da octree classificada ele teraacute a classificaccedilatildeo dada agravequela aacuterea A

pesquisa ao surfel mais proacuteximo seraacute feita apenas nos casos em que o ponto a

ser classificado estaacute localizado entre os planos que subdividem um noacute cheio

O uso desta octree classificada levanta uma questatildeo que natildeo foi citada no

trabalho de Adams e Dutreacute que eacute a proximidade desta estrutura (armazenada)

de octree classificada com uma representaccedilatildeo volumeacutetrica do objeto Sendo

assim esta estrutura pode ser aproveitada para outras funccedilotildees aleacutem da

classificaccedilatildeo dos surfels Por exemplo podemos ter uma aproximaccedilatildeo do

volume de uma cena somando os volumes aproximados dos modelos que a

compotildeem Como o enfoque deste trabalho eacute operaccedilatildeo booleana natildeo vamos nos

aprofundar nesta questatildeo

Outra importante diferenccedila entre os dois trabalhos que jaacute foi explicada na

seccedilatildeo 432 eacute que o meacutetodo de Pauly aplica-se a modelos soacutelidos ou natildeo

soacutelidos enquanto que o meacutetodo de Adams e Dutreacute aplica-se somente a modelos

soacutelidos

Quanto ao tratamento de interseccedilatildeo em termos de visualizaccedilatildeo todos os

dois resolvem bem o problema O tratamento de interseccedilatildeo nos dois trabalhos

tambeacutem resolve o problema da validade da Regra 2 (ver seccedilatildeo 44) Entretanto

o tratamento de Adams e Dutreacute natildeo depende da renderizaccedilatildeo sendo portanto

mais portaacutevel Aleacutem disso uma desvantagem do meacutetodo de Pauly eacute o uso da

representaccedilatildeo impliacutecita MLS (ldquoMoving Least Squaresrdquo) do objeto para obter os

pontos exatamente na curva de interseccedilatildeo Esta representaccedilatildeo torna o

tratamento de interseccedilatildeo mais complexo e a vantagem apresentada natildeo eacute tatildeo

significativa para este tratamento de interseccedilatildeo

Conclusatildeo 71

7 Conclusatildeo

Concluiacutemos entatildeo que as escolhas de Adams e Dutreacute por usar uma

octree classificada e pelo tratamento dado agrave interseccedilatildeo satildeo mais abrangentes

que a escolha de Pauly E consideramos que quanto mais abrangente for uma

escolha conceitual mais resultados poderemos tirar dela No caso de Adams e

Dutreacute eles estendem o problema de classificar um ponto para classificar todo o

modelo Como foi citado ele quase fornece uma representaccedilatildeo volumeacutetrica do

modelo Esta aproximada representaccedilatildeo volumeacutetrica pode nos fornecer outras

informaccedilotildees como por exemplo o volume aproximado do modelo

Aleacutem disso o uso da representaccedilatildeo impliacutecita MLS no meacutetodo de Pauly cria

uma complexidade a mais para o meacutetodo sem apresentar vantagens para a

realizaccedilatildeo de operaccedilotildees booleanas que eacute o nosso enfoque

Logo podemos dizer que o meacutetodo de Adams e Dutreacute apresenta as

seguintes vantagens em relaccedilatildeo ao de Pauly

- a estrutura de octree classificada aleacutem de ser usada para classificaccedilatildeo

fornece informaccedilotildees adicionais como volume aproximado do objeto

- o tempo de processamento no meacutetodo de Adams e Dutreacute tende a ser

melhor que no meacutetodo de Pauly se implementadas as melhorias acima citadas e

se colocaacutessemos em consideraccedilatildeo o uso da representaccedilatildeo impliacutecita MLS

(Moving Least Squares)

- o tratamento de interseccedilatildeo de Adams e Dutreacute apresenta a vantagem da

portabilidade ou seja iraacute funcionar independente do algoritmo de renderizaccedilatildeo

utilizado

E as vantagens do meacutetodo de Pauly em relaccedilatildeo ao de Adams e Dutreacute

- a colocaccedilatildeo de surfels exatamente na curva de interseccedilatildeo

- a possibilidade de trabalhar com modelos soacutelidos ou natildeo soacutelidos

E finalizando concluiacutemos que o estudo relatado nesta dissertaccedilatildeo foi

importante por

- fornecer um breve estudo sobre modelagem por pontos uma nova e

promissora aacuterea dentro da computaccedilatildeo graacutefica

Conclusatildeo 72

- por apresentar uma avaliaccedilatildeo dos dois trabalhos existentes sobre

operaccedilotildees booleanas com pontos encontrando as vantagens de cada um

e levantando questotildees que natildeo tinham sido citadas nos trabalhos originais

- por propor e implementar melhorias ao trabalho de Adams e Dutreacute

71 Trabalhos Futuros

Nossa implementaccedilatildeo pode ser ainda evoluiacuteda com as propostas

apresentadas na seccedilatildeo 62 Como observamos o tempo de processamento do

algoritmo aqui implementado ainda pode ser melhorado com o uso do meacutetodo

TINN [19] - que foi proposto em Adams[2] - para otimizar a pesquisa do surfel

mais proacuteximo a um ponto que estaacute localizado na regiatildeo de um noacute que conteacutem

surfels Aleacutem disso o trabalho Simple and Efficient Trasversal Methods for

Quadtrees and Octrees de Sara F Frisken [12] citado no capiacutetulo 2 apresenta

uma otimizaccedilatildeo no uso de octrees Outra proposta para melhorar o tempo de

processamento do algoritmo aqui implementado eacute usar a forma de trabalhar com

octrees apresentada neste trabalho

O trabalho de Adams e Dutreacute [2] eacute aplicado apenas a objetos soacutelidos O

nosso plugin portanto aplica-se somente a este tipo de objeto Jaacute o trabalho de

Pauly[3] eacute aplicado tambeacutem a modelos natildeo soacutelidos Apresentamos como

proposta a um trabalho futuro a extensatildeo do algoritmo aqui implementado para

modelos natildeo soacutelidos O surfel pode conter uma informaccedilatildeo adicional que indica

se ele estaacute delimitando um volume ou natildeo Assim pode-se ter um modelo com

ldquopartes soacutelidasrdquo e ldquopartes natildeo soacutelidasrdquo Por exemplo a uniatildeo de um plano com

uma esfera poderia resultar numa esfera com ldquoabasrdquo (seriam as partes do plano

que estariam fora da esfera) O modelo resultado teria uma parte correspondente

a um espaccedilo 3D (esfera) e outra parte que seria uma superfiacutecie 2D posicionada

no espaccedilo 3D sem delimitar algum volume (abas)

Muitos trabalhos podem ser desenvolvidos aplicando-se o modelo por

pontos em animaccedilatildeo jogos visualizaccedilatildeo de terrenos criaccedilatildeo de protoacutetipos etc

considerando-se a eficiecircncia e simplicidade do modelo E mais especificamente

as operaccedilotildees booleanas com pontos podem ser aplicadas para criaccedilatildeo de

cenaacuterios testes de colisotildees e nestes casos a representaccedilatildeo usando octrees

pode ser mais explorada considerando-se o seu potencial de representaccedilatildeo

volumeacutetrica de um objeto

Referecircncias Bibliograacuteficas 73

8 Referecircncias Bibliograacuteficas

[1] MAumlNTYLAuml M An Introduction to Solid Modeling Computer Science Press 1988

[2] ADAMS B DUTREacute P Interactive Boolean Operations on Surfel-

Bounded Solids Proceedings of SIGGRAPH 2003 San Diego USA 2003

[3] PAULY M KEISER R KOBBELT L GROSS M Shape Modeling

with Point-Sampled Geometry SIGGRAPH 2003 Computer Graphics

Proceedings Annual Conference Series ACM Press ACM SIGGRAPH 2003

[4] LEVOY M WHITTED T The Use of Points as Display Primitives

Technical Report TR 85-022 The University of North Carolina at Chapel Hill

Department of Computer Science 1985

[5] PFISTER H ZWICKER M VAN BAAR J GROSS M 2000 Surfels

Surface Elements as Rendering Primitives SIGGRAPH 2000 pp 335ndash342 New

Orleans LA July 23-28 2000

[6] ZWICKER M PFISTER H VAN BAAR J GROSS M Surface

Splatting SIGGRAPH 2001

[7] PAULY M KOBBELT L GROSS M Multiresolution Modeling of

Point-Sampled Geometry CS Techinical Report 378 September 16 2002

[8] CURLESS B New Methods for Surface Reconstruction from Range Images PhD thesis Stanford University 1997

[9] RUSINKIEWICZ S Real-time Acquisition and Rendering of Large 3D Models PhD thesis Stanford University 2001

Referecircncias Bibliograacuteficas 74

[10] AMENTA N BERN M KAMVYSSELIS M A new Voronoi-Based

Surface Reconstruction Algorithm SIGGRAPH 98 Conference proceedings pp

415-421 New York 1998

[11] ZWICKER M PAULY M KNOLL O GROSS M Pointshop 3D an

Interactive System for Point-Based Surface Editing Proceedings of SIGGRAPH 2002 San Antonio TX July 2002

[12] FRISKEN S PERRY R Simple and Efficient Traversal Methods for

Quadtrees and Octrees Journal of Graphics Tools Vol 7 Issue 3 May 2003

[13] CORREcircA W T OLIVEIRA M M Silva C T Wang J

Modeling and Rendering of Real Environments

Revista de Informaacutetica Teoacuterica e Aplicada (Brazilian Journal of Theoretic and Applied Computing) 9(2)127-156 2002

[14] DAVIS J MARSCHNER S GARR M LEVOY M Filling Holes in

Complex Surfaces Using Volumetric Diffusion First International Symposium on 3D Data Processing Visualization Transmission June 2002

[15] RAumlSAumlNEN J Surface Splatting Theory Extensions and Implementation Masterrsquos Thesis Dept of Computer Science Helsinki

University of Technology May 28 2002

[16] PAULY M Point Primitives for Interactive Modeling and Processing of 3D Geometry PhD thesis Federal Institute of Technology (ETH)

of Zurich 2003

[17] HOPPE H DEROSE T DUCHAMP T MCDONALD J

STUELZLE W Surface Reconstruction from Unorganized Points Computer Graphics 26(2)71ndash78 July 1992

[18] ALEXA M BEHR J COHEN-OR D FLEISHMAN S LEVIN D

SILVA C T Point Set Surfaces IEEE Visualization 2001 pp 21ndash28 October

2001

Referecircncias Bibliograacuteficas 75

[19] GREENSPAN M GODIN G TALBOT J Acceleration of Binning

Nearest Neighbor Methods Proceedings of Vision Interface 2000 pp 337-

344

[20] MENCL R Reconstruction of Surfaces from Unorganized Three-Dimensional Point Clouds Dissertation Dortmund Univ 2001

[21] KRIVANEK J Representing and Rendering Surfaces With Points

httpciteseernjneccomkrivanek03representinghtml Acesso em 30 jul

2003

[22] KRISTJANSSON ET AL Approximate Boolean Operations on Free-

form Solids Proceedings of SIGGRAPH 01 2001

Resultados 63

Figura 30-Resultado da uniatildeo de duas Igeas

Figura 31-Resultado da interseccedilatildeo de duas Igeas

Resultados 64

Figura 32-Resultado da diferenccedila entre duas Igeas

Tabela 2-Nuacutemero de surfels dos modelos resultantes

Observamos que o nuacutemero de surfels dos modelos resultantes estaacute

coerente com as figuras dos seus modelos

Para avaliar o tempo de processamento das operaccedilotildees foram realizados

vaacuterios testes com o objetivo de obter uma meacutedia dos tempos de realizaccedilatildeo de

cada operaccedilatildeo Tambeacutem foram armazenados os tempos da criaccedilatildeo das duas

octrees e da classificaccedilatildeo de todos os surfels dos dois objetos (como dentro ou

fora do outro modelo) Estes testes foram feitos usando o modelo Igea A meacutedia

dos tempos de processamento foi calculada e os resultados satildeo mostrados na

Tabela 3 Verificamos que o maior tempo gasto eacute para criaccedilatildeo das octrees

Verificamos tambeacutem que este resultado apresentado eacute similar ao resultado

verificado empiricamente com o plugin de Pauly [3] Os tempos gastos para

realizar as operaccedilotildees satildeo similares e o maior tempo gasto no plugin de Pauly

tambeacutem eacute para inicializaccedilatildeo de suas estruturas de dados que incluem a kd-tree

Operaccedilatildeo Nuacutemero de surfels do modelo resultado

Uniatildeo 189715

Interseccedilatildeo 72225

Diferenccedila 134552

Resultados 65

Operaccedilatildeo Criaccedilatildeo das

Octrees (seg)

Classificaccedilatildeo

(seg)

Criaccedilatildeo do

resultado (seg)

Total (seg)

Uniatildeo 39375 1324 18925 7154

Interseccedilatildeo 38585 1585 09547 63982

Diferenccedila 399875 1504 1729 729475

Tabela 3- Meacutedia dos tempos de processamento para as operaccedilotildees com duas Igeas

Com o objetivo de expor melhor os resultados deste trabalho

apresentamos abaixo mais um teste das operaccedilotildees booleanas usando o nosso

plugin Os modelos usados para este segundo teste satildeo o Max Planck e o Male

ambos modelos soacutelidos disponibilizados no PointShop Estes modelos satildeo

mostrados nas figura 33 e 34

O primeiro Max Planck conteacutem 52809 surfels

Figura 33-Modelo do PointShop MaxPlanck

O segundo modelo abaixo Male conteacutem 148138 surfels

Resultados 66

Figura 34-Modelo do PointShop Male

As Figuras 353637 mostram o resultado da operaccedilatildeo de uniatildeo interseccedilatildeo

e diferenccedila respectivamente usando os dois modelos acima Podemos observar

pela figura 35 que o resultado da operaccedilatildeo de diferenccedila neste caso gerou um

modelo resultado com trecircs partes desconexas Os nuacutemeros de surfels de cada

modelo resultado satildeo mostrados na Tabela 5

Figura 35- Resultado da Uniatildeo do modelo Male com MaxPlanck

Resultados 67

Figura 36-Resultado da interseccedilatildeo do modelo Male com o MaxPlanck

Figura 37-Resultado da diferenccedila do modelo Male do modelo MaxPlanck

As meacutedias de tempos de processamento foram calculadas da mesma

forma que o primeiro teste com o modelo Igea acima apresentado Os

resultados satildeo mostrados na Tabela 4 Podemos observar que este teste

Resultados 68

apresenta tempos um pouco menores que o teste com o modelo Igea Isto se

deve ao fato de que o modelo MaxPlanck ser significativamente menor que o

modelo Igea MaxPlanck possui 52809 surfels e Igea conteacutem 134345 surfels

Operaccedilatildeo Criaccedilatildeo das

Octrees (seg)

Classificaccedilatildeo

(seg)

Criaccedilatildeo do

resultado (seg)

Total

(seg)

Uniatildeo 3012 1254 102 5285

Interseccedilatildeo 2985 0901 0861 4747

Diferenccedila 2965 0911 0791 4667

Tabela 4-Tempo de processamento das operaccedilotildees com os modelos MaxPlanck e Male

Operaccedilatildeo Nuacutemero de surfels do resultado

Uniatildeo 126532

Interseccedilatildeo 88414

Diferenccedila 77635

Tabela 5-Nuacutemero de surfels dos modelos resultados das operaccedilotildees com os modelos MaxPlanck e Male

Em seguida apresentaremos uma comparaccedilatildeo entre o nosso plugin e o

plugin de Pauly[3] e tambeacutem uma comparaccedilatildeo entre o meacutetodo de Adams e Dutreacute

[2] e o meacutetodo de Pauly [3]

62 Comparaccedilatildeo entre os dois meacutetodos que realizam operaccedilotildees booleanas

A comparaccedilatildeo entre os meacutetodos de Pauly[3] e de Adams e Dutreacute foi feita

em termos de tempo de processamento e em termos conceituais Em termos de

tempo de processamento comparamos o plugin de Pauly[3] com o nosso plugin

Em termos de tempo de processamento verifica-se empiricamente que os

dois meacutetodos apresentam tempos bastante similares Entretanto o tempo de

processamento do algoritmo aqui implementado ainda pode ser melhorado com

Resultados 69

o uso do meacutetodo TINN [19] que foi proposto em Adams[2] - para otimizar a

pesquisa do surfel mais proacuteximo a um ponto que estaacute localizado na regiatildeo de um

noacute que conteacutem surfels - veja seccedilatildeo 42 O uso deste meacutetodo natildeo foi

implementado para este trabalho e a sua implementaccedilatildeo melhoraria o tempo de

resposta do algoritmo Aleacutem disso o trabalho de Sara F Frisken [12] citado no

capiacutetulo 2 apresenta uma otimizaccedilatildeo no uso de octrees que pode ser

incorporada no algoritmo implementado neste trabalho

Em termos conceituais vamos fazer a comparaccedilatildeo do uso do que

chamamos aqui de Regra 2 do tratamento de interseccedilatildeo e do tratamento de

ldquoarestas vivasrdquo

Como vimos na seccedilatildeo 41 tanto o algoritmo implementado nesta

dissertaccedilatildeo baseado no trabalho de Adams e Dutreacute como o meacutetodo de Pauly

[3] parte do que chamamos aqui de Regra 2 para realizar operaccedilotildees booleanas

com pontos Mas cada um destes meacutetodos daacute um tratamento diferente para o

uso desta regra

O meacutetodo de Pauly usa a Regra 2 para classificaccedilatildeo de cada ponto ou de

cada surfel Para classificar um surfel de B sb como dentro ou fora de A eacute

encontrado o surfel de A sa mais proacuteximo a sb e sb eacute classificado a partir de sa

Para encontrar sa Pauly utiliza uma kd-tree Como esta pesquisa para encontrar

sa eacute cara (mesmo usando uma kd-tree) Pauly utiliza uma esfera que conteacutem

pontos com a mesma classificaccedilatildeo (seccedilatildeo 432) e diminui em 90 este nuacutemero

de pesquisas Pauly utiliza tambeacutem a representaccedilatildeo impliacutecita MLS (Moving Least

Squares) para casos em que a Regra 2 poderia falhar e para tratamento de

interseccedilotildees Entretanto o nuacutemero destes casos em que a Regra 2 poderia falhar

eacute muito pequeno E a representaccedilatildeo MLS natildeo eacute uma estrutura simples de ser

implementada Portanto natildeo encontramos vantagens em usar MLS para estes

casos O meacutetodo de Adams e Dutreacute natildeo trata estes casos e na praacutetica

apresenta resultados bastante satisfatoacuterios como foi mostrado Portanto

consideramos que valeria a pena fazer algum tratamento especial para estes

casos se fosse um procedimento simples Para a execuccedilatildeo do algoritmo de

Pauly o uso de MLS natildeo interfere significativamente porque a construccedilatildeo desta

representaccedilatildeo natildeo eacute feita somente para realizar operaccedilotildees booleanas Os testes

empiacutericos que fizemos com o algoritmo de Pauly natildeo incluem a construccedilatildeo desta

representaccedilatildeo

Aparentemente os dois algoritmos satildeo bastante parecidos um usa octrees

e o outro usa kd-tree As duas estruturas de dados satildeo simples e otimizam a

classificaccedilatildeo dos surfels de um modelo como dentro ou fora do outro modelo

Resultados 70

Mas existe uma diferenccedila conceitual entre dois que merece ser destacada O

algoritmo aqui implementado usa a Regra 2 para classificaccedilatildeo dos noacutes de uma

octree e armazena esta octree classificada (ver capiacutetulo 5) Assim na maioria dos

casos natildeo seraacute necessaacuterio encontrar o surfel mais proacuteximo para classificar um

ponto (ou um surfel) como fora ou dentro de um modelo Caso o ponto esteja em

uma aacuterea da octree classificada ele teraacute a classificaccedilatildeo dada agravequela aacuterea A

pesquisa ao surfel mais proacuteximo seraacute feita apenas nos casos em que o ponto a

ser classificado estaacute localizado entre os planos que subdividem um noacute cheio

O uso desta octree classificada levanta uma questatildeo que natildeo foi citada no

trabalho de Adams e Dutreacute que eacute a proximidade desta estrutura (armazenada)

de octree classificada com uma representaccedilatildeo volumeacutetrica do objeto Sendo

assim esta estrutura pode ser aproveitada para outras funccedilotildees aleacutem da

classificaccedilatildeo dos surfels Por exemplo podemos ter uma aproximaccedilatildeo do

volume de uma cena somando os volumes aproximados dos modelos que a

compotildeem Como o enfoque deste trabalho eacute operaccedilatildeo booleana natildeo vamos nos

aprofundar nesta questatildeo

Outra importante diferenccedila entre os dois trabalhos que jaacute foi explicada na

seccedilatildeo 432 eacute que o meacutetodo de Pauly aplica-se a modelos soacutelidos ou natildeo

soacutelidos enquanto que o meacutetodo de Adams e Dutreacute aplica-se somente a modelos

soacutelidos

Quanto ao tratamento de interseccedilatildeo em termos de visualizaccedilatildeo todos os

dois resolvem bem o problema O tratamento de interseccedilatildeo nos dois trabalhos

tambeacutem resolve o problema da validade da Regra 2 (ver seccedilatildeo 44) Entretanto

o tratamento de Adams e Dutreacute natildeo depende da renderizaccedilatildeo sendo portanto

mais portaacutevel Aleacutem disso uma desvantagem do meacutetodo de Pauly eacute o uso da

representaccedilatildeo impliacutecita MLS (ldquoMoving Least Squaresrdquo) do objeto para obter os

pontos exatamente na curva de interseccedilatildeo Esta representaccedilatildeo torna o

tratamento de interseccedilatildeo mais complexo e a vantagem apresentada natildeo eacute tatildeo

significativa para este tratamento de interseccedilatildeo

Conclusatildeo 71

7 Conclusatildeo

Concluiacutemos entatildeo que as escolhas de Adams e Dutreacute por usar uma

octree classificada e pelo tratamento dado agrave interseccedilatildeo satildeo mais abrangentes

que a escolha de Pauly E consideramos que quanto mais abrangente for uma

escolha conceitual mais resultados poderemos tirar dela No caso de Adams e

Dutreacute eles estendem o problema de classificar um ponto para classificar todo o

modelo Como foi citado ele quase fornece uma representaccedilatildeo volumeacutetrica do

modelo Esta aproximada representaccedilatildeo volumeacutetrica pode nos fornecer outras

informaccedilotildees como por exemplo o volume aproximado do modelo

Aleacutem disso o uso da representaccedilatildeo impliacutecita MLS no meacutetodo de Pauly cria

uma complexidade a mais para o meacutetodo sem apresentar vantagens para a

realizaccedilatildeo de operaccedilotildees booleanas que eacute o nosso enfoque

Logo podemos dizer que o meacutetodo de Adams e Dutreacute apresenta as

seguintes vantagens em relaccedilatildeo ao de Pauly

- a estrutura de octree classificada aleacutem de ser usada para classificaccedilatildeo

fornece informaccedilotildees adicionais como volume aproximado do objeto

- o tempo de processamento no meacutetodo de Adams e Dutreacute tende a ser

melhor que no meacutetodo de Pauly se implementadas as melhorias acima citadas e

se colocaacutessemos em consideraccedilatildeo o uso da representaccedilatildeo impliacutecita MLS

(Moving Least Squares)

- o tratamento de interseccedilatildeo de Adams e Dutreacute apresenta a vantagem da

portabilidade ou seja iraacute funcionar independente do algoritmo de renderizaccedilatildeo

utilizado

E as vantagens do meacutetodo de Pauly em relaccedilatildeo ao de Adams e Dutreacute

- a colocaccedilatildeo de surfels exatamente na curva de interseccedilatildeo

- a possibilidade de trabalhar com modelos soacutelidos ou natildeo soacutelidos

E finalizando concluiacutemos que o estudo relatado nesta dissertaccedilatildeo foi

importante por

- fornecer um breve estudo sobre modelagem por pontos uma nova e

promissora aacuterea dentro da computaccedilatildeo graacutefica

Conclusatildeo 72

- por apresentar uma avaliaccedilatildeo dos dois trabalhos existentes sobre

operaccedilotildees booleanas com pontos encontrando as vantagens de cada um

e levantando questotildees que natildeo tinham sido citadas nos trabalhos originais

- por propor e implementar melhorias ao trabalho de Adams e Dutreacute

71 Trabalhos Futuros

Nossa implementaccedilatildeo pode ser ainda evoluiacuteda com as propostas

apresentadas na seccedilatildeo 62 Como observamos o tempo de processamento do

algoritmo aqui implementado ainda pode ser melhorado com o uso do meacutetodo

TINN [19] - que foi proposto em Adams[2] - para otimizar a pesquisa do surfel

mais proacuteximo a um ponto que estaacute localizado na regiatildeo de um noacute que conteacutem

surfels Aleacutem disso o trabalho Simple and Efficient Trasversal Methods for

Quadtrees and Octrees de Sara F Frisken [12] citado no capiacutetulo 2 apresenta

uma otimizaccedilatildeo no uso de octrees Outra proposta para melhorar o tempo de

processamento do algoritmo aqui implementado eacute usar a forma de trabalhar com

octrees apresentada neste trabalho

O trabalho de Adams e Dutreacute [2] eacute aplicado apenas a objetos soacutelidos O

nosso plugin portanto aplica-se somente a este tipo de objeto Jaacute o trabalho de

Pauly[3] eacute aplicado tambeacutem a modelos natildeo soacutelidos Apresentamos como

proposta a um trabalho futuro a extensatildeo do algoritmo aqui implementado para

modelos natildeo soacutelidos O surfel pode conter uma informaccedilatildeo adicional que indica

se ele estaacute delimitando um volume ou natildeo Assim pode-se ter um modelo com

ldquopartes soacutelidasrdquo e ldquopartes natildeo soacutelidasrdquo Por exemplo a uniatildeo de um plano com

uma esfera poderia resultar numa esfera com ldquoabasrdquo (seriam as partes do plano

que estariam fora da esfera) O modelo resultado teria uma parte correspondente

a um espaccedilo 3D (esfera) e outra parte que seria uma superfiacutecie 2D posicionada

no espaccedilo 3D sem delimitar algum volume (abas)

Muitos trabalhos podem ser desenvolvidos aplicando-se o modelo por

pontos em animaccedilatildeo jogos visualizaccedilatildeo de terrenos criaccedilatildeo de protoacutetipos etc

considerando-se a eficiecircncia e simplicidade do modelo E mais especificamente

as operaccedilotildees booleanas com pontos podem ser aplicadas para criaccedilatildeo de

cenaacuterios testes de colisotildees e nestes casos a representaccedilatildeo usando octrees

pode ser mais explorada considerando-se o seu potencial de representaccedilatildeo

volumeacutetrica de um objeto

Referecircncias Bibliograacuteficas 73

8 Referecircncias Bibliograacuteficas

[1] MAumlNTYLAuml M An Introduction to Solid Modeling Computer Science Press 1988

[2] ADAMS B DUTREacute P Interactive Boolean Operations on Surfel-

Bounded Solids Proceedings of SIGGRAPH 2003 San Diego USA 2003

[3] PAULY M KEISER R KOBBELT L GROSS M Shape Modeling

with Point-Sampled Geometry SIGGRAPH 2003 Computer Graphics

Proceedings Annual Conference Series ACM Press ACM SIGGRAPH 2003

[4] LEVOY M WHITTED T The Use of Points as Display Primitives

Technical Report TR 85-022 The University of North Carolina at Chapel Hill

Department of Computer Science 1985

[5] PFISTER H ZWICKER M VAN BAAR J GROSS M 2000 Surfels

Surface Elements as Rendering Primitives SIGGRAPH 2000 pp 335ndash342 New

Orleans LA July 23-28 2000

[6] ZWICKER M PFISTER H VAN BAAR J GROSS M Surface

Splatting SIGGRAPH 2001

[7] PAULY M KOBBELT L GROSS M Multiresolution Modeling of

Point-Sampled Geometry CS Techinical Report 378 September 16 2002

[8] CURLESS B New Methods for Surface Reconstruction from Range Images PhD thesis Stanford University 1997

[9] RUSINKIEWICZ S Real-time Acquisition and Rendering of Large 3D Models PhD thesis Stanford University 2001

Referecircncias Bibliograacuteficas 74

[10] AMENTA N BERN M KAMVYSSELIS M A new Voronoi-Based

Surface Reconstruction Algorithm SIGGRAPH 98 Conference proceedings pp

415-421 New York 1998

[11] ZWICKER M PAULY M KNOLL O GROSS M Pointshop 3D an

Interactive System for Point-Based Surface Editing Proceedings of SIGGRAPH 2002 San Antonio TX July 2002

[12] FRISKEN S PERRY R Simple and Efficient Traversal Methods for

Quadtrees and Octrees Journal of Graphics Tools Vol 7 Issue 3 May 2003

[13] CORREcircA W T OLIVEIRA M M Silva C T Wang J

Modeling and Rendering of Real Environments

Revista de Informaacutetica Teoacuterica e Aplicada (Brazilian Journal of Theoretic and Applied Computing) 9(2)127-156 2002

[14] DAVIS J MARSCHNER S GARR M LEVOY M Filling Holes in

Complex Surfaces Using Volumetric Diffusion First International Symposium on 3D Data Processing Visualization Transmission June 2002

[15] RAumlSAumlNEN J Surface Splatting Theory Extensions and Implementation Masterrsquos Thesis Dept of Computer Science Helsinki

University of Technology May 28 2002

[16] PAULY M Point Primitives for Interactive Modeling and Processing of 3D Geometry PhD thesis Federal Institute of Technology (ETH)

of Zurich 2003

[17] HOPPE H DEROSE T DUCHAMP T MCDONALD J

STUELZLE W Surface Reconstruction from Unorganized Points Computer Graphics 26(2)71ndash78 July 1992

[18] ALEXA M BEHR J COHEN-OR D FLEISHMAN S LEVIN D

SILVA C T Point Set Surfaces IEEE Visualization 2001 pp 21ndash28 October

2001

Referecircncias Bibliograacuteficas 75

[19] GREENSPAN M GODIN G TALBOT J Acceleration of Binning

Nearest Neighbor Methods Proceedings of Vision Interface 2000 pp 337-

344

[20] MENCL R Reconstruction of Surfaces from Unorganized Three-Dimensional Point Clouds Dissertation Dortmund Univ 2001

[21] KRIVANEK J Representing and Rendering Surfaces With Points

httpciteseernjneccomkrivanek03representinghtml Acesso em 30 jul

2003

[22] KRISTJANSSON ET AL Approximate Boolean Operations on Free-

form Solids Proceedings of SIGGRAPH 01 2001

Resultados 64

Figura 32-Resultado da diferenccedila entre duas Igeas

Tabela 2-Nuacutemero de surfels dos modelos resultantes

Observamos que o nuacutemero de surfels dos modelos resultantes estaacute

coerente com as figuras dos seus modelos

Para avaliar o tempo de processamento das operaccedilotildees foram realizados

vaacuterios testes com o objetivo de obter uma meacutedia dos tempos de realizaccedilatildeo de

cada operaccedilatildeo Tambeacutem foram armazenados os tempos da criaccedilatildeo das duas

octrees e da classificaccedilatildeo de todos os surfels dos dois objetos (como dentro ou

fora do outro modelo) Estes testes foram feitos usando o modelo Igea A meacutedia

dos tempos de processamento foi calculada e os resultados satildeo mostrados na

Tabela 3 Verificamos que o maior tempo gasto eacute para criaccedilatildeo das octrees

Verificamos tambeacutem que este resultado apresentado eacute similar ao resultado

verificado empiricamente com o plugin de Pauly [3] Os tempos gastos para

realizar as operaccedilotildees satildeo similares e o maior tempo gasto no plugin de Pauly

tambeacutem eacute para inicializaccedilatildeo de suas estruturas de dados que incluem a kd-tree

Operaccedilatildeo Nuacutemero de surfels do modelo resultado

Uniatildeo 189715

Interseccedilatildeo 72225

Diferenccedila 134552

Resultados 65

Operaccedilatildeo Criaccedilatildeo das

Octrees (seg)

Classificaccedilatildeo

(seg)

Criaccedilatildeo do

resultado (seg)

Total (seg)

Uniatildeo 39375 1324 18925 7154

Interseccedilatildeo 38585 1585 09547 63982

Diferenccedila 399875 1504 1729 729475

Tabela 3- Meacutedia dos tempos de processamento para as operaccedilotildees com duas Igeas

Com o objetivo de expor melhor os resultados deste trabalho

apresentamos abaixo mais um teste das operaccedilotildees booleanas usando o nosso

plugin Os modelos usados para este segundo teste satildeo o Max Planck e o Male

ambos modelos soacutelidos disponibilizados no PointShop Estes modelos satildeo

mostrados nas figura 33 e 34

O primeiro Max Planck conteacutem 52809 surfels

Figura 33-Modelo do PointShop MaxPlanck

O segundo modelo abaixo Male conteacutem 148138 surfels

Resultados 66

Figura 34-Modelo do PointShop Male

As Figuras 353637 mostram o resultado da operaccedilatildeo de uniatildeo interseccedilatildeo

e diferenccedila respectivamente usando os dois modelos acima Podemos observar

pela figura 35 que o resultado da operaccedilatildeo de diferenccedila neste caso gerou um

modelo resultado com trecircs partes desconexas Os nuacutemeros de surfels de cada

modelo resultado satildeo mostrados na Tabela 5

Figura 35- Resultado da Uniatildeo do modelo Male com MaxPlanck

Resultados 67

Figura 36-Resultado da interseccedilatildeo do modelo Male com o MaxPlanck

Figura 37-Resultado da diferenccedila do modelo Male do modelo MaxPlanck

As meacutedias de tempos de processamento foram calculadas da mesma

forma que o primeiro teste com o modelo Igea acima apresentado Os

resultados satildeo mostrados na Tabela 4 Podemos observar que este teste

Resultados 68

apresenta tempos um pouco menores que o teste com o modelo Igea Isto se

deve ao fato de que o modelo MaxPlanck ser significativamente menor que o

modelo Igea MaxPlanck possui 52809 surfels e Igea conteacutem 134345 surfels

Operaccedilatildeo Criaccedilatildeo das

Octrees (seg)

Classificaccedilatildeo

(seg)

Criaccedilatildeo do

resultado (seg)

Total

(seg)

Uniatildeo 3012 1254 102 5285

Interseccedilatildeo 2985 0901 0861 4747

Diferenccedila 2965 0911 0791 4667

Tabela 4-Tempo de processamento das operaccedilotildees com os modelos MaxPlanck e Male

Operaccedilatildeo Nuacutemero de surfels do resultado

Uniatildeo 126532

Interseccedilatildeo 88414

Diferenccedila 77635

Tabela 5-Nuacutemero de surfels dos modelos resultados das operaccedilotildees com os modelos MaxPlanck e Male

Em seguida apresentaremos uma comparaccedilatildeo entre o nosso plugin e o

plugin de Pauly[3] e tambeacutem uma comparaccedilatildeo entre o meacutetodo de Adams e Dutreacute

[2] e o meacutetodo de Pauly [3]

62 Comparaccedilatildeo entre os dois meacutetodos que realizam operaccedilotildees booleanas

A comparaccedilatildeo entre os meacutetodos de Pauly[3] e de Adams e Dutreacute foi feita

em termos de tempo de processamento e em termos conceituais Em termos de

tempo de processamento comparamos o plugin de Pauly[3] com o nosso plugin

Em termos de tempo de processamento verifica-se empiricamente que os

dois meacutetodos apresentam tempos bastante similares Entretanto o tempo de

processamento do algoritmo aqui implementado ainda pode ser melhorado com

Resultados 69

o uso do meacutetodo TINN [19] que foi proposto em Adams[2] - para otimizar a

pesquisa do surfel mais proacuteximo a um ponto que estaacute localizado na regiatildeo de um

noacute que conteacutem surfels - veja seccedilatildeo 42 O uso deste meacutetodo natildeo foi

implementado para este trabalho e a sua implementaccedilatildeo melhoraria o tempo de

resposta do algoritmo Aleacutem disso o trabalho de Sara F Frisken [12] citado no

capiacutetulo 2 apresenta uma otimizaccedilatildeo no uso de octrees que pode ser

incorporada no algoritmo implementado neste trabalho

Em termos conceituais vamos fazer a comparaccedilatildeo do uso do que

chamamos aqui de Regra 2 do tratamento de interseccedilatildeo e do tratamento de

ldquoarestas vivasrdquo

Como vimos na seccedilatildeo 41 tanto o algoritmo implementado nesta

dissertaccedilatildeo baseado no trabalho de Adams e Dutreacute como o meacutetodo de Pauly

[3] parte do que chamamos aqui de Regra 2 para realizar operaccedilotildees booleanas

com pontos Mas cada um destes meacutetodos daacute um tratamento diferente para o

uso desta regra

O meacutetodo de Pauly usa a Regra 2 para classificaccedilatildeo de cada ponto ou de

cada surfel Para classificar um surfel de B sb como dentro ou fora de A eacute

encontrado o surfel de A sa mais proacuteximo a sb e sb eacute classificado a partir de sa

Para encontrar sa Pauly utiliza uma kd-tree Como esta pesquisa para encontrar

sa eacute cara (mesmo usando uma kd-tree) Pauly utiliza uma esfera que conteacutem

pontos com a mesma classificaccedilatildeo (seccedilatildeo 432) e diminui em 90 este nuacutemero

de pesquisas Pauly utiliza tambeacutem a representaccedilatildeo impliacutecita MLS (Moving Least

Squares) para casos em que a Regra 2 poderia falhar e para tratamento de

interseccedilotildees Entretanto o nuacutemero destes casos em que a Regra 2 poderia falhar

eacute muito pequeno E a representaccedilatildeo MLS natildeo eacute uma estrutura simples de ser

implementada Portanto natildeo encontramos vantagens em usar MLS para estes

casos O meacutetodo de Adams e Dutreacute natildeo trata estes casos e na praacutetica

apresenta resultados bastante satisfatoacuterios como foi mostrado Portanto

consideramos que valeria a pena fazer algum tratamento especial para estes

casos se fosse um procedimento simples Para a execuccedilatildeo do algoritmo de

Pauly o uso de MLS natildeo interfere significativamente porque a construccedilatildeo desta

representaccedilatildeo natildeo eacute feita somente para realizar operaccedilotildees booleanas Os testes

empiacutericos que fizemos com o algoritmo de Pauly natildeo incluem a construccedilatildeo desta

representaccedilatildeo

Aparentemente os dois algoritmos satildeo bastante parecidos um usa octrees

e o outro usa kd-tree As duas estruturas de dados satildeo simples e otimizam a

classificaccedilatildeo dos surfels de um modelo como dentro ou fora do outro modelo

Resultados 70

Mas existe uma diferenccedila conceitual entre dois que merece ser destacada O

algoritmo aqui implementado usa a Regra 2 para classificaccedilatildeo dos noacutes de uma

octree e armazena esta octree classificada (ver capiacutetulo 5) Assim na maioria dos

casos natildeo seraacute necessaacuterio encontrar o surfel mais proacuteximo para classificar um

ponto (ou um surfel) como fora ou dentro de um modelo Caso o ponto esteja em

uma aacuterea da octree classificada ele teraacute a classificaccedilatildeo dada agravequela aacuterea A

pesquisa ao surfel mais proacuteximo seraacute feita apenas nos casos em que o ponto a

ser classificado estaacute localizado entre os planos que subdividem um noacute cheio

O uso desta octree classificada levanta uma questatildeo que natildeo foi citada no

trabalho de Adams e Dutreacute que eacute a proximidade desta estrutura (armazenada)

de octree classificada com uma representaccedilatildeo volumeacutetrica do objeto Sendo

assim esta estrutura pode ser aproveitada para outras funccedilotildees aleacutem da

classificaccedilatildeo dos surfels Por exemplo podemos ter uma aproximaccedilatildeo do

volume de uma cena somando os volumes aproximados dos modelos que a

compotildeem Como o enfoque deste trabalho eacute operaccedilatildeo booleana natildeo vamos nos

aprofundar nesta questatildeo

Outra importante diferenccedila entre os dois trabalhos que jaacute foi explicada na

seccedilatildeo 432 eacute que o meacutetodo de Pauly aplica-se a modelos soacutelidos ou natildeo

soacutelidos enquanto que o meacutetodo de Adams e Dutreacute aplica-se somente a modelos

soacutelidos

Quanto ao tratamento de interseccedilatildeo em termos de visualizaccedilatildeo todos os

dois resolvem bem o problema O tratamento de interseccedilatildeo nos dois trabalhos

tambeacutem resolve o problema da validade da Regra 2 (ver seccedilatildeo 44) Entretanto

o tratamento de Adams e Dutreacute natildeo depende da renderizaccedilatildeo sendo portanto

mais portaacutevel Aleacutem disso uma desvantagem do meacutetodo de Pauly eacute o uso da

representaccedilatildeo impliacutecita MLS (ldquoMoving Least Squaresrdquo) do objeto para obter os

pontos exatamente na curva de interseccedilatildeo Esta representaccedilatildeo torna o

tratamento de interseccedilatildeo mais complexo e a vantagem apresentada natildeo eacute tatildeo

significativa para este tratamento de interseccedilatildeo

Conclusatildeo 71

7 Conclusatildeo

Concluiacutemos entatildeo que as escolhas de Adams e Dutreacute por usar uma

octree classificada e pelo tratamento dado agrave interseccedilatildeo satildeo mais abrangentes

que a escolha de Pauly E consideramos que quanto mais abrangente for uma

escolha conceitual mais resultados poderemos tirar dela No caso de Adams e

Dutreacute eles estendem o problema de classificar um ponto para classificar todo o

modelo Como foi citado ele quase fornece uma representaccedilatildeo volumeacutetrica do

modelo Esta aproximada representaccedilatildeo volumeacutetrica pode nos fornecer outras

informaccedilotildees como por exemplo o volume aproximado do modelo

Aleacutem disso o uso da representaccedilatildeo impliacutecita MLS no meacutetodo de Pauly cria

uma complexidade a mais para o meacutetodo sem apresentar vantagens para a

realizaccedilatildeo de operaccedilotildees booleanas que eacute o nosso enfoque

Logo podemos dizer que o meacutetodo de Adams e Dutreacute apresenta as

seguintes vantagens em relaccedilatildeo ao de Pauly

- a estrutura de octree classificada aleacutem de ser usada para classificaccedilatildeo

fornece informaccedilotildees adicionais como volume aproximado do objeto

- o tempo de processamento no meacutetodo de Adams e Dutreacute tende a ser

melhor que no meacutetodo de Pauly se implementadas as melhorias acima citadas e

se colocaacutessemos em consideraccedilatildeo o uso da representaccedilatildeo impliacutecita MLS

(Moving Least Squares)

- o tratamento de interseccedilatildeo de Adams e Dutreacute apresenta a vantagem da

portabilidade ou seja iraacute funcionar independente do algoritmo de renderizaccedilatildeo

utilizado

E as vantagens do meacutetodo de Pauly em relaccedilatildeo ao de Adams e Dutreacute

- a colocaccedilatildeo de surfels exatamente na curva de interseccedilatildeo

- a possibilidade de trabalhar com modelos soacutelidos ou natildeo soacutelidos

E finalizando concluiacutemos que o estudo relatado nesta dissertaccedilatildeo foi

importante por

- fornecer um breve estudo sobre modelagem por pontos uma nova e

promissora aacuterea dentro da computaccedilatildeo graacutefica

Conclusatildeo 72

- por apresentar uma avaliaccedilatildeo dos dois trabalhos existentes sobre

operaccedilotildees booleanas com pontos encontrando as vantagens de cada um

e levantando questotildees que natildeo tinham sido citadas nos trabalhos originais

- por propor e implementar melhorias ao trabalho de Adams e Dutreacute

71 Trabalhos Futuros

Nossa implementaccedilatildeo pode ser ainda evoluiacuteda com as propostas

apresentadas na seccedilatildeo 62 Como observamos o tempo de processamento do

algoritmo aqui implementado ainda pode ser melhorado com o uso do meacutetodo

TINN [19] - que foi proposto em Adams[2] - para otimizar a pesquisa do surfel

mais proacuteximo a um ponto que estaacute localizado na regiatildeo de um noacute que conteacutem

surfels Aleacutem disso o trabalho Simple and Efficient Trasversal Methods for

Quadtrees and Octrees de Sara F Frisken [12] citado no capiacutetulo 2 apresenta

uma otimizaccedilatildeo no uso de octrees Outra proposta para melhorar o tempo de

processamento do algoritmo aqui implementado eacute usar a forma de trabalhar com

octrees apresentada neste trabalho

O trabalho de Adams e Dutreacute [2] eacute aplicado apenas a objetos soacutelidos O

nosso plugin portanto aplica-se somente a este tipo de objeto Jaacute o trabalho de

Pauly[3] eacute aplicado tambeacutem a modelos natildeo soacutelidos Apresentamos como

proposta a um trabalho futuro a extensatildeo do algoritmo aqui implementado para

modelos natildeo soacutelidos O surfel pode conter uma informaccedilatildeo adicional que indica

se ele estaacute delimitando um volume ou natildeo Assim pode-se ter um modelo com

ldquopartes soacutelidasrdquo e ldquopartes natildeo soacutelidasrdquo Por exemplo a uniatildeo de um plano com

uma esfera poderia resultar numa esfera com ldquoabasrdquo (seriam as partes do plano

que estariam fora da esfera) O modelo resultado teria uma parte correspondente

a um espaccedilo 3D (esfera) e outra parte que seria uma superfiacutecie 2D posicionada

no espaccedilo 3D sem delimitar algum volume (abas)

Muitos trabalhos podem ser desenvolvidos aplicando-se o modelo por

pontos em animaccedilatildeo jogos visualizaccedilatildeo de terrenos criaccedilatildeo de protoacutetipos etc

considerando-se a eficiecircncia e simplicidade do modelo E mais especificamente

as operaccedilotildees booleanas com pontos podem ser aplicadas para criaccedilatildeo de

cenaacuterios testes de colisotildees e nestes casos a representaccedilatildeo usando octrees

pode ser mais explorada considerando-se o seu potencial de representaccedilatildeo

volumeacutetrica de um objeto

Referecircncias Bibliograacuteficas 73

8 Referecircncias Bibliograacuteficas

[1] MAumlNTYLAuml M An Introduction to Solid Modeling Computer Science Press 1988

[2] ADAMS B DUTREacute P Interactive Boolean Operations on Surfel-

Bounded Solids Proceedings of SIGGRAPH 2003 San Diego USA 2003

[3] PAULY M KEISER R KOBBELT L GROSS M Shape Modeling

with Point-Sampled Geometry SIGGRAPH 2003 Computer Graphics

Proceedings Annual Conference Series ACM Press ACM SIGGRAPH 2003

[4] LEVOY M WHITTED T The Use of Points as Display Primitives

Technical Report TR 85-022 The University of North Carolina at Chapel Hill

Department of Computer Science 1985

[5] PFISTER H ZWICKER M VAN BAAR J GROSS M 2000 Surfels

Surface Elements as Rendering Primitives SIGGRAPH 2000 pp 335ndash342 New

Orleans LA July 23-28 2000

[6] ZWICKER M PFISTER H VAN BAAR J GROSS M Surface

Splatting SIGGRAPH 2001

[7] PAULY M KOBBELT L GROSS M Multiresolution Modeling of

Point-Sampled Geometry CS Techinical Report 378 September 16 2002

[8] CURLESS B New Methods for Surface Reconstruction from Range Images PhD thesis Stanford University 1997

[9] RUSINKIEWICZ S Real-time Acquisition and Rendering of Large 3D Models PhD thesis Stanford University 2001

Referecircncias Bibliograacuteficas 74

[10] AMENTA N BERN M KAMVYSSELIS M A new Voronoi-Based

Surface Reconstruction Algorithm SIGGRAPH 98 Conference proceedings pp

415-421 New York 1998

[11] ZWICKER M PAULY M KNOLL O GROSS M Pointshop 3D an

Interactive System for Point-Based Surface Editing Proceedings of SIGGRAPH 2002 San Antonio TX July 2002

[12] FRISKEN S PERRY R Simple and Efficient Traversal Methods for

Quadtrees and Octrees Journal of Graphics Tools Vol 7 Issue 3 May 2003

[13] CORREcircA W T OLIVEIRA M M Silva C T Wang J

Modeling and Rendering of Real Environments

Revista de Informaacutetica Teoacuterica e Aplicada (Brazilian Journal of Theoretic and Applied Computing) 9(2)127-156 2002

[14] DAVIS J MARSCHNER S GARR M LEVOY M Filling Holes in

Complex Surfaces Using Volumetric Diffusion First International Symposium on 3D Data Processing Visualization Transmission June 2002

[15] RAumlSAumlNEN J Surface Splatting Theory Extensions and Implementation Masterrsquos Thesis Dept of Computer Science Helsinki

University of Technology May 28 2002

[16] PAULY M Point Primitives for Interactive Modeling and Processing of 3D Geometry PhD thesis Federal Institute of Technology (ETH)

of Zurich 2003

[17] HOPPE H DEROSE T DUCHAMP T MCDONALD J

STUELZLE W Surface Reconstruction from Unorganized Points Computer Graphics 26(2)71ndash78 July 1992

[18] ALEXA M BEHR J COHEN-OR D FLEISHMAN S LEVIN D

SILVA C T Point Set Surfaces IEEE Visualization 2001 pp 21ndash28 October

2001

Referecircncias Bibliograacuteficas 75

[19] GREENSPAN M GODIN G TALBOT J Acceleration of Binning

Nearest Neighbor Methods Proceedings of Vision Interface 2000 pp 337-

344

[20] MENCL R Reconstruction of Surfaces from Unorganized Three-Dimensional Point Clouds Dissertation Dortmund Univ 2001

[21] KRIVANEK J Representing and Rendering Surfaces With Points

httpciteseernjneccomkrivanek03representinghtml Acesso em 30 jul

2003

[22] KRISTJANSSON ET AL Approximate Boolean Operations on Free-

form Solids Proceedings of SIGGRAPH 01 2001

Resultados 65

Operaccedilatildeo Criaccedilatildeo das

Octrees (seg)

Classificaccedilatildeo

(seg)

Criaccedilatildeo do

resultado (seg)

Total (seg)

Uniatildeo 39375 1324 18925 7154

Interseccedilatildeo 38585 1585 09547 63982

Diferenccedila 399875 1504 1729 729475

Tabela 3- Meacutedia dos tempos de processamento para as operaccedilotildees com duas Igeas

Com o objetivo de expor melhor os resultados deste trabalho

apresentamos abaixo mais um teste das operaccedilotildees booleanas usando o nosso

plugin Os modelos usados para este segundo teste satildeo o Max Planck e o Male

ambos modelos soacutelidos disponibilizados no PointShop Estes modelos satildeo

mostrados nas figura 33 e 34

O primeiro Max Planck conteacutem 52809 surfels

Figura 33-Modelo do PointShop MaxPlanck

O segundo modelo abaixo Male conteacutem 148138 surfels

Resultados 66

Figura 34-Modelo do PointShop Male

As Figuras 353637 mostram o resultado da operaccedilatildeo de uniatildeo interseccedilatildeo

e diferenccedila respectivamente usando os dois modelos acima Podemos observar

pela figura 35 que o resultado da operaccedilatildeo de diferenccedila neste caso gerou um

modelo resultado com trecircs partes desconexas Os nuacutemeros de surfels de cada

modelo resultado satildeo mostrados na Tabela 5

Figura 35- Resultado da Uniatildeo do modelo Male com MaxPlanck

Resultados 67

Figura 36-Resultado da interseccedilatildeo do modelo Male com o MaxPlanck

Figura 37-Resultado da diferenccedila do modelo Male do modelo MaxPlanck

As meacutedias de tempos de processamento foram calculadas da mesma

forma que o primeiro teste com o modelo Igea acima apresentado Os

resultados satildeo mostrados na Tabela 4 Podemos observar que este teste

Resultados 68

apresenta tempos um pouco menores que o teste com o modelo Igea Isto se

deve ao fato de que o modelo MaxPlanck ser significativamente menor que o

modelo Igea MaxPlanck possui 52809 surfels e Igea conteacutem 134345 surfels

Operaccedilatildeo Criaccedilatildeo das

Octrees (seg)

Classificaccedilatildeo

(seg)

Criaccedilatildeo do

resultado (seg)

Total

(seg)

Uniatildeo 3012 1254 102 5285

Interseccedilatildeo 2985 0901 0861 4747

Diferenccedila 2965 0911 0791 4667

Tabela 4-Tempo de processamento das operaccedilotildees com os modelos MaxPlanck e Male

Operaccedilatildeo Nuacutemero de surfels do resultado

Uniatildeo 126532

Interseccedilatildeo 88414

Diferenccedila 77635

Tabela 5-Nuacutemero de surfels dos modelos resultados das operaccedilotildees com os modelos MaxPlanck e Male

Em seguida apresentaremos uma comparaccedilatildeo entre o nosso plugin e o

plugin de Pauly[3] e tambeacutem uma comparaccedilatildeo entre o meacutetodo de Adams e Dutreacute

[2] e o meacutetodo de Pauly [3]

62 Comparaccedilatildeo entre os dois meacutetodos que realizam operaccedilotildees booleanas

A comparaccedilatildeo entre os meacutetodos de Pauly[3] e de Adams e Dutreacute foi feita

em termos de tempo de processamento e em termos conceituais Em termos de

tempo de processamento comparamos o plugin de Pauly[3] com o nosso plugin

Em termos de tempo de processamento verifica-se empiricamente que os

dois meacutetodos apresentam tempos bastante similares Entretanto o tempo de

processamento do algoritmo aqui implementado ainda pode ser melhorado com

Resultados 69

o uso do meacutetodo TINN [19] que foi proposto em Adams[2] - para otimizar a

pesquisa do surfel mais proacuteximo a um ponto que estaacute localizado na regiatildeo de um

noacute que conteacutem surfels - veja seccedilatildeo 42 O uso deste meacutetodo natildeo foi

implementado para este trabalho e a sua implementaccedilatildeo melhoraria o tempo de

resposta do algoritmo Aleacutem disso o trabalho de Sara F Frisken [12] citado no

capiacutetulo 2 apresenta uma otimizaccedilatildeo no uso de octrees que pode ser

incorporada no algoritmo implementado neste trabalho

Em termos conceituais vamos fazer a comparaccedilatildeo do uso do que

chamamos aqui de Regra 2 do tratamento de interseccedilatildeo e do tratamento de

ldquoarestas vivasrdquo

Como vimos na seccedilatildeo 41 tanto o algoritmo implementado nesta

dissertaccedilatildeo baseado no trabalho de Adams e Dutreacute como o meacutetodo de Pauly

[3] parte do que chamamos aqui de Regra 2 para realizar operaccedilotildees booleanas

com pontos Mas cada um destes meacutetodos daacute um tratamento diferente para o

uso desta regra

O meacutetodo de Pauly usa a Regra 2 para classificaccedilatildeo de cada ponto ou de

cada surfel Para classificar um surfel de B sb como dentro ou fora de A eacute

encontrado o surfel de A sa mais proacuteximo a sb e sb eacute classificado a partir de sa

Para encontrar sa Pauly utiliza uma kd-tree Como esta pesquisa para encontrar

sa eacute cara (mesmo usando uma kd-tree) Pauly utiliza uma esfera que conteacutem

pontos com a mesma classificaccedilatildeo (seccedilatildeo 432) e diminui em 90 este nuacutemero

de pesquisas Pauly utiliza tambeacutem a representaccedilatildeo impliacutecita MLS (Moving Least

Squares) para casos em que a Regra 2 poderia falhar e para tratamento de

interseccedilotildees Entretanto o nuacutemero destes casos em que a Regra 2 poderia falhar

eacute muito pequeno E a representaccedilatildeo MLS natildeo eacute uma estrutura simples de ser

implementada Portanto natildeo encontramos vantagens em usar MLS para estes

casos O meacutetodo de Adams e Dutreacute natildeo trata estes casos e na praacutetica

apresenta resultados bastante satisfatoacuterios como foi mostrado Portanto

consideramos que valeria a pena fazer algum tratamento especial para estes

casos se fosse um procedimento simples Para a execuccedilatildeo do algoritmo de

Pauly o uso de MLS natildeo interfere significativamente porque a construccedilatildeo desta

representaccedilatildeo natildeo eacute feita somente para realizar operaccedilotildees booleanas Os testes

empiacutericos que fizemos com o algoritmo de Pauly natildeo incluem a construccedilatildeo desta

representaccedilatildeo

Aparentemente os dois algoritmos satildeo bastante parecidos um usa octrees

e o outro usa kd-tree As duas estruturas de dados satildeo simples e otimizam a

classificaccedilatildeo dos surfels de um modelo como dentro ou fora do outro modelo

Resultados 70

Mas existe uma diferenccedila conceitual entre dois que merece ser destacada O

algoritmo aqui implementado usa a Regra 2 para classificaccedilatildeo dos noacutes de uma

octree e armazena esta octree classificada (ver capiacutetulo 5) Assim na maioria dos

casos natildeo seraacute necessaacuterio encontrar o surfel mais proacuteximo para classificar um

ponto (ou um surfel) como fora ou dentro de um modelo Caso o ponto esteja em

uma aacuterea da octree classificada ele teraacute a classificaccedilatildeo dada agravequela aacuterea A

pesquisa ao surfel mais proacuteximo seraacute feita apenas nos casos em que o ponto a

ser classificado estaacute localizado entre os planos que subdividem um noacute cheio

O uso desta octree classificada levanta uma questatildeo que natildeo foi citada no

trabalho de Adams e Dutreacute que eacute a proximidade desta estrutura (armazenada)

de octree classificada com uma representaccedilatildeo volumeacutetrica do objeto Sendo

assim esta estrutura pode ser aproveitada para outras funccedilotildees aleacutem da

classificaccedilatildeo dos surfels Por exemplo podemos ter uma aproximaccedilatildeo do

volume de uma cena somando os volumes aproximados dos modelos que a

compotildeem Como o enfoque deste trabalho eacute operaccedilatildeo booleana natildeo vamos nos

aprofundar nesta questatildeo

Outra importante diferenccedila entre os dois trabalhos que jaacute foi explicada na

seccedilatildeo 432 eacute que o meacutetodo de Pauly aplica-se a modelos soacutelidos ou natildeo

soacutelidos enquanto que o meacutetodo de Adams e Dutreacute aplica-se somente a modelos

soacutelidos

Quanto ao tratamento de interseccedilatildeo em termos de visualizaccedilatildeo todos os

dois resolvem bem o problema O tratamento de interseccedilatildeo nos dois trabalhos

tambeacutem resolve o problema da validade da Regra 2 (ver seccedilatildeo 44) Entretanto

o tratamento de Adams e Dutreacute natildeo depende da renderizaccedilatildeo sendo portanto

mais portaacutevel Aleacutem disso uma desvantagem do meacutetodo de Pauly eacute o uso da

representaccedilatildeo impliacutecita MLS (ldquoMoving Least Squaresrdquo) do objeto para obter os

pontos exatamente na curva de interseccedilatildeo Esta representaccedilatildeo torna o

tratamento de interseccedilatildeo mais complexo e a vantagem apresentada natildeo eacute tatildeo

significativa para este tratamento de interseccedilatildeo

Conclusatildeo 71

7 Conclusatildeo

Concluiacutemos entatildeo que as escolhas de Adams e Dutreacute por usar uma

octree classificada e pelo tratamento dado agrave interseccedilatildeo satildeo mais abrangentes

que a escolha de Pauly E consideramos que quanto mais abrangente for uma

escolha conceitual mais resultados poderemos tirar dela No caso de Adams e

Dutreacute eles estendem o problema de classificar um ponto para classificar todo o

modelo Como foi citado ele quase fornece uma representaccedilatildeo volumeacutetrica do

modelo Esta aproximada representaccedilatildeo volumeacutetrica pode nos fornecer outras

informaccedilotildees como por exemplo o volume aproximado do modelo

Aleacutem disso o uso da representaccedilatildeo impliacutecita MLS no meacutetodo de Pauly cria

uma complexidade a mais para o meacutetodo sem apresentar vantagens para a

realizaccedilatildeo de operaccedilotildees booleanas que eacute o nosso enfoque

Logo podemos dizer que o meacutetodo de Adams e Dutreacute apresenta as

seguintes vantagens em relaccedilatildeo ao de Pauly

- a estrutura de octree classificada aleacutem de ser usada para classificaccedilatildeo

fornece informaccedilotildees adicionais como volume aproximado do objeto

- o tempo de processamento no meacutetodo de Adams e Dutreacute tende a ser

melhor que no meacutetodo de Pauly se implementadas as melhorias acima citadas e

se colocaacutessemos em consideraccedilatildeo o uso da representaccedilatildeo impliacutecita MLS

(Moving Least Squares)

- o tratamento de interseccedilatildeo de Adams e Dutreacute apresenta a vantagem da

portabilidade ou seja iraacute funcionar independente do algoritmo de renderizaccedilatildeo

utilizado

E as vantagens do meacutetodo de Pauly em relaccedilatildeo ao de Adams e Dutreacute

- a colocaccedilatildeo de surfels exatamente na curva de interseccedilatildeo

- a possibilidade de trabalhar com modelos soacutelidos ou natildeo soacutelidos

E finalizando concluiacutemos que o estudo relatado nesta dissertaccedilatildeo foi

importante por

- fornecer um breve estudo sobre modelagem por pontos uma nova e

promissora aacuterea dentro da computaccedilatildeo graacutefica

Conclusatildeo 72

- por apresentar uma avaliaccedilatildeo dos dois trabalhos existentes sobre

operaccedilotildees booleanas com pontos encontrando as vantagens de cada um

e levantando questotildees que natildeo tinham sido citadas nos trabalhos originais

- por propor e implementar melhorias ao trabalho de Adams e Dutreacute

71 Trabalhos Futuros

Nossa implementaccedilatildeo pode ser ainda evoluiacuteda com as propostas

apresentadas na seccedilatildeo 62 Como observamos o tempo de processamento do

algoritmo aqui implementado ainda pode ser melhorado com o uso do meacutetodo

TINN [19] - que foi proposto em Adams[2] - para otimizar a pesquisa do surfel

mais proacuteximo a um ponto que estaacute localizado na regiatildeo de um noacute que conteacutem

surfels Aleacutem disso o trabalho Simple and Efficient Trasversal Methods for

Quadtrees and Octrees de Sara F Frisken [12] citado no capiacutetulo 2 apresenta

uma otimizaccedilatildeo no uso de octrees Outra proposta para melhorar o tempo de

processamento do algoritmo aqui implementado eacute usar a forma de trabalhar com

octrees apresentada neste trabalho

O trabalho de Adams e Dutreacute [2] eacute aplicado apenas a objetos soacutelidos O

nosso plugin portanto aplica-se somente a este tipo de objeto Jaacute o trabalho de

Pauly[3] eacute aplicado tambeacutem a modelos natildeo soacutelidos Apresentamos como

proposta a um trabalho futuro a extensatildeo do algoritmo aqui implementado para

modelos natildeo soacutelidos O surfel pode conter uma informaccedilatildeo adicional que indica

se ele estaacute delimitando um volume ou natildeo Assim pode-se ter um modelo com

ldquopartes soacutelidasrdquo e ldquopartes natildeo soacutelidasrdquo Por exemplo a uniatildeo de um plano com

uma esfera poderia resultar numa esfera com ldquoabasrdquo (seriam as partes do plano

que estariam fora da esfera) O modelo resultado teria uma parte correspondente

a um espaccedilo 3D (esfera) e outra parte que seria uma superfiacutecie 2D posicionada

no espaccedilo 3D sem delimitar algum volume (abas)

Muitos trabalhos podem ser desenvolvidos aplicando-se o modelo por

pontos em animaccedilatildeo jogos visualizaccedilatildeo de terrenos criaccedilatildeo de protoacutetipos etc

considerando-se a eficiecircncia e simplicidade do modelo E mais especificamente

as operaccedilotildees booleanas com pontos podem ser aplicadas para criaccedilatildeo de

cenaacuterios testes de colisotildees e nestes casos a representaccedilatildeo usando octrees

pode ser mais explorada considerando-se o seu potencial de representaccedilatildeo

volumeacutetrica de um objeto

Referecircncias Bibliograacuteficas 73

8 Referecircncias Bibliograacuteficas

[1] MAumlNTYLAuml M An Introduction to Solid Modeling Computer Science Press 1988

[2] ADAMS B DUTREacute P Interactive Boolean Operations on Surfel-

Bounded Solids Proceedings of SIGGRAPH 2003 San Diego USA 2003

[3] PAULY M KEISER R KOBBELT L GROSS M Shape Modeling

with Point-Sampled Geometry SIGGRAPH 2003 Computer Graphics

Proceedings Annual Conference Series ACM Press ACM SIGGRAPH 2003

[4] LEVOY M WHITTED T The Use of Points as Display Primitives

Technical Report TR 85-022 The University of North Carolina at Chapel Hill

Department of Computer Science 1985

[5] PFISTER H ZWICKER M VAN BAAR J GROSS M 2000 Surfels

Surface Elements as Rendering Primitives SIGGRAPH 2000 pp 335ndash342 New

Orleans LA July 23-28 2000

[6] ZWICKER M PFISTER H VAN BAAR J GROSS M Surface

Splatting SIGGRAPH 2001

[7] PAULY M KOBBELT L GROSS M Multiresolution Modeling of

Point-Sampled Geometry CS Techinical Report 378 September 16 2002

[8] CURLESS B New Methods for Surface Reconstruction from Range Images PhD thesis Stanford University 1997

[9] RUSINKIEWICZ S Real-time Acquisition and Rendering of Large 3D Models PhD thesis Stanford University 2001

Referecircncias Bibliograacuteficas 74

[10] AMENTA N BERN M KAMVYSSELIS M A new Voronoi-Based

Surface Reconstruction Algorithm SIGGRAPH 98 Conference proceedings pp

415-421 New York 1998

[11] ZWICKER M PAULY M KNOLL O GROSS M Pointshop 3D an

Interactive System for Point-Based Surface Editing Proceedings of SIGGRAPH 2002 San Antonio TX July 2002

[12] FRISKEN S PERRY R Simple and Efficient Traversal Methods for

Quadtrees and Octrees Journal of Graphics Tools Vol 7 Issue 3 May 2003

[13] CORREcircA W T OLIVEIRA M M Silva C T Wang J

Modeling and Rendering of Real Environments

Revista de Informaacutetica Teoacuterica e Aplicada (Brazilian Journal of Theoretic and Applied Computing) 9(2)127-156 2002

[14] DAVIS J MARSCHNER S GARR M LEVOY M Filling Holes in

Complex Surfaces Using Volumetric Diffusion First International Symposium on 3D Data Processing Visualization Transmission June 2002

[15] RAumlSAumlNEN J Surface Splatting Theory Extensions and Implementation Masterrsquos Thesis Dept of Computer Science Helsinki

University of Technology May 28 2002

[16] PAULY M Point Primitives for Interactive Modeling and Processing of 3D Geometry PhD thesis Federal Institute of Technology (ETH)

of Zurich 2003

[17] HOPPE H DEROSE T DUCHAMP T MCDONALD J

STUELZLE W Surface Reconstruction from Unorganized Points Computer Graphics 26(2)71ndash78 July 1992

[18] ALEXA M BEHR J COHEN-OR D FLEISHMAN S LEVIN D

SILVA C T Point Set Surfaces IEEE Visualization 2001 pp 21ndash28 October

2001

Referecircncias Bibliograacuteficas 75

[19] GREENSPAN M GODIN G TALBOT J Acceleration of Binning

Nearest Neighbor Methods Proceedings of Vision Interface 2000 pp 337-

344

[20] MENCL R Reconstruction of Surfaces from Unorganized Three-Dimensional Point Clouds Dissertation Dortmund Univ 2001

[21] KRIVANEK J Representing and Rendering Surfaces With Points

httpciteseernjneccomkrivanek03representinghtml Acesso em 30 jul

2003

[22] KRISTJANSSON ET AL Approximate Boolean Operations on Free-

form Solids Proceedings of SIGGRAPH 01 2001

Resultados 66

Figura 34-Modelo do PointShop Male

As Figuras 353637 mostram o resultado da operaccedilatildeo de uniatildeo interseccedilatildeo

e diferenccedila respectivamente usando os dois modelos acima Podemos observar

pela figura 35 que o resultado da operaccedilatildeo de diferenccedila neste caso gerou um

modelo resultado com trecircs partes desconexas Os nuacutemeros de surfels de cada

modelo resultado satildeo mostrados na Tabela 5

Figura 35- Resultado da Uniatildeo do modelo Male com MaxPlanck

Resultados 67

Figura 36-Resultado da interseccedilatildeo do modelo Male com o MaxPlanck

Figura 37-Resultado da diferenccedila do modelo Male do modelo MaxPlanck

As meacutedias de tempos de processamento foram calculadas da mesma

forma que o primeiro teste com o modelo Igea acima apresentado Os

resultados satildeo mostrados na Tabela 4 Podemos observar que este teste

Resultados 68

apresenta tempos um pouco menores que o teste com o modelo Igea Isto se

deve ao fato de que o modelo MaxPlanck ser significativamente menor que o

modelo Igea MaxPlanck possui 52809 surfels e Igea conteacutem 134345 surfels

Operaccedilatildeo Criaccedilatildeo das

Octrees (seg)

Classificaccedilatildeo

(seg)

Criaccedilatildeo do

resultado (seg)

Total

(seg)

Uniatildeo 3012 1254 102 5285

Interseccedilatildeo 2985 0901 0861 4747

Diferenccedila 2965 0911 0791 4667

Tabela 4-Tempo de processamento das operaccedilotildees com os modelos MaxPlanck e Male

Operaccedilatildeo Nuacutemero de surfels do resultado

Uniatildeo 126532

Interseccedilatildeo 88414

Diferenccedila 77635

Tabela 5-Nuacutemero de surfels dos modelos resultados das operaccedilotildees com os modelos MaxPlanck e Male

Em seguida apresentaremos uma comparaccedilatildeo entre o nosso plugin e o

plugin de Pauly[3] e tambeacutem uma comparaccedilatildeo entre o meacutetodo de Adams e Dutreacute

[2] e o meacutetodo de Pauly [3]

62 Comparaccedilatildeo entre os dois meacutetodos que realizam operaccedilotildees booleanas

A comparaccedilatildeo entre os meacutetodos de Pauly[3] e de Adams e Dutreacute foi feita

em termos de tempo de processamento e em termos conceituais Em termos de

tempo de processamento comparamos o plugin de Pauly[3] com o nosso plugin

Em termos de tempo de processamento verifica-se empiricamente que os

dois meacutetodos apresentam tempos bastante similares Entretanto o tempo de

processamento do algoritmo aqui implementado ainda pode ser melhorado com

Resultados 69

o uso do meacutetodo TINN [19] que foi proposto em Adams[2] - para otimizar a

pesquisa do surfel mais proacuteximo a um ponto que estaacute localizado na regiatildeo de um

noacute que conteacutem surfels - veja seccedilatildeo 42 O uso deste meacutetodo natildeo foi

implementado para este trabalho e a sua implementaccedilatildeo melhoraria o tempo de

resposta do algoritmo Aleacutem disso o trabalho de Sara F Frisken [12] citado no

capiacutetulo 2 apresenta uma otimizaccedilatildeo no uso de octrees que pode ser

incorporada no algoritmo implementado neste trabalho

Em termos conceituais vamos fazer a comparaccedilatildeo do uso do que

chamamos aqui de Regra 2 do tratamento de interseccedilatildeo e do tratamento de

ldquoarestas vivasrdquo

Como vimos na seccedilatildeo 41 tanto o algoritmo implementado nesta

dissertaccedilatildeo baseado no trabalho de Adams e Dutreacute como o meacutetodo de Pauly

[3] parte do que chamamos aqui de Regra 2 para realizar operaccedilotildees booleanas

com pontos Mas cada um destes meacutetodos daacute um tratamento diferente para o

uso desta regra

O meacutetodo de Pauly usa a Regra 2 para classificaccedilatildeo de cada ponto ou de

cada surfel Para classificar um surfel de B sb como dentro ou fora de A eacute

encontrado o surfel de A sa mais proacuteximo a sb e sb eacute classificado a partir de sa

Para encontrar sa Pauly utiliza uma kd-tree Como esta pesquisa para encontrar

sa eacute cara (mesmo usando uma kd-tree) Pauly utiliza uma esfera que conteacutem

pontos com a mesma classificaccedilatildeo (seccedilatildeo 432) e diminui em 90 este nuacutemero

de pesquisas Pauly utiliza tambeacutem a representaccedilatildeo impliacutecita MLS (Moving Least

Squares) para casos em que a Regra 2 poderia falhar e para tratamento de

interseccedilotildees Entretanto o nuacutemero destes casos em que a Regra 2 poderia falhar

eacute muito pequeno E a representaccedilatildeo MLS natildeo eacute uma estrutura simples de ser

implementada Portanto natildeo encontramos vantagens em usar MLS para estes

casos O meacutetodo de Adams e Dutreacute natildeo trata estes casos e na praacutetica

apresenta resultados bastante satisfatoacuterios como foi mostrado Portanto

consideramos que valeria a pena fazer algum tratamento especial para estes

casos se fosse um procedimento simples Para a execuccedilatildeo do algoritmo de

Pauly o uso de MLS natildeo interfere significativamente porque a construccedilatildeo desta

representaccedilatildeo natildeo eacute feita somente para realizar operaccedilotildees booleanas Os testes

empiacutericos que fizemos com o algoritmo de Pauly natildeo incluem a construccedilatildeo desta

representaccedilatildeo

Aparentemente os dois algoritmos satildeo bastante parecidos um usa octrees

e o outro usa kd-tree As duas estruturas de dados satildeo simples e otimizam a

classificaccedilatildeo dos surfels de um modelo como dentro ou fora do outro modelo

Resultados 70

Mas existe uma diferenccedila conceitual entre dois que merece ser destacada O

algoritmo aqui implementado usa a Regra 2 para classificaccedilatildeo dos noacutes de uma

octree e armazena esta octree classificada (ver capiacutetulo 5) Assim na maioria dos

casos natildeo seraacute necessaacuterio encontrar o surfel mais proacuteximo para classificar um

ponto (ou um surfel) como fora ou dentro de um modelo Caso o ponto esteja em

uma aacuterea da octree classificada ele teraacute a classificaccedilatildeo dada agravequela aacuterea A

pesquisa ao surfel mais proacuteximo seraacute feita apenas nos casos em que o ponto a

ser classificado estaacute localizado entre os planos que subdividem um noacute cheio

O uso desta octree classificada levanta uma questatildeo que natildeo foi citada no

trabalho de Adams e Dutreacute que eacute a proximidade desta estrutura (armazenada)

de octree classificada com uma representaccedilatildeo volumeacutetrica do objeto Sendo

assim esta estrutura pode ser aproveitada para outras funccedilotildees aleacutem da

classificaccedilatildeo dos surfels Por exemplo podemos ter uma aproximaccedilatildeo do

volume de uma cena somando os volumes aproximados dos modelos que a

compotildeem Como o enfoque deste trabalho eacute operaccedilatildeo booleana natildeo vamos nos

aprofundar nesta questatildeo

Outra importante diferenccedila entre os dois trabalhos que jaacute foi explicada na

seccedilatildeo 432 eacute que o meacutetodo de Pauly aplica-se a modelos soacutelidos ou natildeo

soacutelidos enquanto que o meacutetodo de Adams e Dutreacute aplica-se somente a modelos

soacutelidos

Quanto ao tratamento de interseccedilatildeo em termos de visualizaccedilatildeo todos os

dois resolvem bem o problema O tratamento de interseccedilatildeo nos dois trabalhos

tambeacutem resolve o problema da validade da Regra 2 (ver seccedilatildeo 44) Entretanto

o tratamento de Adams e Dutreacute natildeo depende da renderizaccedilatildeo sendo portanto

mais portaacutevel Aleacutem disso uma desvantagem do meacutetodo de Pauly eacute o uso da

representaccedilatildeo impliacutecita MLS (ldquoMoving Least Squaresrdquo) do objeto para obter os

pontos exatamente na curva de interseccedilatildeo Esta representaccedilatildeo torna o

tratamento de interseccedilatildeo mais complexo e a vantagem apresentada natildeo eacute tatildeo

significativa para este tratamento de interseccedilatildeo

Conclusatildeo 71

7 Conclusatildeo

Concluiacutemos entatildeo que as escolhas de Adams e Dutreacute por usar uma

octree classificada e pelo tratamento dado agrave interseccedilatildeo satildeo mais abrangentes

que a escolha de Pauly E consideramos que quanto mais abrangente for uma

escolha conceitual mais resultados poderemos tirar dela No caso de Adams e

Dutreacute eles estendem o problema de classificar um ponto para classificar todo o

modelo Como foi citado ele quase fornece uma representaccedilatildeo volumeacutetrica do

modelo Esta aproximada representaccedilatildeo volumeacutetrica pode nos fornecer outras

informaccedilotildees como por exemplo o volume aproximado do modelo

Aleacutem disso o uso da representaccedilatildeo impliacutecita MLS no meacutetodo de Pauly cria

uma complexidade a mais para o meacutetodo sem apresentar vantagens para a

realizaccedilatildeo de operaccedilotildees booleanas que eacute o nosso enfoque

Logo podemos dizer que o meacutetodo de Adams e Dutreacute apresenta as

seguintes vantagens em relaccedilatildeo ao de Pauly

- a estrutura de octree classificada aleacutem de ser usada para classificaccedilatildeo

fornece informaccedilotildees adicionais como volume aproximado do objeto

- o tempo de processamento no meacutetodo de Adams e Dutreacute tende a ser

melhor que no meacutetodo de Pauly se implementadas as melhorias acima citadas e

se colocaacutessemos em consideraccedilatildeo o uso da representaccedilatildeo impliacutecita MLS

(Moving Least Squares)

- o tratamento de interseccedilatildeo de Adams e Dutreacute apresenta a vantagem da

portabilidade ou seja iraacute funcionar independente do algoritmo de renderizaccedilatildeo

utilizado

E as vantagens do meacutetodo de Pauly em relaccedilatildeo ao de Adams e Dutreacute

- a colocaccedilatildeo de surfels exatamente na curva de interseccedilatildeo

- a possibilidade de trabalhar com modelos soacutelidos ou natildeo soacutelidos

E finalizando concluiacutemos que o estudo relatado nesta dissertaccedilatildeo foi

importante por

- fornecer um breve estudo sobre modelagem por pontos uma nova e

promissora aacuterea dentro da computaccedilatildeo graacutefica

Conclusatildeo 72

- por apresentar uma avaliaccedilatildeo dos dois trabalhos existentes sobre

operaccedilotildees booleanas com pontos encontrando as vantagens de cada um

e levantando questotildees que natildeo tinham sido citadas nos trabalhos originais

- por propor e implementar melhorias ao trabalho de Adams e Dutreacute

71 Trabalhos Futuros

Nossa implementaccedilatildeo pode ser ainda evoluiacuteda com as propostas

apresentadas na seccedilatildeo 62 Como observamos o tempo de processamento do

algoritmo aqui implementado ainda pode ser melhorado com o uso do meacutetodo

TINN [19] - que foi proposto em Adams[2] - para otimizar a pesquisa do surfel

mais proacuteximo a um ponto que estaacute localizado na regiatildeo de um noacute que conteacutem

surfels Aleacutem disso o trabalho Simple and Efficient Trasversal Methods for

Quadtrees and Octrees de Sara F Frisken [12] citado no capiacutetulo 2 apresenta

uma otimizaccedilatildeo no uso de octrees Outra proposta para melhorar o tempo de

processamento do algoritmo aqui implementado eacute usar a forma de trabalhar com

octrees apresentada neste trabalho

O trabalho de Adams e Dutreacute [2] eacute aplicado apenas a objetos soacutelidos O

nosso plugin portanto aplica-se somente a este tipo de objeto Jaacute o trabalho de

Pauly[3] eacute aplicado tambeacutem a modelos natildeo soacutelidos Apresentamos como

proposta a um trabalho futuro a extensatildeo do algoritmo aqui implementado para

modelos natildeo soacutelidos O surfel pode conter uma informaccedilatildeo adicional que indica

se ele estaacute delimitando um volume ou natildeo Assim pode-se ter um modelo com

ldquopartes soacutelidasrdquo e ldquopartes natildeo soacutelidasrdquo Por exemplo a uniatildeo de um plano com

uma esfera poderia resultar numa esfera com ldquoabasrdquo (seriam as partes do plano

que estariam fora da esfera) O modelo resultado teria uma parte correspondente

a um espaccedilo 3D (esfera) e outra parte que seria uma superfiacutecie 2D posicionada

no espaccedilo 3D sem delimitar algum volume (abas)

Muitos trabalhos podem ser desenvolvidos aplicando-se o modelo por

pontos em animaccedilatildeo jogos visualizaccedilatildeo de terrenos criaccedilatildeo de protoacutetipos etc

considerando-se a eficiecircncia e simplicidade do modelo E mais especificamente

as operaccedilotildees booleanas com pontos podem ser aplicadas para criaccedilatildeo de

cenaacuterios testes de colisotildees e nestes casos a representaccedilatildeo usando octrees

pode ser mais explorada considerando-se o seu potencial de representaccedilatildeo

volumeacutetrica de um objeto

Referecircncias Bibliograacuteficas 73

8 Referecircncias Bibliograacuteficas

[1] MAumlNTYLAuml M An Introduction to Solid Modeling Computer Science Press 1988

[2] ADAMS B DUTREacute P Interactive Boolean Operations on Surfel-

Bounded Solids Proceedings of SIGGRAPH 2003 San Diego USA 2003

[3] PAULY M KEISER R KOBBELT L GROSS M Shape Modeling

with Point-Sampled Geometry SIGGRAPH 2003 Computer Graphics

Proceedings Annual Conference Series ACM Press ACM SIGGRAPH 2003

[4] LEVOY M WHITTED T The Use of Points as Display Primitives

Technical Report TR 85-022 The University of North Carolina at Chapel Hill

Department of Computer Science 1985

[5] PFISTER H ZWICKER M VAN BAAR J GROSS M 2000 Surfels

Surface Elements as Rendering Primitives SIGGRAPH 2000 pp 335ndash342 New

Orleans LA July 23-28 2000

[6] ZWICKER M PFISTER H VAN BAAR J GROSS M Surface

Splatting SIGGRAPH 2001

[7] PAULY M KOBBELT L GROSS M Multiresolution Modeling of

Point-Sampled Geometry CS Techinical Report 378 September 16 2002

[8] CURLESS B New Methods for Surface Reconstruction from Range Images PhD thesis Stanford University 1997

[9] RUSINKIEWICZ S Real-time Acquisition and Rendering of Large 3D Models PhD thesis Stanford University 2001

Referecircncias Bibliograacuteficas 74

[10] AMENTA N BERN M KAMVYSSELIS M A new Voronoi-Based

Surface Reconstruction Algorithm SIGGRAPH 98 Conference proceedings pp

415-421 New York 1998

[11] ZWICKER M PAULY M KNOLL O GROSS M Pointshop 3D an

Interactive System for Point-Based Surface Editing Proceedings of SIGGRAPH 2002 San Antonio TX July 2002

[12] FRISKEN S PERRY R Simple and Efficient Traversal Methods for

Quadtrees and Octrees Journal of Graphics Tools Vol 7 Issue 3 May 2003

[13] CORREcircA W T OLIVEIRA M M Silva C T Wang J

Modeling and Rendering of Real Environments

Revista de Informaacutetica Teoacuterica e Aplicada (Brazilian Journal of Theoretic and Applied Computing) 9(2)127-156 2002

[14] DAVIS J MARSCHNER S GARR M LEVOY M Filling Holes in

Complex Surfaces Using Volumetric Diffusion First International Symposium on 3D Data Processing Visualization Transmission June 2002

[15] RAumlSAumlNEN J Surface Splatting Theory Extensions and Implementation Masterrsquos Thesis Dept of Computer Science Helsinki

University of Technology May 28 2002

[16] PAULY M Point Primitives for Interactive Modeling and Processing of 3D Geometry PhD thesis Federal Institute of Technology (ETH)

of Zurich 2003

[17] HOPPE H DEROSE T DUCHAMP T MCDONALD J

STUELZLE W Surface Reconstruction from Unorganized Points Computer Graphics 26(2)71ndash78 July 1992

[18] ALEXA M BEHR J COHEN-OR D FLEISHMAN S LEVIN D

SILVA C T Point Set Surfaces IEEE Visualization 2001 pp 21ndash28 October

2001

Referecircncias Bibliograacuteficas 75

[19] GREENSPAN M GODIN G TALBOT J Acceleration of Binning

Nearest Neighbor Methods Proceedings of Vision Interface 2000 pp 337-

344

[20] MENCL R Reconstruction of Surfaces from Unorganized Three-Dimensional Point Clouds Dissertation Dortmund Univ 2001

[21] KRIVANEK J Representing and Rendering Surfaces With Points

httpciteseernjneccomkrivanek03representinghtml Acesso em 30 jul

2003

[22] KRISTJANSSON ET AL Approximate Boolean Operations on Free-

form Solids Proceedings of SIGGRAPH 01 2001

Resultados 67

Figura 36-Resultado da interseccedilatildeo do modelo Male com o MaxPlanck

Figura 37-Resultado da diferenccedila do modelo Male do modelo MaxPlanck

As meacutedias de tempos de processamento foram calculadas da mesma

forma que o primeiro teste com o modelo Igea acima apresentado Os

resultados satildeo mostrados na Tabela 4 Podemos observar que este teste

Resultados 68

apresenta tempos um pouco menores que o teste com o modelo Igea Isto se

deve ao fato de que o modelo MaxPlanck ser significativamente menor que o

modelo Igea MaxPlanck possui 52809 surfels e Igea conteacutem 134345 surfels

Operaccedilatildeo Criaccedilatildeo das

Octrees (seg)

Classificaccedilatildeo

(seg)

Criaccedilatildeo do

resultado (seg)

Total

(seg)

Uniatildeo 3012 1254 102 5285

Interseccedilatildeo 2985 0901 0861 4747

Diferenccedila 2965 0911 0791 4667

Tabela 4-Tempo de processamento das operaccedilotildees com os modelos MaxPlanck e Male

Operaccedilatildeo Nuacutemero de surfels do resultado

Uniatildeo 126532

Interseccedilatildeo 88414

Diferenccedila 77635

Tabela 5-Nuacutemero de surfels dos modelos resultados das operaccedilotildees com os modelos MaxPlanck e Male

Em seguida apresentaremos uma comparaccedilatildeo entre o nosso plugin e o

plugin de Pauly[3] e tambeacutem uma comparaccedilatildeo entre o meacutetodo de Adams e Dutreacute

[2] e o meacutetodo de Pauly [3]

62 Comparaccedilatildeo entre os dois meacutetodos que realizam operaccedilotildees booleanas

A comparaccedilatildeo entre os meacutetodos de Pauly[3] e de Adams e Dutreacute foi feita

em termos de tempo de processamento e em termos conceituais Em termos de

tempo de processamento comparamos o plugin de Pauly[3] com o nosso plugin

Em termos de tempo de processamento verifica-se empiricamente que os

dois meacutetodos apresentam tempos bastante similares Entretanto o tempo de

processamento do algoritmo aqui implementado ainda pode ser melhorado com

Resultados 69

o uso do meacutetodo TINN [19] que foi proposto em Adams[2] - para otimizar a

pesquisa do surfel mais proacuteximo a um ponto que estaacute localizado na regiatildeo de um

noacute que conteacutem surfels - veja seccedilatildeo 42 O uso deste meacutetodo natildeo foi

implementado para este trabalho e a sua implementaccedilatildeo melhoraria o tempo de

resposta do algoritmo Aleacutem disso o trabalho de Sara F Frisken [12] citado no

capiacutetulo 2 apresenta uma otimizaccedilatildeo no uso de octrees que pode ser

incorporada no algoritmo implementado neste trabalho

Em termos conceituais vamos fazer a comparaccedilatildeo do uso do que

chamamos aqui de Regra 2 do tratamento de interseccedilatildeo e do tratamento de

ldquoarestas vivasrdquo

Como vimos na seccedilatildeo 41 tanto o algoritmo implementado nesta

dissertaccedilatildeo baseado no trabalho de Adams e Dutreacute como o meacutetodo de Pauly

[3] parte do que chamamos aqui de Regra 2 para realizar operaccedilotildees booleanas

com pontos Mas cada um destes meacutetodos daacute um tratamento diferente para o

uso desta regra

O meacutetodo de Pauly usa a Regra 2 para classificaccedilatildeo de cada ponto ou de

cada surfel Para classificar um surfel de B sb como dentro ou fora de A eacute

encontrado o surfel de A sa mais proacuteximo a sb e sb eacute classificado a partir de sa

Para encontrar sa Pauly utiliza uma kd-tree Como esta pesquisa para encontrar

sa eacute cara (mesmo usando uma kd-tree) Pauly utiliza uma esfera que conteacutem

pontos com a mesma classificaccedilatildeo (seccedilatildeo 432) e diminui em 90 este nuacutemero

de pesquisas Pauly utiliza tambeacutem a representaccedilatildeo impliacutecita MLS (Moving Least

Squares) para casos em que a Regra 2 poderia falhar e para tratamento de

interseccedilotildees Entretanto o nuacutemero destes casos em que a Regra 2 poderia falhar

eacute muito pequeno E a representaccedilatildeo MLS natildeo eacute uma estrutura simples de ser

implementada Portanto natildeo encontramos vantagens em usar MLS para estes

casos O meacutetodo de Adams e Dutreacute natildeo trata estes casos e na praacutetica

apresenta resultados bastante satisfatoacuterios como foi mostrado Portanto

consideramos que valeria a pena fazer algum tratamento especial para estes

casos se fosse um procedimento simples Para a execuccedilatildeo do algoritmo de

Pauly o uso de MLS natildeo interfere significativamente porque a construccedilatildeo desta

representaccedilatildeo natildeo eacute feita somente para realizar operaccedilotildees booleanas Os testes

empiacutericos que fizemos com o algoritmo de Pauly natildeo incluem a construccedilatildeo desta

representaccedilatildeo

Aparentemente os dois algoritmos satildeo bastante parecidos um usa octrees

e o outro usa kd-tree As duas estruturas de dados satildeo simples e otimizam a

classificaccedilatildeo dos surfels de um modelo como dentro ou fora do outro modelo

Resultados 70

Mas existe uma diferenccedila conceitual entre dois que merece ser destacada O

algoritmo aqui implementado usa a Regra 2 para classificaccedilatildeo dos noacutes de uma

octree e armazena esta octree classificada (ver capiacutetulo 5) Assim na maioria dos

casos natildeo seraacute necessaacuterio encontrar o surfel mais proacuteximo para classificar um

ponto (ou um surfel) como fora ou dentro de um modelo Caso o ponto esteja em

uma aacuterea da octree classificada ele teraacute a classificaccedilatildeo dada agravequela aacuterea A

pesquisa ao surfel mais proacuteximo seraacute feita apenas nos casos em que o ponto a

ser classificado estaacute localizado entre os planos que subdividem um noacute cheio

O uso desta octree classificada levanta uma questatildeo que natildeo foi citada no

trabalho de Adams e Dutreacute que eacute a proximidade desta estrutura (armazenada)

de octree classificada com uma representaccedilatildeo volumeacutetrica do objeto Sendo

assim esta estrutura pode ser aproveitada para outras funccedilotildees aleacutem da

classificaccedilatildeo dos surfels Por exemplo podemos ter uma aproximaccedilatildeo do

volume de uma cena somando os volumes aproximados dos modelos que a

compotildeem Como o enfoque deste trabalho eacute operaccedilatildeo booleana natildeo vamos nos

aprofundar nesta questatildeo

Outra importante diferenccedila entre os dois trabalhos que jaacute foi explicada na

seccedilatildeo 432 eacute que o meacutetodo de Pauly aplica-se a modelos soacutelidos ou natildeo

soacutelidos enquanto que o meacutetodo de Adams e Dutreacute aplica-se somente a modelos

soacutelidos

Quanto ao tratamento de interseccedilatildeo em termos de visualizaccedilatildeo todos os

dois resolvem bem o problema O tratamento de interseccedilatildeo nos dois trabalhos

tambeacutem resolve o problema da validade da Regra 2 (ver seccedilatildeo 44) Entretanto

o tratamento de Adams e Dutreacute natildeo depende da renderizaccedilatildeo sendo portanto

mais portaacutevel Aleacutem disso uma desvantagem do meacutetodo de Pauly eacute o uso da

representaccedilatildeo impliacutecita MLS (ldquoMoving Least Squaresrdquo) do objeto para obter os

pontos exatamente na curva de interseccedilatildeo Esta representaccedilatildeo torna o

tratamento de interseccedilatildeo mais complexo e a vantagem apresentada natildeo eacute tatildeo

significativa para este tratamento de interseccedilatildeo

Conclusatildeo 71

7 Conclusatildeo

Concluiacutemos entatildeo que as escolhas de Adams e Dutreacute por usar uma

octree classificada e pelo tratamento dado agrave interseccedilatildeo satildeo mais abrangentes

que a escolha de Pauly E consideramos que quanto mais abrangente for uma

escolha conceitual mais resultados poderemos tirar dela No caso de Adams e

Dutreacute eles estendem o problema de classificar um ponto para classificar todo o

modelo Como foi citado ele quase fornece uma representaccedilatildeo volumeacutetrica do

modelo Esta aproximada representaccedilatildeo volumeacutetrica pode nos fornecer outras

informaccedilotildees como por exemplo o volume aproximado do modelo

Aleacutem disso o uso da representaccedilatildeo impliacutecita MLS no meacutetodo de Pauly cria

uma complexidade a mais para o meacutetodo sem apresentar vantagens para a

realizaccedilatildeo de operaccedilotildees booleanas que eacute o nosso enfoque

Logo podemos dizer que o meacutetodo de Adams e Dutreacute apresenta as

seguintes vantagens em relaccedilatildeo ao de Pauly

- a estrutura de octree classificada aleacutem de ser usada para classificaccedilatildeo

fornece informaccedilotildees adicionais como volume aproximado do objeto

- o tempo de processamento no meacutetodo de Adams e Dutreacute tende a ser

melhor que no meacutetodo de Pauly se implementadas as melhorias acima citadas e

se colocaacutessemos em consideraccedilatildeo o uso da representaccedilatildeo impliacutecita MLS

(Moving Least Squares)

- o tratamento de interseccedilatildeo de Adams e Dutreacute apresenta a vantagem da

portabilidade ou seja iraacute funcionar independente do algoritmo de renderizaccedilatildeo

utilizado

E as vantagens do meacutetodo de Pauly em relaccedilatildeo ao de Adams e Dutreacute

- a colocaccedilatildeo de surfels exatamente na curva de interseccedilatildeo

- a possibilidade de trabalhar com modelos soacutelidos ou natildeo soacutelidos

E finalizando concluiacutemos que o estudo relatado nesta dissertaccedilatildeo foi

importante por

- fornecer um breve estudo sobre modelagem por pontos uma nova e

promissora aacuterea dentro da computaccedilatildeo graacutefica

Conclusatildeo 72

- por apresentar uma avaliaccedilatildeo dos dois trabalhos existentes sobre

operaccedilotildees booleanas com pontos encontrando as vantagens de cada um

e levantando questotildees que natildeo tinham sido citadas nos trabalhos originais

- por propor e implementar melhorias ao trabalho de Adams e Dutreacute

71 Trabalhos Futuros

Nossa implementaccedilatildeo pode ser ainda evoluiacuteda com as propostas

apresentadas na seccedilatildeo 62 Como observamos o tempo de processamento do

algoritmo aqui implementado ainda pode ser melhorado com o uso do meacutetodo

TINN [19] - que foi proposto em Adams[2] - para otimizar a pesquisa do surfel

mais proacuteximo a um ponto que estaacute localizado na regiatildeo de um noacute que conteacutem

surfels Aleacutem disso o trabalho Simple and Efficient Trasversal Methods for

Quadtrees and Octrees de Sara F Frisken [12] citado no capiacutetulo 2 apresenta

uma otimizaccedilatildeo no uso de octrees Outra proposta para melhorar o tempo de

processamento do algoritmo aqui implementado eacute usar a forma de trabalhar com

octrees apresentada neste trabalho

O trabalho de Adams e Dutreacute [2] eacute aplicado apenas a objetos soacutelidos O

nosso plugin portanto aplica-se somente a este tipo de objeto Jaacute o trabalho de

Pauly[3] eacute aplicado tambeacutem a modelos natildeo soacutelidos Apresentamos como

proposta a um trabalho futuro a extensatildeo do algoritmo aqui implementado para

modelos natildeo soacutelidos O surfel pode conter uma informaccedilatildeo adicional que indica

se ele estaacute delimitando um volume ou natildeo Assim pode-se ter um modelo com

ldquopartes soacutelidasrdquo e ldquopartes natildeo soacutelidasrdquo Por exemplo a uniatildeo de um plano com

uma esfera poderia resultar numa esfera com ldquoabasrdquo (seriam as partes do plano

que estariam fora da esfera) O modelo resultado teria uma parte correspondente

a um espaccedilo 3D (esfera) e outra parte que seria uma superfiacutecie 2D posicionada

no espaccedilo 3D sem delimitar algum volume (abas)

Muitos trabalhos podem ser desenvolvidos aplicando-se o modelo por

pontos em animaccedilatildeo jogos visualizaccedilatildeo de terrenos criaccedilatildeo de protoacutetipos etc

considerando-se a eficiecircncia e simplicidade do modelo E mais especificamente

as operaccedilotildees booleanas com pontos podem ser aplicadas para criaccedilatildeo de

cenaacuterios testes de colisotildees e nestes casos a representaccedilatildeo usando octrees

pode ser mais explorada considerando-se o seu potencial de representaccedilatildeo

volumeacutetrica de um objeto

Referecircncias Bibliograacuteficas 73

8 Referecircncias Bibliograacuteficas

[1] MAumlNTYLAuml M An Introduction to Solid Modeling Computer Science Press 1988

[2] ADAMS B DUTREacute P Interactive Boolean Operations on Surfel-

Bounded Solids Proceedings of SIGGRAPH 2003 San Diego USA 2003

[3] PAULY M KEISER R KOBBELT L GROSS M Shape Modeling

with Point-Sampled Geometry SIGGRAPH 2003 Computer Graphics

Proceedings Annual Conference Series ACM Press ACM SIGGRAPH 2003

[4] LEVOY M WHITTED T The Use of Points as Display Primitives

Technical Report TR 85-022 The University of North Carolina at Chapel Hill

Department of Computer Science 1985

[5] PFISTER H ZWICKER M VAN BAAR J GROSS M 2000 Surfels

Surface Elements as Rendering Primitives SIGGRAPH 2000 pp 335ndash342 New

Orleans LA July 23-28 2000

[6] ZWICKER M PFISTER H VAN BAAR J GROSS M Surface

Splatting SIGGRAPH 2001

[7] PAULY M KOBBELT L GROSS M Multiresolution Modeling of

Point-Sampled Geometry CS Techinical Report 378 September 16 2002

[8] CURLESS B New Methods for Surface Reconstruction from Range Images PhD thesis Stanford University 1997

[9] RUSINKIEWICZ S Real-time Acquisition and Rendering of Large 3D Models PhD thesis Stanford University 2001

Referecircncias Bibliograacuteficas 74

[10] AMENTA N BERN M KAMVYSSELIS M A new Voronoi-Based

Surface Reconstruction Algorithm SIGGRAPH 98 Conference proceedings pp

415-421 New York 1998

[11] ZWICKER M PAULY M KNOLL O GROSS M Pointshop 3D an

Interactive System for Point-Based Surface Editing Proceedings of SIGGRAPH 2002 San Antonio TX July 2002

[12] FRISKEN S PERRY R Simple and Efficient Traversal Methods for

Quadtrees and Octrees Journal of Graphics Tools Vol 7 Issue 3 May 2003

[13] CORREcircA W T OLIVEIRA M M Silva C T Wang J

Modeling and Rendering of Real Environments

Revista de Informaacutetica Teoacuterica e Aplicada (Brazilian Journal of Theoretic and Applied Computing) 9(2)127-156 2002

[14] DAVIS J MARSCHNER S GARR M LEVOY M Filling Holes in

Complex Surfaces Using Volumetric Diffusion First International Symposium on 3D Data Processing Visualization Transmission June 2002

[15] RAumlSAumlNEN J Surface Splatting Theory Extensions and Implementation Masterrsquos Thesis Dept of Computer Science Helsinki

University of Technology May 28 2002

[16] PAULY M Point Primitives for Interactive Modeling and Processing of 3D Geometry PhD thesis Federal Institute of Technology (ETH)

of Zurich 2003

[17] HOPPE H DEROSE T DUCHAMP T MCDONALD J

STUELZLE W Surface Reconstruction from Unorganized Points Computer Graphics 26(2)71ndash78 July 1992

[18] ALEXA M BEHR J COHEN-OR D FLEISHMAN S LEVIN D

SILVA C T Point Set Surfaces IEEE Visualization 2001 pp 21ndash28 October

2001

Referecircncias Bibliograacuteficas 75

[19] GREENSPAN M GODIN G TALBOT J Acceleration of Binning

Nearest Neighbor Methods Proceedings of Vision Interface 2000 pp 337-

344

[20] MENCL R Reconstruction of Surfaces from Unorganized Three-Dimensional Point Clouds Dissertation Dortmund Univ 2001

[21] KRIVANEK J Representing and Rendering Surfaces With Points

httpciteseernjneccomkrivanek03representinghtml Acesso em 30 jul

2003

[22] KRISTJANSSON ET AL Approximate Boolean Operations on Free-

form Solids Proceedings of SIGGRAPH 01 2001

Resultados 68

apresenta tempos um pouco menores que o teste com o modelo Igea Isto se

deve ao fato de que o modelo MaxPlanck ser significativamente menor que o

modelo Igea MaxPlanck possui 52809 surfels e Igea conteacutem 134345 surfels

Operaccedilatildeo Criaccedilatildeo das

Octrees (seg)

Classificaccedilatildeo

(seg)

Criaccedilatildeo do

resultado (seg)

Total

(seg)

Uniatildeo 3012 1254 102 5285

Interseccedilatildeo 2985 0901 0861 4747

Diferenccedila 2965 0911 0791 4667

Tabela 4-Tempo de processamento das operaccedilotildees com os modelos MaxPlanck e Male

Operaccedilatildeo Nuacutemero de surfels do resultado

Uniatildeo 126532

Interseccedilatildeo 88414

Diferenccedila 77635

Tabela 5-Nuacutemero de surfels dos modelos resultados das operaccedilotildees com os modelos MaxPlanck e Male

Em seguida apresentaremos uma comparaccedilatildeo entre o nosso plugin e o

plugin de Pauly[3] e tambeacutem uma comparaccedilatildeo entre o meacutetodo de Adams e Dutreacute

[2] e o meacutetodo de Pauly [3]

62 Comparaccedilatildeo entre os dois meacutetodos que realizam operaccedilotildees booleanas

A comparaccedilatildeo entre os meacutetodos de Pauly[3] e de Adams e Dutreacute foi feita

em termos de tempo de processamento e em termos conceituais Em termos de

tempo de processamento comparamos o plugin de Pauly[3] com o nosso plugin

Em termos de tempo de processamento verifica-se empiricamente que os

dois meacutetodos apresentam tempos bastante similares Entretanto o tempo de

processamento do algoritmo aqui implementado ainda pode ser melhorado com

Resultados 69

o uso do meacutetodo TINN [19] que foi proposto em Adams[2] - para otimizar a

pesquisa do surfel mais proacuteximo a um ponto que estaacute localizado na regiatildeo de um

noacute que conteacutem surfels - veja seccedilatildeo 42 O uso deste meacutetodo natildeo foi

implementado para este trabalho e a sua implementaccedilatildeo melhoraria o tempo de

resposta do algoritmo Aleacutem disso o trabalho de Sara F Frisken [12] citado no

capiacutetulo 2 apresenta uma otimizaccedilatildeo no uso de octrees que pode ser

incorporada no algoritmo implementado neste trabalho

Em termos conceituais vamos fazer a comparaccedilatildeo do uso do que

chamamos aqui de Regra 2 do tratamento de interseccedilatildeo e do tratamento de

ldquoarestas vivasrdquo

Como vimos na seccedilatildeo 41 tanto o algoritmo implementado nesta

dissertaccedilatildeo baseado no trabalho de Adams e Dutreacute como o meacutetodo de Pauly

[3] parte do que chamamos aqui de Regra 2 para realizar operaccedilotildees booleanas

com pontos Mas cada um destes meacutetodos daacute um tratamento diferente para o

uso desta regra

O meacutetodo de Pauly usa a Regra 2 para classificaccedilatildeo de cada ponto ou de

cada surfel Para classificar um surfel de B sb como dentro ou fora de A eacute

encontrado o surfel de A sa mais proacuteximo a sb e sb eacute classificado a partir de sa

Para encontrar sa Pauly utiliza uma kd-tree Como esta pesquisa para encontrar

sa eacute cara (mesmo usando uma kd-tree) Pauly utiliza uma esfera que conteacutem

pontos com a mesma classificaccedilatildeo (seccedilatildeo 432) e diminui em 90 este nuacutemero

de pesquisas Pauly utiliza tambeacutem a representaccedilatildeo impliacutecita MLS (Moving Least

Squares) para casos em que a Regra 2 poderia falhar e para tratamento de

interseccedilotildees Entretanto o nuacutemero destes casos em que a Regra 2 poderia falhar

eacute muito pequeno E a representaccedilatildeo MLS natildeo eacute uma estrutura simples de ser

implementada Portanto natildeo encontramos vantagens em usar MLS para estes

casos O meacutetodo de Adams e Dutreacute natildeo trata estes casos e na praacutetica

apresenta resultados bastante satisfatoacuterios como foi mostrado Portanto

consideramos que valeria a pena fazer algum tratamento especial para estes

casos se fosse um procedimento simples Para a execuccedilatildeo do algoritmo de

Pauly o uso de MLS natildeo interfere significativamente porque a construccedilatildeo desta

representaccedilatildeo natildeo eacute feita somente para realizar operaccedilotildees booleanas Os testes

empiacutericos que fizemos com o algoritmo de Pauly natildeo incluem a construccedilatildeo desta

representaccedilatildeo

Aparentemente os dois algoritmos satildeo bastante parecidos um usa octrees

e o outro usa kd-tree As duas estruturas de dados satildeo simples e otimizam a

classificaccedilatildeo dos surfels de um modelo como dentro ou fora do outro modelo

Resultados 70

Mas existe uma diferenccedila conceitual entre dois que merece ser destacada O

algoritmo aqui implementado usa a Regra 2 para classificaccedilatildeo dos noacutes de uma

octree e armazena esta octree classificada (ver capiacutetulo 5) Assim na maioria dos

casos natildeo seraacute necessaacuterio encontrar o surfel mais proacuteximo para classificar um

ponto (ou um surfel) como fora ou dentro de um modelo Caso o ponto esteja em

uma aacuterea da octree classificada ele teraacute a classificaccedilatildeo dada agravequela aacuterea A

pesquisa ao surfel mais proacuteximo seraacute feita apenas nos casos em que o ponto a

ser classificado estaacute localizado entre os planos que subdividem um noacute cheio

O uso desta octree classificada levanta uma questatildeo que natildeo foi citada no

trabalho de Adams e Dutreacute que eacute a proximidade desta estrutura (armazenada)

de octree classificada com uma representaccedilatildeo volumeacutetrica do objeto Sendo

assim esta estrutura pode ser aproveitada para outras funccedilotildees aleacutem da

classificaccedilatildeo dos surfels Por exemplo podemos ter uma aproximaccedilatildeo do

volume de uma cena somando os volumes aproximados dos modelos que a

compotildeem Como o enfoque deste trabalho eacute operaccedilatildeo booleana natildeo vamos nos

aprofundar nesta questatildeo

Outra importante diferenccedila entre os dois trabalhos que jaacute foi explicada na

seccedilatildeo 432 eacute que o meacutetodo de Pauly aplica-se a modelos soacutelidos ou natildeo

soacutelidos enquanto que o meacutetodo de Adams e Dutreacute aplica-se somente a modelos

soacutelidos

Quanto ao tratamento de interseccedilatildeo em termos de visualizaccedilatildeo todos os

dois resolvem bem o problema O tratamento de interseccedilatildeo nos dois trabalhos

tambeacutem resolve o problema da validade da Regra 2 (ver seccedilatildeo 44) Entretanto

o tratamento de Adams e Dutreacute natildeo depende da renderizaccedilatildeo sendo portanto

mais portaacutevel Aleacutem disso uma desvantagem do meacutetodo de Pauly eacute o uso da

representaccedilatildeo impliacutecita MLS (ldquoMoving Least Squaresrdquo) do objeto para obter os

pontos exatamente na curva de interseccedilatildeo Esta representaccedilatildeo torna o

tratamento de interseccedilatildeo mais complexo e a vantagem apresentada natildeo eacute tatildeo

significativa para este tratamento de interseccedilatildeo

Conclusatildeo 71

7 Conclusatildeo

Concluiacutemos entatildeo que as escolhas de Adams e Dutreacute por usar uma

octree classificada e pelo tratamento dado agrave interseccedilatildeo satildeo mais abrangentes

que a escolha de Pauly E consideramos que quanto mais abrangente for uma

escolha conceitual mais resultados poderemos tirar dela No caso de Adams e

Dutreacute eles estendem o problema de classificar um ponto para classificar todo o

modelo Como foi citado ele quase fornece uma representaccedilatildeo volumeacutetrica do

modelo Esta aproximada representaccedilatildeo volumeacutetrica pode nos fornecer outras

informaccedilotildees como por exemplo o volume aproximado do modelo

Aleacutem disso o uso da representaccedilatildeo impliacutecita MLS no meacutetodo de Pauly cria

uma complexidade a mais para o meacutetodo sem apresentar vantagens para a

realizaccedilatildeo de operaccedilotildees booleanas que eacute o nosso enfoque

Logo podemos dizer que o meacutetodo de Adams e Dutreacute apresenta as

seguintes vantagens em relaccedilatildeo ao de Pauly

- a estrutura de octree classificada aleacutem de ser usada para classificaccedilatildeo

fornece informaccedilotildees adicionais como volume aproximado do objeto

- o tempo de processamento no meacutetodo de Adams e Dutreacute tende a ser

melhor que no meacutetodo de Pauly se implementadas as melhorias acima citadas e

se colocaacutessemos em consideraccedilatildeo o uso da representaccedilatildeo impliacutecita MLS

(Moving Least Squares)

- o tratamento de interseccedilatildeo de Adams e Dutreacute apresenta a vantagem da

portabilidade ou seja iraacute funcionar independente do algoritmo de renderizaccedilatildeo

utilizado

E as vantagens do meacutetodo de Pauly em relaccedilatildeo ao de Adams e Dutreacute

- a colocaccedilatildeo de surfels exatamente na curva de interseccedilatildeo

- a possibilidade de trabalhar com modelos soacutelidos ou natildeo soacutelidos

E finalizando concluiacutemos que o estudo relatado nesta dissertaccedilatildeo foi

importante por

- fornecer um breve estudo sobre modelagem por pontos uma nova e

promissora aacuterea dentro da computaccedilatildeo graacutefica

Conclusatildeo 72

- por apresentar uma avaliaccedilatildeo dos dois trabalhos existentes sobre

operaccedilotildees booleanas com pontos encontrando as vantagens de cada um

e levantando questotildees que natildeo tinham sido citadas nos trabalhos originais

- por propor e implementar melhorias ao trabalho de Adams e Dutreacute

71 Trabalhos Futuros

Nossa implementaccedilatildeo pode ser ainda evoluiacuteda com as propostas

apresentadas na seccedilatildeo 62 Como observamos o tempo de processamento do

algoritmo aqui implementado ainda pode ser melhorado com o uso do meacutetodo

TINN [19] - que foi proposto em Adams[2] - para otimizar a pesquisa do surfel

mais proacuteximo a um ponto que estaacute localizado na regiatildeo de um noacute que conteacutem

surfels Aleacutem disso o trabalho Simple and Efficient Trasversal Methods for

Quadtrees and Octrees de Sara F Frisken [12] citado no capiacutetulo 2 apresenta

uma otimizaccedilatildeo no uso de octrees Outra proposta para melhorar o tempo de

processamento do algoritmo aqui implementado eacute usar a forma de trabalhar com

octrees apresentada neste trabalho

O trabalho de Adams e Dutreacute [2] eacute aplicado apenas a objetos soacutelidos O

nosso plugin portanto aplica-se somente a este tipo de objeto Jaacute o trabalho de

Pauly[3] eacute aplicado tambeacutem a modelos natildeo soacutelidos Apresentamos como

proposta a um trabalho futuro a extensatildeo do algoritmo aqui implementado para

modelos natildeo soacutelidos O surfel pode conter uma informaccedilatildeo adicional que indica

se ele estaacute delimitando um volume ou natildeo Assim pode-se ter um modelo com

ldquopartes soacutelidasrdquo e ldquopartes natildeo soacutelidasrdquo Por exemplo a uniatildeo de um plano com

uma esfera poderia resultar numa esfera com ldquoabasrdquo (seriam as partes do plano

que estariam fora da esfera) O modelo resultado teria uma parte correspondente

a um espaccedilo 3D (esfera) e outra parte que seria uma superfiacutecie 2D posicionada

no espaccedilo 3D sem delimitar algum volume (abas)

Muitos trabalhos podem ser desenvolvidos aplicando-se o modelo por

pontos em animaccedilatildeo jogos visualizaccedilatildeo de terrenos criaccedilatildeo de protoacutetipos etc

considerando-se a eficiecircncia e simplicidade do modelo E mais especificamente

as operaccedilotildees booleanas com pontos podem ser aplicadas para criaccedilatildeo de

cenaacuterios testes de colisotildees e nestes casos a representaccedilatildeo usando octrees

pode ser mais explorada considerando-se o seu potencial de representaccedilatildeo

volumeacutetrica de um objeto

Referecircncias Bibliograacuteficas 73

8 Referecircncias Bibliograacuteficas

[1] MAumlNTYLAuml M An Introduction to Solid Modeling Computer Science Press 1988

[2] ADAMS B DUTREacute P Interactive Boolean Operations on Surfel-

Bounded Solids Proceedings of SIGGRAPH 2003 San Diego USA 2003

[3] PAULY M KEISER R KOBBELT L GROSS M Shape Modeling

with Point-Sampled Geometry SIGGRAPH 2003 Computer Graphics

Proceedings Annual Conference Series ACM Press ACM SIGGRAPH 2003

[4] LEVOY M WHITTED T The Use of Points as Display Primitives

Technical Report TR 85-022 The University of North Carolina at Chapel Hill

Department of Computer Science 1985

[5] PFISTER H ZWICKER M VAN BAAR J GROSS M 2000 Surfels

Surface Elements as Rendering Primitives SIGGRAPH 2000 pp 335ndash342 New

Orleans LA July 23-28 2000

[6] ZWICKER M PFISTER H VAN BAAR J GROSS M Surface

Splatting SIGGRAPH 2001

[7] PAULY M KOBBELT L GROSS M Multiresolution Modeling of

Point-Sampled Geometry CS Techinical Report 378 September 16 2002

[8] CURLESS B New Methods for Surface Reconstruction from Range Images PhD thesis Stanford University 1997

[9] RUSINKIEWICZ S Real-time Acquisition and Rendering of Large 3D Models PhD thesis Stanford University 2001

Referecircncias Bibliograacuteficas 74

[10] AMENTA N BERN M KAMVYSSELIS M A new Voronoi-Based

Surface Reconstruction Algorithm SIGGRAPH 98 Conference proceedings pp

415-421 New York 1998

[11] ZWICKER M PAULY M KNOLL O GROSS M Pointshop 3D an

Interactive System for Point-Based Surface Editing Proceedings of SIGGRAPH 2002 San Antonio TX July 2002

[12] FRISKEN S PERRY R Simple and Efficient Traversal Methods for

Quadtrees and Octrees Journal of Graphics Tools Vol 7 Issue 3 May 2003

[13] CORREcircA W T OLIVEIRA M M Silva C T Wang J

Modeling and Rendering of Real Environments

Revista de Informaacutetica Teoacuterica e Aplicada (Brazilian Journal of Theoretic and Applied Computing) 9(2)127-156 2002

[14] DAVIS J MARSCHNER S GARR M LEVOY M Filling Holes in

Complex Surfaces Using Volumetric Diffusion First International Symposium on 3D Data Processing Visualization Transmission June 2002

[15] RAumlSAumlNEN J Surface Splatting Theory Extensions and Implementation Masterrsquos Thesis Dept of Computer Science Helsinki

University of Technology May 28 2002

[16] PAULY M Point Primitives for Interactive Modeling and Processing of 3D Geometry PhD thesis Federal Institute of Technology (ETH)

of Zurich 2003

[17] HOPPE H DEROSE T DUCHAMP T MCDONALD J

STUELZLE W Surface Reconstruction from Unorganized Points Computer Graphics 26(2)71ndash78 July 1992

[18] ALEXA M BEHR J COHEN-OR D FLEISHMAN S LEVIN D

SILVA C T Point Set Surfaces IEEE Visualization 2001 pp 21ndash28 October

2001

Referecircncias Bibliograacuteficas 75

[19] GREENSPAN M GODIN G TALBOT J Acceleration of Binning

Nearest Neighbor Methods Proceedings of Vision Interface 2000 pp 337-

344

[20] MENCL R Reconstruction of Surfaces from Unorganized Three-Dimensional Point Clouds Dissertation Dortmund Univ 2001

[21] KRIVANEK J Representing and Rendering Surfaces With Points

httpciteseernjneccomkrivanek03representinghtml Acesso em 30 jul

2003

[22] KRISTJANSSON ET AL Approximate Boolean Operations on Free-

form Solids Proceedings of SIGGRAPH 01 2001

Resultados 69

o uso do meacutetodo TINN [19] que foi proposto em Adams[2] - para otimizar a

pesquisa do surfel mais proacuteximo a um ponto que estaacute localizado na regiatildeo de um

noacute que conteacutem surfels - veja seccedilatildeo 42 O uso deste meacutetodo natildeo foi

implementado para este trabalho e a sua implementaccedilatildeo melhoraria o tempo de

resposta do algoritmo Aleacutem disso o trabalho de Sara F Frisken [12] citado no

capiacutetulo 2 apresenta uma otimizaccedilatildeo no uso de octrees que pode ser

incorporada no algoritmo implementado neste trabalho

Em termos conceituais vamos fazer a comparaccedilatildeo do uso do que

chamamos aqui de Regra 2 do tratamento de interseccedilatildeo e do tratamento de

ldquoarestas vivasrdquo

Como vimos na seccedilatildeo 41 tanto o algoritmo implementado nesta

dissertaccedilatildeo baseado no trabalho de Adams e Dutreacute como o meacutetodo de Pauly

[3] parte do que chamamos aqui de Regra 2 para realizar operaccedilotildees booleanas

com pontos Mas cada um destes meacutetodos daacute um tratamento diferente para o

uso desta regra

O meacutetodo de Pauly usa a Regra 2 para classificaccedilatildeo de cada ponto ou de

cada surfel Para classificar um surfel de B sb como dentro ou fora de A eacute

encontrado o surfel de A sa mais proacuteximo a sb e sb eacute classificado a partir de sa

Para encontrar sa Pauly utiliza uma kd-tree Como esta pesquisa para encontrar

sa eacute cara (mesmo usando uma kd-tree) Pauly utiliza uma esfera que conteacutem

pontos com a mesma classificaccedilatildeo (seccedilatildeo 432) e diminui em 90 este nuacutemero

de pesquisas Pauly utiliza tambeacutem a representaccedilatildeo impliacutecita MLS (Moving Least

Squares) para casos em que a Regra 2 poderia falhar e para tratamento de

interseccedilotildees Entretanto o nuacutemero destes casos em que a Regra 2 poderia falhar

eacute muito pequeno E a representaccedilatildeo MLS natildeo eacute uma estrutura simples de ser

implementada Portanto natildeo encontramos vantagens em usar MLS para estes

casos O meacutetodo de Adams e Dutreacute natildeo trata estes casos e na praacutetica

apresenta resultados bastante satisfatoacuterios como foi mostrado Portanto

consideramos que valeria a pena fazer algum tratamento especial para estes

casos se fosse um procedimento simples Para a execuccedilatildeo do algoritmo de

Pauly o uso de MLS natildeo interfere significativamente porque a construccedilatildeo desta

representaccedilatildeo natildeo eacute feita somente para realizar operaccedilotildees booleanas Os testes

empiacutericos que fizemos com o algoritmo de Pauly natildeo incluem a construccedilatildeo desta

representaccedilatildeo

Aparentemente os dois algoritmos satildeo bastante parecidos um usa octrees

e o outro usa kd-tree As duas estruturas de dados satildeo simples e otimizam a

classificaccedilatildeo dos surfels de um modelo como dentro ou fora do outro modelo

Resultados 70

Mas existe uma diferenccedila conceitual entre dois que merece ser destacada O

algoritmo aqui implementado usa a Regra 2 para classificaccedilatildeo dos noacutes de uma

octree e armazena esta octree classificada (ver capiacutetulo 5) Assim na maioria dos

casos natildeo seraacute necessaacuterio encontrar o surfel mais proacuteximo para classificar um

ponto (ou um surfel) como fora ou dentro de um modelo Caso o ponto esteja em

uma aacuterea da octree classificada ele teraacute a classificaccedilatildeo dada agravequela aacuterea A

pesquisa ao surfel mais proacuteximo seraacute feita apenas nos casos em que o ponto a

ser classificado estaacute localizado entre os planos que subdividem um noacute cheio

O uso desta octree classificada levanta uma questatildeo que natildeo foi citada no

trabalho de Adams e Dutreacute que eacute a proximidade desta estrutura (armazenada)

de octree classificada com uma representaccedilatildeo volumeacutetrica do objeto Sendo

assim esta estrutura pode ser aproveitada para outras funccedilotildees aleacutem da

classificaccedilatildeo dos surfels Por exemplo podemos ter uma aproximaccedilatildeo do

volume de uma cena somando os volumes aproximados dos modelos que a

compotildeem Como o enfoque deste trabalho eacute operaccedilatildeo booleana natildeo vamos nos

aprofundar nesta questatildeo

Outra importante diferenccedila entre os dois trabalhos que jaacute foi explicada na

seccedilatildeo 432 eacute que o meacutetodo de Pauly aplica-se a modelos soacutelidos ou natildeo

soacutelidos enquanto que o meacutetodo de Adams e Dutreacute aplica-se somente a modelos

soacutelidos

Quanto ao tratamento de interseccedilatildeo em termos de visualizaccedilatildeo todos os

dois resolvem bem o problema O tratamento de interseccedilatildeo nos dois trabalhos

tambeacutem resolve o problema da validade da Regra 2 (ver seccedilatildeo 44) Entretanto

o tratamento de Adams e Dutreacute natildeo depende da renderizaccedilatildeo sendo portanto

mais portaacutevel Aleacutem disso uma desvantagem do meacutetodo de Pauly eacute o uso da

representaccedilatildeo impliacutecita MLS (ldquoMoving Least Squaresrdquo) do objeto para obter os

pontos exatamente na curva de interseccedilatildeo Esta representaccedilatildeo torna o

tratamento de interseccedilatildeo mais complexo e a vantagem apresentada natildeo eacute tatildeo

significativa para este tratamento de interseccedilatildeo

Conclusatildeo 71

7 Conclusatildeo

Concluiacutemos entatildeo que as escolhas de Adams e Dutreacute por usar uma

octree classificada e pelo tratamento dado agrave interseccedilatildeo satildeo mais abrangentes

que a escolha de Pauly E consideramos que quanto mais abrangente for uma

escolha conceitual mais resultados poderemos tirar dela No caso de Adams e

Dutreacute eles estendem o problema de classificar um ponto para classificar todo o

modelo Como foi citado ele quase fornece uma representaccedilatildeo volumeacutetrica do

modelo Esta aproximada representaccedilatildeo volumeacutetrica pode nos fornecer outras

informaccedilotildees como por exemplo o volume aproximado do modelo

Aleacutem disso o uso da representaccedilatildeo impliacutecita MLS no meacutetodo de Pauly cria

uma complexidade a mais para o meacutetodo sem apresentar vantagens para a

realizaccedilatildeo de operaccedilotildees booleanas que eacute o nosso enfoque

Logo podemos dizer que o meacutetodo de Adams e Dutreacute apresenta as

seguintes vantagens em relaccedilatildeo ao de Pauly

- a estrutura de octree classificada aleacutem de ser usada para classificaccedilatildeo

fornece informaccedilotildees adicionais como volume aproximado do objeto

- o tempo de processamento no meacutetodo de Adams e Dutreacute tende a ser

melhor que no meacutetodo de Pauly se implementadas as melhorias acima citadas e

se colocaacutessemos em consideraccedilatildeo o uso da representaccedilatildeo impliacutecita MLS

(Moving Least Squares)

- o tratamento de interseccedilatildeo de Adams e Dutreacute apresenta a vantagem da

portabilidade ou seja iraacute funcionar independente do algoritmo de renderizaccedilatildeo

utilizado

E as vantagens do meacutetodo de Pauly em relaccedilatildeo ao de Adams e Dutreacute

- a colocaccedilatildeo de surfels exatamente na curva de interseccedilatildeo

- a possibilidade de trabalhar com modelos soacutelidos ou natildeo soacutelidos

E finalizando concluiacutemos que o estudo relatado nesta dissertaccedilatildeo foi

importante por

- fornecer um breve estudo sobre modelagem por pontos uma nova e

promissora aacuterea dentro da computaccedilatildeo graacutefica

Conclusatildeo 72

- por apresentar uma avaliaccedilatildeo dos dois trabalhos existentes sobre

operaccedilotildees booleanas com pontos encontrando as vantagens de cada um

e levantando questotildees que natildeo tinham sido citadas nos trabalhos originais

- por propor e implementar melhorias ao trabalho de Adams e Dutreacute

71 Trabalhos Futuros

Nossa implementaccedilatildeo pode ser ainda evoluiacuteda com as propostas

apresentadas na seccedilatildeo 62 Como observamos o tempo de processamento do

algoritmo aqui implementado ainda pode ser melhorado com o uso do meacutetodo

TINN [19] - que foi proposto em Adams[2] - para otimizar a pesquisa do surfel

mais proacuteximo a um ponto que estaacute localizado na regiatildeo de um noacute que conteacutem

surfels Aleacutem disso o trabalho Simple and Efficient Trasversal Methods for

Quadtrees and Octrees de Sara F Frisken [12] citado no capiacutetulo 2 apresenta

uma otimizaccedilatildeo no uso de octrees Outra proposta para melhorar o tempo de

processamento do algoritmo aqui implementado eacute usar a forma de trabalhar com

octrees apresentada neste trabalho

O trabalho de Adams e Dutreacute [2] eacute aplicado apenas a objetos soacutelidos O

nosso plugin portanto aplica-se somente a este tipo de objeto Jaacute o trabalho de

Pauly[3] eacute aplicado tambeacutem a modelos natildeo soacutelidos Apresentamos como

proposta a um trabalho futuro a extensatildeo do algoritmo aqui implementado para

modelos natildeo soacutelidos O surfel pode conter uma informaccedilatildeo adicional que indica

se ele estaacute delimitando um volume ou natildeo Assim pode-se ter um modelo com

ldquopartes soacutelidasrdquo e ldquopartes natildeo soacutelidasrdquo Por exemplo a uniatildeo de um plano com

uma esfera poderia resultar numa esfera com ldquoabasrdquo (seriam as partes do plano

que estariam fora da esfera) O modelo resultado teria uma parte correspondente

a um espaccedilo 3D (esfera) e outra parte que seria uma superfiacutecie 2D posicionada

no espaccedilo 3D sem delimitar algum volume (abas)

Muitos trabalhos podem ser desenvolvidos aplicando-se o modelo por

pontos em animaccedilatildeo jogos visualizaccedilatildeo de terrenos criaccedilatildeo de protoacutetipos etc

considerando-se a eficiecircncia e simplicidade do modelo E mais especificamente

as operaccedilotildees booleanas com pontos podem ser aplicadas para criaccedilatildeo de

cenaacuterios testes de colisotildees e nestes casos a representaccedilatildeo usando octrees

pode ser mais explorada considerando-se o seu potencial de representaccedilatildeo

volumeacutetrica de um objeto

Referecircncias Bibliograacuteficas 73

8 Referecircncias Bibliograacuteficas

[1] MAumlNTYLAuml M An Introduction to Solid Modeling Computer Science Press 1988

[2] ADAMS B DUTREacute P Interactive Boolean Operations on Surfel-

Bounded Solids Proceedings of SIGGRAPH 2003 San Diego USA 2003

[3] PAULY M KEISER R KOBBELT L GROSS M Shape Modeling

with Point-Sampled Geometry SIGGRAPH 2003 Computer Graphics

Proceedings Annual Conference Series ACM Press ACM SIGGRAPH 2003

[4] LEVOY M WHITTED T The Use of Points as Display Primitives

Technical Report TR 85-022 The University of North Carolina at Chapel Hill

Department of Computer Science 1985

[5] PFISTER H ZWICKER M VAN BAAR J GROSS M 2000 Surfels

Surface Elements as Rendering Primitives SIGGRAPH 2000 pp 335ndash342 New

Orleans LA July 23-28 2000

[6] ZWICKER M PFISTER H VAN BAAR J GROSS M Surface

Splatting SIGGRAPH 2001

[7] PAULY M KOBBELT L GROSS M Multiresolution Modeling of

Point-Sampled Geometry CS Techinical Report 378 September 16 2002

[8] CURLESS B New Methods for Surface Reconstruction from Range Images PhD thesis Stanford University 1997

[9] RUSINKIEWICZ S Real-time Acquisition and Rendering of Large 3D Models PhD thesis Stanford University 2001

Referecircncias Bibliograacuteficas 74

[10] AMENTA N BERN M KAMVYSSELIS M A new Voronoi-Based

Surface Reconstruction Algorithm SIGGRAPH 98 Conference proceedings pp

415-421 New York 1998

[11] ZWICKER M PAULY M KNOLL O GROSS M Pointshop 3D an

Interactive System for Point-Based Surface Editing Proceedings of SIGGRAPH 2002 San Antonio TX July 2002

[12] FRISKEN S PERRY R Simple and Efficient Traversal Methods for

Quadtrees and Octrees Journal of Graphics Tools Vol 7 Issue 3 May 2003

[13] CORREcircA W T OLIVEIRA M M Silva C T Wang J

Modeling and Rendering of Real Environments

Revista de Informaacutetica Teoacuterica e Aplicada (Brazilian Journal of Theoretic and Applied Computing) 9(2)127-156 2002

[14] DAVIS J MARSCHNER S GARR M LEVOY M Filling Holes in

Complex Surfaces Using Volumetric Diffusion First International Symposium on 3D Data Processing Visualization Transmission June 2002

[15] RAumlSAumlNEN J Surface Splatting Theory Extensions and Implementation Masterrsquos Thesis Dept of Computer Science Helsinki

University of Technology May 28 2002

[16] PAULY M Point Primitives for Interactive Modeling and Processing of 3D Geometry PhD thesis Federal Institute of Technology (ETH)

of Zurich 2003

[17] HOPPE H DEROSE T DUCHAMP T MCDONALD J

STUELZLE W Surface Reconstruction from Unorganized Points Computer Graphics 26(2)71ndash78 July 1992

[18] ALEXA M BEHR J COHEN-OR D FLEISHMAN S LEVIN D

SILVA C T Point Set Surfaces IEEE Visualization 2001 pp 21ndash28 October

2001

Referecircncias Bibliograacuteficas 75

[19] GREENSPAN M GODIN G TALBOT J Acceleration of Binning

Nearest Neighbor Methods Proceedings of Vision Interface 2000 pp 337-

344

[20] MENCL R Reconstruction of Surfaces from Unorganized Three-Dimensional Point Clouds Dissertation Dortmund Univ 2001

[21] KRIVANEK J Representing and Rendering Surfaces With Points

httpciteseernjneccomkrivanek03representinghtml Acesso em 30 jul

2003

[22] KRISTJANSSON ET AL Approximate Boolean Operations on Free-

form Solids Proceedings of SIGGRAPH 01 2001

Resultados 70

Mas existe uma diferenccedila conceitual entre dois que merece ser destacada O

algoritmo aqui implementado usa a Regra 2 para classificaccedilatildeo dos noacutes de uma

octree e armazena esta octree classificada (ver capiacutetulo 5) Assim na maioria dos

casos natildeo seraacute necessaacuterio encontrar o surfel mais proacuteximo para classificar um

ponto (ou um surfel) como fora ou dentro de um modelo Caso o ponto esteja em

uma aacuterea da octree classificada ele teraacute a classificaccedilatildeo dada agravequela aacuterea A

pesquisa ao surfel mais proacuteximo seraacute feita apenas nos casos em que o ponto a

ser classificado estaacute localizado entre os planos que subdividem um noacute cheio

O uso desta octree classificada levanta uma questatildeo que natildeo foi citada no

trabalho de Adams e Dutreacute que eacute a proximidade desta estrutura (armazenada)

de octree classificada com uma representaccedilatildeo volumeacutetrica do objeto Sendo

assim esta estrutura pode ser aproveitada para outras funccedilotildees aleacutem da

classificaccedilatildeo dos surfels Por exemplo podemos ter uma aproximaccedilatildeo do

volume de uma cena somando os volumes aproximados dos modelos que a

compotildeem Como o enfoque deste trabalho eacute operaccedilatildeo booleana natildeo vamos nos

aprofundar nesta questatildeo

Outra importante diferenccedila entre os dois trabalhos que jaacute foi explicada na

seccedilatildeo 432 eacute que o meacutetodo de Pauly aplica-se a modelos soacutelidos ou natildeo

soacutelidos enquanto que o meacutetodo de Adams e Dutreacute aplica-se somente a modelos

soacutelidos

Quanto ao tratamento de interseccedilatildeo em termos de visualizaccedilatildeo todos os

dois resolvem bem o problema O tratamento de interseccedilatildeo nos dois trabalhos

tambeacutem resolve o problema da validade da Regra 2 (ver seccedilatildeo 44) Entretanto

o tratamento de Adams e Dutreacute natildeo depende da renderizaccedilatildeo sendo portanto

mais portaacutevel Aleacutem disso uma desvantagem do meacutetodo de Pauly eacute o uso da

representaccedilatildeo impliacutecita MLS (ldquoMoving Least Squaresrdquo) do objeto para obter os

pontos exatamente na curva de interseccedilatildeo Esta representaccedilatildeo torna o

tratamento de interseccedilatildeo mais complexo e a vantagem apresentada natildeo eacute tatildeo

significativa para este tratamento de interseccedilatildeo

Conclusatildeo 71

7 Conclusatildeo

Concluiacutemos entatildeo que as escolhas de Adams e Dutreacute por usar uma

octree classificada e pelo tratamento dado agrave interseccedilatildeo satildeo mais abrangentes

que a escolha de Pauly E consideramos que quanto mais abrangente for uma

escolha conceitual mais resultados poderemos tirar dela No caso de Adams e

Dutreacute eles estendem o problema de classificar um ponto para classificar todo o

modelo Como foi citado ele quase fornece uma representaccedilatildeo volumeacutetrica do

modelo Esta aproximada representaccedilatildeo volumeacutetrica pode nos fornecer outras

informaccedilotildees como por exemplo o volume aproximado do modelo

Aleacutem disso o uso da representaccedilatildeo impliacutecita MLS no meacutetodo de Pauly cria

uma complexidade a mais para o meacutetodo sem apresentar vantagens para a

realizaccedilatildeo de operaccedilotildees booleanas que eacute o nosso enfoque

Logo podemos dizer que o meacutetodo de Adams e Dutreacute apresenta as

seguintes vantagens em relaccedilatildeo ao de Pauly

- a estrutura de octree classificada aleacutem de ser usada para classificaccedilatildeo

fornece informaccedilotildees adicionais como volume aproximado do objeto

- o tempo de processamento no meacutetodo de Adams e Dutreacute tende a ser

melhor que no meacutetodo de Pauly se implementadas as melhorias acima citadas e

se colocaacutessemos em consideraccedilatildeo o uso da representaccedilatildeo impliacutecita MLS

(Moving Least Squares)

- o tratamento de interseccedilatildeo de Adams e Dutreacute apresenta a vantagem da

portabilidade ou seja iraacute funcionar independente do algoritmo de renderizaccedilatildeo

utilizado

E as vantagens do meacutetodo de Pauly em relaccedilatildeo ao de Adams e Dutreacute

- a colocaccedilatildeo de surfels exatamente na curva de interseccedilatildeo

- a possibilidade de trabalhar com modelos soacutelidos ou natildeo soacutelidos

E finalizando concluiacutemos que o estudo relatado nesta dissertaccedilatildeo foi

importante por

- fornecer um breve estudo sobre modelagem por pontos uma nova e

promissora aacuterea dentro da computaccedilatildeo graacutefica

Conclusatildeo 72

- por apresentar uma avaliaccedilatildeo dos dois trabalhos existentes sobre

operaccedilotildees booleanas com pontos encontrando as vantagens de cada um

e levantando questotildees que natildeo tinham sido citadas nos trabalhos originais

- por propor e implementar melhorias ao trabalho de Adams e Dutreacute

71 Trabalhos Futuros

Nossa implementaccedilatildeo pode ser ainda evoluiacuteda com as propostas

apresentadas na seccedilatildeo 62 Como observamos o tempo de processamento do

algoritmo aqui implementado ainda pode ser melhorado com o uso do meacutetodo

TINN [19] - que foi proposto em Adams[2] - para otimizar a pesquisa do surfel

mais proacuteximo a um ponto que estaacute localizado na regiatildeo de um noacute que conteacutem

surfels Aleacutem disso o trabalho Simple and Efficient Trasversal Methods for

Quadtrees and Octrees de Sara F Frisken [12] citado no capiacutetulo 2 apresenta

uma otimizaccedilatildeo no uso de octrees Outra proposta para melhorar o tempo de

processamento do algoritmo aqui implementado eacute usar a forma de trabalhar com

octrees apresentada neste trabalho

O trabalho de Adams e Dutreacute [2] eacute aplicado apenas a objetos soacutelidos O

nosso plugin portanto aplica-se somente a este tipo de objeto Jaacute o trabalho de

Pauly[3] eacute aplicado tambeacutem a modelos natildeo soacutelidos Apresentamos como

proposta a um trabalho futuro a extensatildeo do algoritmo aqui implementado para

modelos natildeo soacutelidos O surfel pode conter uma informaccedilatildeo adicional que indica

se ele estaacute delimitando um volume ou natildeo Assim pode-se ter um modelo com

ldquopartes soacutelidasrdquo e ldquopartes natildeo soacutelidasrdquo Por exemplo a uniatildeo de um plano com

uma esfera poderia resultar numa esfera com ldquoabasrdquo (seriam as partes do plano

que estariam fora da esfera) O modelo resultado teria uma parte correspondente

a um espaccedilo 3D (esfera) e outra parte que seria uma superfiacutecie 2D posicionada

no espaccedilo 3D sem delimitar algum volume (abas)

Muitos trabalhos podem ser desenvolvidos aplicando-se o modelo por

pontos em animaccedilatildeo jogos visualizaccedilatildeo de terrenos criaccedilatildeo de protoacutetipos etc

considerando-se a eficiecircncia e simplicidade do modelo E mais especificamente

as operaccedilotildees booleanas com pontos podem ser aplicadas para criaccedilatildeo de

cenaacuterios testes de colisotildees e nestes casos a representaccedilatildeo usando octrees

pode ser mais explorada considerando-se o seu potencial de representaccedilatildeo

volumeacutetrica de um objeto

Referecircncias Bibliograacuteficas 73

8 Referecircncias Bibliograacuteficas

[1] MAumlNTYLAuml M An Introduction to Solid Modeling Computer Science Press 1988

[2] ADAMS B DUTREacute P Interactive Boolean Operations on Surfel-

Bounded Solids Proceedings of SIGGRAPH 2003 San Diego USA 2003

[3] PAULY M KEISER R KOBBELT L GROSS M Shape Modeling

with Point-Sampled Geometry SIGGRAPH 2003 Computer Graphics

Proceedings Annual Conference Series ACM Press ACM SIGGRAPH 2003

[4] LEVOY M WHITTED T The Use of Points as Display Primitives

Technical Report TR 85-022 The University of North Carolina at Chapel Hill

Department of Computer Science 1985

[5] PFISTER H ZWICKER M VAN BAAR J GROSS M 2000 Surfels

Surface Elements as Rendering Primitives SIGGRAPH 2000 pp 335ndash342 New

Orleans LA July 23-28 2000

[6] ZWICKER M PFISTER H VAN BAAR J GROSS M Surface

Splatting SIGGRAPH 2001

[7] PAULY M KOBBELT L GROSS M Multiresolution Modeling of

Point-Sampled Geometry CS Techinical Report 378 September 16 2002

[8] CURLESS B New Methods for Surface Reconstruction from Range Images PhD thesis Stanford University 1997

[9] RUSINKIEWICZ S Real-time Acquisition and Rendering of Large 3D Models PhD thesis Stanford University 2001

Referecircncias Bibliograacuteficas 74

[10] AMENTA N BERN M KAMVYSSELIS M A new Voronoi-Based

Surface Reconstruction Algorithm SIGGRAPH 98 Conference proceedings pp

415-421 New York 1998

[11] ZWICKER M PAULY M KNOLL O GROSS M Pointshop 3D an

Interactive System for Point-Based Surface Editing Proceedings of SIGGRAPH 2002 San Antonio TX July 2002

[12] FRISKEN S PERRY R Simple and Efficient Traversal Methods for

Quadtrees and Octrees Journal of Graphics Tools Vol 7 Issue 3 May 2003

[13] CORREcircA W T OLIVEIRA M M Silva C T Wang J

Modeling and Rendering of Real Environments

Revista de Informaacutetica Teoacuterica e Aplicada (Brazilian Journal of Theoretic and Applied Computing) 9(2)127-156 2002

[14] DAVIS J MARSCHNER S GARR M LEVOY M Filling Holes in

Complex Surfaces Using Volumetric Diffusion First International Symposium on 3D Data Processing Visualization Transmission June 2002

[15] RAumlSAumlNEN J Surface Splatting Theory Extensions and Implementation Masterrsquos Thesis Dept of Computer Science Helsinki

University of Technology May 28 2002

[16] PAULY M Point Primitives for Interactive Modeling and Processing of 3D Geometry PhD thesis Federal Institute of Technology (ETH)

of Zurich 2003

[17] HOPPE H DEROSE T DUCHAMP T MCDONALD J

STUELZLE W Surface Reconstruction from Unorganized Points Computer Graphics 26(2)71ndash78 July 1992

[18] ALEXA M BEHR J COHEN-OR D FLEISHMAN S LEVIN D

SILVA C T Point Set Surfaces IEEE Visualization 2001 pp 21ndash28 October

2001

Referecircncias Bibliograacuteficas 75

[19] GREENSPAN M GODIN G TALBOT J Acceleration of Binning

Nearest Neighbor Methods Proceedings of Vision Interface 2000 pp 337-

344

[20] MENCL R Reconstruction of Surfaces from Unorganized Three-Dimensional Point Clouds Dissertation Dortmund Univ 2001

[21] KRIVANEK J Representing and Rendering Surfaces With Points

httpciteseernjneccomkrivanek03representinghtml Acesso em 30 jul

2003

[22] KRISTJANSSON ET AL Approximate Boolean Operations on Free-

form Solids Proceedings of SIGGRAPH 01 2001

Conclusatildeo 71

7 Conclusatildeo

Concluiacutemos entatildeo que as escolhas de Adams e Dutreacute por usar uma

octree classificada e pelo tratamento dado agrave interseccedilatildeo satildeo mais abrangentes

que a escolha de Pauly E consideramos que quanto mais abrangente for uma

escolha conceitual mais resultados poderemos tirar dela No caso de Adams e

Dutreacute eles estendem o problema de classificar um ponto para classificar todo o

modelo Como foi citado ele quase fornece uma representaccedilatildeo volumeacutetrica do

modelo Esta aproximada representaccedilatildeo volumeacutetrica pode nos fornecer outras

informaccedilotildees como por exemplo o volume aproximado do modelo

Aleacutem disso o uso da representaccedilatildeo impliacutecita MLS no meacutetodo de Pauly cria

uma complexidade a mais para o meacutetodo sem apresentar vantagens para a

realizaccedilatildeo de operaccedilotildees booleanas que eacute o nosso enfoque

Logo podemos dizer que o meacutetodo de Adams e Dutreacute apresenta as

seguintes vantagens em relaccedilatildeo ao de Pauly

- a estrutura de octree classificada aleacutem de ser usada para classificaccedilatildeo

fornece informaccedilotildees adicionais como volume aproximado do objeto

- o tempo de processamento no meacutetodo de Adams e Dutreacute tende a ser

melhor que no meacutetodo de Pauly se implementadas as melhorias acima citadas e

se colocaacutessemos em consideraccedilatildeo o uso da representaccedilatildeo impliacutecita MLS

(Moving Least Squares)

- o tratamento de interseccedilatildeo de Adams e Dutreacute apresenta a vantagem da

portabilidade ou seja iraacute funcionar independente do algoritmo de renderizaccedilatildeo

utilizado

E as vantagens do meacutetodo de Pauly em relaccedilatildeo ao de Adams e Dutreacute

- a colocaccedilatildeo de surfels exatamente na curva de interseccedilatildeo

- a possibilidade de trabalhar com modelos soacutelidos ou natildeo soacutelidos

E finalizando concluiacutemos que o estudo relatado nesta dissertaccedilatildeo foi

importante por

- fornecer um breve estudo sobre modelagem por pontos uma nova e

promissora aacuterea dentro da computaccedilatildeo graacutefica

Conclusatildeo 72

- por apresentar uma avaliaccedilatildeo dos dois trabalhos existentes sobre

operaccedilotildees booleanas com pontos encontrando as vantagens de cada um

e levantando questotildees que natildeo tinham sido citadas nos trabalhos originais

- por propor e implementar melhorias ao trabalho de Adams e Dutreacute

71 Trabalhos Futuros

Nossa implementaccedilatildeo pode ser ainda evoluiacuteda com as propostas

apresentadas na seccedilatildeo 62 Como observamos o tempo de processamento do

algoritmo aqui implementado ainda pode ser melhorado com o uso do meacutetodo

TINN [19] - que foi proposto em Adams[2] - para otimizar a pesquisa do surfel

mais proacuteximo a um ponto que estaacute localizado na regiatildeo de um noacute que conteacutem

surfels Aleacutem disso o trabalho Simple and Efficient Trasversal Methods for

Quadtrees and Octrees de Sara F Frisken [12] citado no capiacutetulo 2 apresenta

uma otimizaccedilatildeo no uso de octrees Outra proposta para melhorar o tempo de

processamento do algoritmo aqui implementado eacute usar a forma de trabalhar com

octrees apresentada neste trabalho

O trabalho de Adams e Dutreacute [2] eacute aplicado apenas a objetos soacutelidos O

nosso plugin portanto aplica-se somente a este tipo de objeto Jaacute o trabalho de

Pauly[3] eacute aplicado tambeacutem a modelos natildeo soacutelidos Apresentamos como

proposta a um trabalho futuro a extensatildeo do algoritmo aqui implementado para

modelos natildeo soacutelidos O surfel pode conter uma informaccedilatildeo adicional que indica

se ele estaacute delimitando um volume ou natildeo Assim pode-se ter um modelo com

ldquopartes soacutelidasrdquo e ldquopartes natildeo soacutelidasrdquo Por exemplo a uniatildeo de um plano com

uma esfera poderia resultar numa esfera com ldquoabasrdquo (seriam as partes do plano

que estariam fora da esfera) O modelo resultado teria uma parte correspondente

a um espaccedilo 3D (esfera) e outra parte que seria uma superfiacutecie 2D posicionada

no espaccedilo 3D sem delimitar algum volume (abas)

Muitos trabalhos podem ser desenvolvidos aplicando-se o modelo por

pontos em animaccedilatildeo jogos visualizaccedilatildeo de terrenos criaccedilatildeo de protoacutetipos etc

considerando-se a eficiecircncia e simplicidade do modelo E mais especificamente

as operaccedilotildees booleanas com pontos podem ser aplicadas para criaccedilatildeo de

cenaacuterios testes de colisotildees e nestes casos a representaccedilatildeo usando octrees

pode ser mais explorada considerando-se o seu potencial de representaccedilatildeo

volumeacutetrica de um objeto

Referecircncias Bibliograacuteficas 73

8 Referecircncias Bibliograacuteficas

[1] MAumlNTYLAuml M An Introduction to Solid Modeling Computer Science Press 1988

[2] ADAMS B DUTREacute P Interactive Boolean Operations on Surfel-

Bounded Solids Proceedings of SIGGRAPH 2003 San Diego USA 2003

[3] PAULY M KEISER R KOBBELT L GROSS M Shape Modeling

with Point-Sampled Geometry SIGGRAPH 2003 Computer Graphics

Proceedings Annual Conference Series ACM Press ACM SIGGRAPH 2003

[4] LEVOY M WHITTED T The Use of Points as Display Primitives

Technical Report TR 85-022 The University of North Carolina at Chapel Hill

Department of Computer Science 1985

[5] PFISTER H ZWICKER M VAN BAAR J GROSS M 2000 Surfels

Surface Elements as Rendering Primitives SIGGRAPH 2000 pp 335ndash342 New

Orleans LA July 23-28 2000

[6] ZWICKER M PFISTER H VAN BAAR J GROSS M Surface

Splatting SIGGRAPH 2001

[7] PAULY M KOBBELT L GROSS M Multiresolution Modeling of

Point-Sampled Geometry CS Techinical Report 378 September 16 2002

[8] CURLESS B New Methods for Surface Reconstruction from Range Images PhD thesis Stanford University 1997

[9] RUSINKIEWICZ S Real-time Acquisition and Rendering of Large 3D Models PhD thesis Stanford University 2001

Referecircncias Bibliograacuteficas 74

[10] AMENTA N BERN M KAMVYSSELIS M A new Voronoi-Based

Surface Reconstruction Algorithm SIGGRAPH 98 Conference proceedings pp

415-421 New York 1998

[11] ZWICKER M PAULY M KNOLL O GROSS M Pointshop 3D an

Interactive System for Point-Based Surface Editing Proceedings of SIGGRAPH 2002 San Antonio TX July 2002

[12] FRISKEN S PERRY R Simple and Efficient Traversal Methods for

Quadtrees and Octrees Journal of Graphics Tools Vol 7 Issue 3 May 2003

[13] CORREcircA W T OLIVEIRA M M Silva C T Wang J

Modeling and Rendering of Real Environments

Revista de Informaacutetica Teoacuterica e Aplicada (Brazilian Journal of Theoretic and Applied Computing) 9(2)127-156 2002

[14] DAVIS J MARSCHNER S GARR M LEVOY M Filling Holes in

Complex Surfaces Using Volumetric Diffusion First International Symposium on 3D Data Processing Visualization Transmission June 2002

[15] RAumlSAumlNEN J Surface Splatting Theory Extensions and Implementation Masterrsquos Thesis Dept of Computer Science Helsinki

University of Technology May 28 2002

[16] PAULY M Point Primitives for Interactive Modeling and Processing of 3D Geometry PhD thesis Federal Institute of Technology (ETH)

of Zurich 2003

[17] HOPPE H DEROSE T DUCHAMP T MCDONALD J

STUELZLE W Surface Reconstruction from Unorganized Points Computer Graphics 26(2)71ndash78 July 1992

[18] ALEXA M BEHR J COHEN-OR D FLEISHMAN S LEVIN D

SILVA C T Point Set Surfaces IEEE Visualization 2001 pp 21ndash28 October

2001

Referecircncias Bibliograacuteficas 75

[19] GREENSPAN M GODIN G TALBOT J Acceleration of Binning

Nearest Neighbor Methods Proceedings of Vision Interface 2000 pp 337-

344

[20] MENCL R Reconstruction of Surfaces from Unorganized Three-Dimensional Point Clouds Dissertation Dortmund Univ 2001

[21] KRIVANEK J Representing and Rendering Surfaces With Points

httpciteseernjneccomkrivanek03representinghtml Acesso em 30 jul

2003

[22] KRISTJANSSON ET AL Approximate Boolean Operations on Free-

form Solids Proceedings of SIGGRAPH 01 2001

Conclusatildeo 72

- por apresentar uma avaliaccedilatildeo dos dois trabalhos existentes sobre

operaccedilotildees booleanas com pontos encontrando as vantagens de cada um

e levantando questotildees que natildeo tinham sido citadas nos trabalhos originais

- por propor e implementar melhorias ao trabalho de Adams e Dutreacute

71 Trabalhos Futuros

Nossa implementaccedilatildeo pode ser ainda evoluiacuteda com as propostas

apresentadas na seccedilatildeo 62 Como observamos o tempo de processamento do

algoritmo aqui implementado ainda pode ser melhorado com o uso do meacutetodo

TINN [19] - que foi proposto em Adams[2] - para otimizar a pesquisa do surfel

mais proacuteximo a um ponto que estaacute localizado na regiatildeo de um noacute que conteacutem

surfels Aleacutem disso o trabalho Simple and Efficient Trasversal Methods for

Quadtrees and Octrees de Sara F Frisken [12] citado no capiacutetulo 2 apresenta

uma otimizaccedilatildeo no uso de octrees Outra proposta para melhorar o tempo de

processamento do algoritmo aqui implementado eacute usar a forma de trabalhar com

octrees apresentada neste trabalho

O trabalho de Adams e Dutreacute [2] eacute aplicado apenas a objetos soacutelidos O

nosso plugin portanto aplica-se somente a este tipo de objeto Jaacute o trabalho de

Pauly[3] eacute aplicado tambeacutem a modelos natildeo soacutelidos Apresentamos como

proposta a um trabalho futuro a extensatildeo do algoritmo aqui implementado para

modelos natildeo soacutelidos O surfel pode conter uma informaccedilatildeo adicional que indica

se ele estaacute delimitando um volume ou natildeo Assim pode-se ter um modelo com

ldquopartes soacutelidasrdquo e ldquopartes natildeo soacutelidasrdquo Por exemplo a uniatildeo de um plano com

uma esfera poderia resultar numa esfera com ldquoabasrdquo (seriam as partes do plano

que estariam fora da esfera) O modelo resultado teria uma parte correspondente

a um espaccedilo 3D (esfera) e outra parte que seria uma superfiacutecie 2D posicionada

no espaccedilo 3D sem delimitar algum volume (abas)

Muitos trabalhos podem ser desenvolvidos aplicando-se o modelo por

pontos em animaccedilatildeo jogos visualizaccedilatildeo de terrenos criaccedilatildeo de protoacutetipos etc

considerando-se a eficiecircncia e simplicidade do modelo E mais especificamente

as operaccedilotildees booleanas com pontos podem ser aplicadas para criaccedilatildeo de

cenaacuterios testes de colisotildees e nestes casos a representaccedilatildeo usando octrees

pode ser mais explorada considerando-se o seu potencial de representaccedilatildeo

volumeacutetrica de um objeto

Referecircncias Bibliograacuteficas 73

8 Referecircncias Bibliograacuteficas

[1] MAumlNTYLAuml M An Introduction to Solid Modeling Computer Science Press 1988

[2] ADAMS B DUTREacute P Interactive Boolean Operations on Surfel-

Bounded Solids Proceedings of SIGGRAPH 2003 San Diego USA 2003

[3] PAULY M KEISER R KOBBELT L GROSS M Shape Modeling

with Point-Sampled Geometry SIGGRAPH 2003 Computer Graphics

Proceedings Annual Conference Series ACM Press ACM SIGGRAPH 2003

[4] LEVOY M WHITTED T The Use of Points as Display Primitives

Technical Report TR 85-022 The University of North Carolina at Chapel Hill

Department of Computer Science 1985

[5] PFISTER H ZWICKER M VAN BAAR J GROSS M 2000 Surfels

Surface Elements as Rendering Primitives SIGGRAPH 2000 pp 335ndash342 New

Orleans LA July 23-28 2000

[6] ZWICKER M PFISTER H VAN BAAR J GROSS M Surface

Splatting SIGGRAPH 2001

[7] PAULY M KOBBELT L GROSS M Multiresolution Modeling of

Point-Sampled Geometry CS Techinical Report 378 September 16 2002

[8] CURLESS B New Methods for Surface Reconstruction from Range Images PhD thesis Stanford University 1997

[9] RUSINKIEWICZ S Real-time Acquisition and Rendering of Large 3D Models PhD thesis Stanford University 2001

Referecircncias Bibliograacuteficas 74

[10] AMENTA N BERN M KAMVYSSELIS M A new Voronoi-Based

Surface Reconstruction Algorithm SIGGRAPH 98 Conference proceedings pp

415-421 New York 1998

[11] ZWICKER M PAULY M KNOLL O GROSS M Pointshop 3D an

Interactive System for Point-Based Surface Editing Proceedings of SIGGRAPH 2002 San Antonio TX July 2002

[12] FRISKEN S PERRY R Simple and Efficient Traversal Methods for

Quadtrees and Octrees Journal of Graphics Tools Vol 7 Issue 3 May 2003

[13] CORREcircA W T OLIVEIRA M M Silva C T Wang J

Modeling and Rendering of Real Environments

Revista de Informaacutetica Teoacuterica e Aplicada (Brazilian Journal of Theoretic and Applied Computing) 9(2)127-156 2002

[14] DAVIS J MARSCHNER S GARR M LEVOY M Filling Holes in

Complex Surfaces Using Volumetric Diffusion First International Symposium on 3D Data Processing Visualization Transmission June 2002

[15] RAumlSAumlNEN J Surface Splatting Theory Extensions and Implementation Masterrsquos Thesis Dept of Computer Science Helsinki

University of Technology May 28 2002

[16] PAULY M Point Primitives for Interactive Modeling and Processing of 3D Geometry PhD thesis Federal Institute of Technology (ETH)

of Zurich 2003

[17] HOPPE H DEROSE T DUCHAMP T MCDONALD J

STUELZLE W Surface Reconstruction from Unorganized Points Computer Graphics 26(2)71ndash78 July 1992

[18] ALEXA M BEHR J COHEN-OR D FLEISHMAN S LEVIN D

SILVA C T Point Set Surfaces IEEE Visualization 2001 pp 21ndash28 October

2001

Referecircncias Bibliograacuteficas 75

[19] GREENSPAN M GODIN G TALBOT J Acceleration of Binning

Nearest Neighbor Methods Proceedings of Vision Interface 2000 pp 337-

344

[20] MENCL R Reconstruction of Surfaces from Unorganized Three-Dimensional Point Clouds Dissertation Dortmund Univ 2001

[21] KRIVANEK J Representing and Rendering Surfaces With Points

httpciteseernjneccomkrivanek03representinghtml Acesso em 30 jul

2003

[22] KRISTJANSSON ET AL Approximate Boolean Operations on Free-

form Solids Proceedings of SIGGRAPH 01 2001

Referecircncias Bibliograacuteficas 73

8 Referecircncias Bibliograacuteficas

[1] MAumlNTYLAuml M An Introduction to Solid Modeling Computer Science Press 1988

[2] ADAMS B DUTREacute P Interactive Boolean Operations on Surfel-

Bounded Solids Proceedings of SIGGRAPH 2003 San Diego USA 2003

[3] PAULY M KEISER R KOBBELT L GROSS M Shape Modeling

with Point-Sampled Geometry SIGGRAPH 2003 Computer Graphics

Proceedings Annual Conference Series ACM Press ACM SIGGRAPH 2003

[4] LEVOY M WHITTED T The Use of Points as Display Primitives

Technical Report TR 85-022 The University of North Carolina at Chapel Hill

Department of Computer Science 1985

[5] PFISTER H ZWICKER M VAN BAAR J GROSS M 2000 Surfels

Surface Elements as Rendering Primitives SIGGRAPH 2000 pp 335ndash342 New

Orleans LA July 23-28 2000

[6] ZWICKER M PFISTER H VAN BAAR J GROSS M Surface

Splatting SIGGRAPH 2001

[7] PAULY M KOBBELT L GROSS M Multiresolution Modeling of

Point-Sampled Geometry CS Techinical Report 378 September 16 2002

[8] CURLESS B New Methods for Surface Reconstruction from Range Images PhD thesis Stanford University 1997

[9] RUSINKIEWICZ S Real-time Acquisition and Rendering of Large 3D Models PhD thesis Stanford University 2001

Referecircncias Bibliograacuteficas 74

[10] AMENTA N BERN M KAMVYSSELIS M A new Voronoi-Based

Surface Reconstruction Algorithm SIGGRAPH 98 Conference proceedings pp

415-421 New York 1998

[11] ZWICKER M PAULY M KNOLL O GROSS M Pointshop 3D an

Interactive System for Point-Based Surface Editing Proceedings of SIGGRAPH 2002 San Antonio TX July 2002

[12] FRISKEN S PERRY R Simple and Efficient Traversal Methods for

Quadtrees and Octrees Journal of Graphics Tools Vol 7 Issue 3 May 2003

[13] CORREcircA W T OLIVEIRA M M Silva C T Wang J

Modeling and Rendering of Real Environments

Revista de Informaacutetica Teoacuterica e Aplicada (Brazilian Journal of Theoretic and Applied Computing) 9(2)127-156 2002

[14] DAVIS J MARSCHNER S GARR M LEVOY M Filling Holes in

Complex Surfaces Using Volumetric Diffusion First International Symposium on 3D Data Processing Visualization Transmission June 2002

[15] RAumlSAumlNEN J Surface Splatting Theory Extensions and Implementation Masterrsquos Thesis Dept of Computer Science Helsinki

University of Technology May 28 2002

[16] PAULY M Point Primitives for Interactive Modeling and Processing of 3D Geometry PhD thesis Federal Institute of Technology (ETH)

of Zurich 2003

[17] HOPPE H DEROSE T DUCHAMP T MCDONALD J

STUELZLE W Surface Reconstruction from Unorganized Points Computer Graphics 26(2)71ndash78 July 1992

[18] ALEXA M BEHR J COHEN-OR D FLEISHMAN S LEVIN D

SILVA C T Point Set Surfaces IEEE Visualization 2001 pp 21ndash28 October

2001

Referecircncias Bibliograacuteficas 75

[19] GREENSPAN M GODIN G TALBOT J Acceleration of Binning

Nearest Neighbor Methods Proceedings of Vision Interface 2000 pp 337-

344

[20] MENCL R Reconstruction of Surfaces from Unorganized Three-Dimensional Point Clouds Dissertation Dortmund Univ 2001

[21] KRIVANEK J Representing and Rendering Surfaces With Points

httpciteseernjneccomkrivanek03representinghtml Acesso em 30 jul

2003

[22] KRISTJANSSON ET AL Approximate Boolean Operations on Free-

form Solids Proceedings of SIGGRAPH 01 2001

Referecircncias Bibliograacuteficas 74

[10] AMENTA N BERN M KAMVYSSELIS M A new Voronoi-Based

Surface Reconstruction Algorithm SIGGRAPH 98 Conference proceedings pp

415-421 New York 1998

[11] ZWICKER M PAULY M KNOLL O GROSS M Pointshop 3D an

Interactive System for Point-Based Surface Editing Proceedings of SIGGRAPH 2002 San Antonio TX July 2002

[12] FRISKEN S PERRY R Simple and Efficient Traversal Methods for

Quadtrees and Octrees Journal of Graphics Tools Vol 7 Issue 3 May 2003

[13] CORREcircA W T OLIVEIRA M M Silva C T Wang J

Modeling and Rendering of Real Environments

Revista de Informaacutetica Teoacuterica e Aplicada (Brazilian Journal of Theoretic and Applied Computing) 9(2)127-156 2002

[14] DAVIS J MARSCHNER S GARR M LEVOY M Filling Holes in

Complex Surfaces Using Volumetric Diffusion First International Symposium on 3D Data Processing Visualization Transmission June 2002

[15] RAumlSAumlNEN J Surface Splatting Theory Extensions and Implementation Masterrsquos Thesis Dept of Computer Science Helsinki

University of Technology May 28 2002

[16] PAULY M Point Primitives for Interactive Modeling and Processing of 3D Geometry PhD thesis Federal Institute of Technology (ETH)

of Zurich 2003

[17] HOPPE H DEROSE T DUCHAMP T MCDONALD J

STUELZLE W Surface Reconstruction from Unorganized Points Computer Graphics 26(2)71ndash78 July 1992

[18] ALEXA M BEHR J COHEN-OR D FLEISHMAN S LEVIN D

SILVA C T Point Set Surfaces IEEE Visualization 2001 pp 21ndash28 October

2001

Referecircncias Bibliograacuteficas 75

[19] GREENSPAN M GODIN G TALBOT J Acceleration of Binning

Nearest Neighbor Methods Proceedings of Vision Interface 2000 pp 337-

344

[20] MENCL R Reconstruction of Surfaces from Unorganized Three-Dimensional Point Clouds Dissertation Dortmund Univ 2001

[21] KRIVANEK J Representing and Rendering Surfaces With Points

httpciteseernjneccomkrivanek03representinghtml Acesso em 30 jul

2003

[22] KRISTJANSSON ET AL Approximate Boolean Operations on Free-

form Solids Proceedings of SIGGRAPH 01 2001

Referecircncias Bibliograacuteficas 75

[19] GREENSPAN M GODIN G TALBOT J Acceleration of Binning

Nearest Neighbor Methods Proceedings of Vision Interface 2000 pp 337-

344

[20] MENCL R Reconstruction of Surfaces from Unorganized Three-Dimensional Point Clouds Dissertation Dortmund Univ 2001

[21] KRIVANEK J Representing and Rendering Surfaces With Points

httpciteseernjneccomkrivanek03representinghtml Acesso em 30 jul

2003

[22] KRISTJANSSON ET AL Approximate Boolean Operations on Free-

form Solids Proceedings of SIGGRAPH 01 2001