Suavização de Superfícies

IA841 – Introdução à modelagem de sólidos

Denise Hippler – 002918

 

 

Com base no artigo "Recursively generated B-spline surfaces on arbitrary topological meshes" de E. Catmull e J. Clark, realizou-se a suavização de um hexágono e um tetraedro, modelados anteriormente.

 

O método proposto por Catmull e Clark consiste em subdividir as faces dos sólidos, recalculando os novos pontos das novas faces obtidas, da seguinte forma:

 

A partir de uma malha com seus pontos de controle, como na figura abaixo, faz-se a subdivisão da mesma em 4 novas áreas. Os pontos que se calcula para a subdivisão são:

 

 

1- novos pontos de face

2- novos pontos de borda

3- novos pontos de vértice

 

1. Para se calcular o novo ponto de face, faz-se a média dos vértices originais da face em questão. Assim obtém-se o valor no centro da face. Para a figura acima, o cálculo seria o seguinte:

 

 

2. Para se obter os novos pontos de borda, faz-se a média dos pontos de face (calculados como explicado acima) das faces adjacentes à borda em questão com a média dos vértices antigos. Para o exemplo dado:

 

 

3. Os novos pontos de vértice são calculados a partir da média

 

Onde

Q – média dos novos pontos de face de todas as faces adjacentes ao antigo ponto de vértice.

R – média dos pontos médios de todos os antigos vértices incidentes no antigo ponto de vértice em questão

S – antigo ponto de vértice

 

Para a figura dada, o cálculo seria:

 

 

A implementação foi feita de acordo com o algoritmo acima: todos os novos pontos foram calculados e então desenhados na tela. Uma vez que a intenção era estudar um método de suavização e não aprofundar-se em técnicas de armazenamento de dados, é ainda possível realizar otimização e flexibilização do código escrito.

O objetivo foi cumprido: a proposta de Catmull e Clark foi estudada, entendida e implementada tanto para o cubo quanto para o tetraedro, tendo-se realizado 3 iterações.

 

 

Cubo

 

Usando o algoritmo acima para o cubo, as subdivisões foram feitas como na figura abaixo:

A seguir, as figuras da suavização do cubo geradas pelo programa desenvolvido:

 

Imagem original do cubo

 

                         

Resultado de três iterações

 

Tetraedro

 

Abaixo, um esboço do esquema usado para o tetraedro:

 

A seguir, as figuras geradas pelo programa desenvolvido:

 

Imagem original do tetraedro vista de baixo

 

                       

Resultado de três iterações

 

 

Fonte: solidosPlatonicosSuavizados.cpp


Referência Bibliográfica:

 

E. Catmull and J. Clark, “Recursively generated B-spline surfaces on arbitrary topological meshes”