english version

CIC 116521
Estudos em Computação Multimídia
prof. Aluizio Arcela

aluno: Danilo Balby Silva Castanheira

Projeto Operações Booleanas de Sólidos


  • As operações booleanas de sólidos
  • Abordagem do problema
  • A implementação em Java 3D
  • Galeria
  • Bibliografia

As operações booleanas de Sólidos

 

As operações booleanas de sólidos (boolean set operations) são formas intuitivas e populares de combinar sólidos baseadas nas operações aplicadas a conjuntos. As três principais são:

  • União (u): O sólido resultante ocupa todo o volume que os sólidos operandos ocupavam.
  • Interseção (n): O sólido resultante ocupa o volume dos sólidos operandos que é coincidente a todos eles.
  • Diferença (-): O sólido resultante ocupa o volume de um dos sólidos operandos que os outros não ocupam.

união, interseção e diferenças

O conceito das operações booleanas de sólidos é muito semelhantes ao das operações aplicadas a conjuntos - toma-se o sólido como um conjunto e seu volume como seu conteúdo, sendo este tratado pelas operações booleanas conforme as operações de conjunto o fariam. Tal conceito, portanto, não corresponde àquele atribuído originalmente às operações booleanas, relativo a operações binárias.

Devido a sua simplicidade e eficiência, as operações booleanas de sólidos foram implementadas na maioria das ferramentas de modelagem 3D atuais, servindo de recurso para a composição de modelos tridimensionais.

 

Abordagem do problema

 

A geometria construtiva de sólidos (CSG) é um modelo de representação concebido em função das operações booleanas de sólidos .Sólidos assim representados são resultantes da aplicação das operações booleanas em sólidos elementares, chamados primitivas. Esferas, cones, cilindros e sólidos retangulares são formas comumente tidas como primitivas. Sólidos CSG são representados em função das primitivas e operações utilizadas na sua composição. A estrutura que representa um sólido CSG é uma árvore em que as operações booleanas utilizadas para construí-lo são hierarquizadas. Tal estrutura é chamada de árvore CSG (CSG tree). Cada operação realizada é representada por um nó interno (não folha) da árvore, e cada primitiva por um nó folha.

árvore csg

A geometria construtiva de sólidos precisa fazer uso de uma outra representação, tida como sua representação interna, para que sólidos assim representados possam ser renderizados. Os dados necessários à visualização de um sólido CSG serão processados a partir de sua árvore. Para a obtenção de tais dados, a árvore pesquisada deve manter informações adequadas para tal, que podem variar dependendo da a representação interna utilizada. Um nó interno deve manter uma referência para a operação booleana a qual se refere.Um nó folha deve manter a estrutura da primitiva correspondente na representação interna, ou então informações a serem utilizadas na construção da mesma, dependendo de qual seja ela. O processamento de uma árvore CSG se dá em geral pela busca em profundidade. Isso porque, pelo uso de tal metodologia, as operações são percorridas na ordem de aplicação das mesmas. Assim, dados relativos às primitivas serão obtidos nos nós folhas e combinações serão realizadas nos nós internos.

Pode-se utilizar a renomada representação b-rep como representação interna de sólidos CSG, o que é uma abordagem bastante robusta e flexível para a representação de sólidos compostos pelo uso das operações booleanas.Quando se faz uso dela, o sólido b-rep correspondente a uma árvore CSG é obtido quando sua renderização é requerida. Ele é construído a partir da combinação direta das primitivas conforme as operações realizadas. Para tal, a árvore será percorrida fazendo-se busca em profundidade, de forma que primitivas em b-rep sejam criadas quando nós folhas forem visitados e os sólido obtidos a partir dos nós descendentes sejam combinados (conforme a operação booleana correspondente) quando nós internos forem visitados.

Para que se possa combinar sólidos b-rep por meio de operações booleanas, é necessário que se disponha de um algoritmo para tal fim. Existem várias abordagens para o problema, sendo uma delas descrita por [LAI86]. O algoritmo nele descrito opera em dois sólidos simultaneamente. Em um primeiro momento, ele subdivide as faces dos dois sólidos de modo que não haja interseção de faces entre eles. Em seguida, as faces de um sólido são classificadas com base na superfície do outro como estando dentro, fora ou na fronteira do mesmo. Dependendo de como as faces foram classificadas, elas serão ou não utilizadas no novo sólido dependendo de qual foi a operação booleana utilizada.

Clique aqui para fazer o download da monografia relativa ao tema, que trata o assunto mais detalhadamente.

 

Implementação em Java3D

 

UnBBoolean

Aplicação baseada na geometria construtiva de sólidos (CSG), combina primitivas pelo uso das operações booleanas de sólidos.

download

 

UnBBoolean's API for Boolean Set Operations

API a ser utilizada por aplicações Java 3D para a aplicação de operações booleanas de sólidos.

download jar

download source

download javadoc

 

Galeria

 

 

pacman

 

cup

 

 

Bibliografia

 

[CAR02] Carrara V. Manual de computação gráfica. 2002. Disponível em: http://www.directnet.com.br/users/val/tutor/tutor.html

[FOL92] Foley J. D. et. al. Van Dam A.; Feiner S. K.; Hughes J. F. Computer graphics - principles and practice. 2. ed. Addison-Wesley, 1992.

[LAI86] Laidlaw D. H.; Trumbore W. B.; Hughes J. F. Constructive solid geometry for polyhedral objects. SIGGRAPH Proceedings, 1986. p.161.

[MAR98] Martin, J. Voxel based CSG modeler. Graz, Austria: Institute for Computer Graphics and Vision, University of Technology, 1998. Disponível em: http://www.icg.tu-graz.ac.at/~Education/Seminar_Projekt/fertig/martin/project.html

[MEL98] Melax S. A simple, fast, and effective polygon reduction algorithm, Game Developer Magazine, 1998. Disponível em www.melax.com/polychop/gdmag.pdf

[PIO] Pio J. L. S. Modelagem de sólidos. Disponível em http://www.dcc.ufmg.br/~josepio/discp/modgeo/modgeo.html

[SUN03] Sunday, D. Geometry Algorithms, 2001-2003. Disponível em http://geometryalgorithms.com/index.htm

[SWO95] Swokowski, E. W. Cálculo com Geometria Analítica. 2. ed. São Paulo: Makron Books do Brasil, 1995. v.2.

[WAT93] Watt A. 3D Computer graphics. 2 ed. Addson-Wesley, 1993.



Universidade de Brasília
Departamento de Ciência da Computação
Laboratório de Computação Multimídia


edição 28/04/2004