300 likes | 365 Views
Interpolating Subdivision for Meshes with Arbitrary T opology [ Zorin et. al ] – SIGGRAPH’96. Rodrigo Braga Pinheiro. Introdução. A superfície a ser subdividida começa com uma malha poligonal original, chamada de “gaiola de controle ”.
E N D
InterpolatingSubdivision for MesheswithArbitraryTopology [Zorinet. al] – SIGGRAPH’96 Rodrigo Braga Pinheiro
Introdução • A superfície a ser subdividida começa com uma malha poligonal original, chamada de “gaiola de controle”. • A partir daí a superfície é subdividida em polígonos adicionais e seus vértices são movidos de acordo com uma série de regras. • As regras variam de um esquema de subdivisão para outro. Estas regras que determinam as propriedades da superfície. Por exemplo: ModifiedButterfly (triângulos), Catmull-Clark(quad).
Continuidade • Uma característica de cada esquema é a sua continuidade. • Esquemas são referenciados como tendo continuidade . , onde n determina quantas derivadas são continuas. • significa que nenhuma derivada é continua. Esta superfície não tem buracos na malha, mas pode apresentar quinas. • significa que a 1a derivada é continua. Esta superfície não tem buracos na malha e não gera quinas quando duas funções se encontram.
Continuidade Não tem continuidade Se encontram, masderivadasdiferentes no ponto p. Se encontram e possuemderivadasiguais no ponto p.
Aproximativo vsInterpolativo • No esquema aproximativo os vértices da gaiola de controle não ficam em cima da superfície limite. • No esquema interpolativo os vértices já criados no passo de subdivisão anterior são mantidos na mesma posição.
Uniforme vsNão-Uniforme • Os esquemas uniformes dividem todas as áreas da gaiola de controle usando as mesmas regras. • Os esquemas não-uniformes podem, por exemplo, subdividir uma aresta de uma maneira e outra aresta de outra maneira.
Triangular vs Quadrilátero • Um esquema pode ter a característica de trabalhar com malhas de triângulos ou de quads.
Avaliação da superfície • Todo algoritmo de subdivisão possui como característica uma “máscara de avaliação”. A máscara define quais os vértices que deverão ser levados em conta para deslocar um novo vértice gerado em determinada subdivisão.
Estacionário vsNão-Estacionário • Se um esquema é estacionário, significa que o mesmo grupo de regras é usado para subdividir a malha em cada passo. • Um esquema não estacionário pode usar um conjunto de regras para o passo i e um conjunto diferente para o passo i + 1.
Vértices Regulares vs Extraordinários • Cada esquema de subdivisão tem sua preferência para a valência de um vértice. Ou seja, o criador do algoritmo de subdivisão define um número considerado ideal para a quantidade de arestas que devem chegam a um vértice. • Um vértice com a valência “preferida” é chamada de vértice regular. Ou seja, se um vértice tem “n” arestas chegando nele e o número de valência escolhido pelo criador for “n”, esse vértice é regular. • Um vértice com uma valência diferente da definida pelo criador é chamado de extraordinário. • Os esquemas podem ou não produzir novos vértices extraordinários em cada subdivisão. Extraordinário Regular
ModifiedButterfly • Nosso esquema escolhido possui continuidade , é interpolativo, uniforme, estacionário, utiliza malhas triangulares, tem como valência 6 os vértices regulares e usa as seguintes máscaras abaixo para subdivisão. Regular Extraordinário
ModifiedButterfly – Subdivisão regular • Ao dividir uma aresta em duas, se os dois vértices da ponta da aresta (pais) forem regulares, a seguinte máscara com os respectivos pesos são usados. • W é o valor de tensão a ser usado. Esse fator representa o quanto a superfície vai ficar próxima da malha de controle.
ModifiedButterfly – Subdivisão Extraordinária • Caso os dois vértices da aresta (pais) sejam extraordinários, calcula-se o peso de acordo com o número de vértices vizinhos e divide-se por dois. • Caso somente um vértice da aresta seja irregular, usa-se somente este vértice para se calcular o peso.
Implementação (Ineficiente) • Primeiro foi feito com uma estrutura de dados convencional para malhas. Um array guardava os vértices e outro array guardava as faces (em grupo de 3 indíces). • Na hora da subdivisão, este algoritmo apresenta complexidade O(F*F) e uma constante alta. Pois cada face deve ser subdividida e para cada subdivisão deve se achar a valência e os vértices vizinhos de cada vértice. Para achar esta valência, deve-se varrer toda a estrutura de dados de novo.
Implementação (Ineficiente) • A tabela abaixo mostra os resultados para a implementação com a estrutura de dados mencionada no slide anterior.
Implementação • Para melhorar o desempenho, foi utilizada uma estrutura de half-edge. Que permite que consultas variadas na malha sejam feitas em tempo constante.
Implementação • Carregamodeloe cria um VertexBuffer e um IndexBuffer. • A partir do VertexBuffer e do IndexBuffer, inicializa-se a estrutura de Half-Edge • Para cadavértice, cria-se um HE_vert • A cada 3 vértices, cria-se umaHE_face e interativamentecomeça a criar as HE_edge
Implementação (Half-Edge) Tetraedro (visão de cima)
Implementação (Half-Edge) Estãosendoavaliadososvérticesda base
Implementação (Half-Edge) Half-edge oposta Half-edge A
Implementação (Half-Edge) D C B • Uma face podeter 3 half-edges, massó é necessário a referênciaparaumadelas. • Um vérticepodeter “n” half-edges (se estiverconectado a “n” arestas), massó é necessário a referênciaparaumadelas.
Implementação (Normais) Média das normais das faces quecontém o vértice
Implementação (Tessellation) • Percorrecada face • Criavértice de cadaarestada face • 12 novas half-edges • Marcavérticesquedeverãotersuas half-edges antigasdeletadas 2 0 1 8 7 6 9 11 4 3 10 5
Implementação (Tessellation) • Para cada um dos vérticescriados, calcula-se as novas half-edges. • Apóstodas as half-edges teremsidoscriadas, é necessáriodeslocarosvértices de acordo com a informação dos seusvérticesgeradores (pais). Regular Extraordinário
Implementação • Algumas consultas usadas através dessa estrutura de dados.
Implementação • Com essa estrutura a complexidade o algoritmo ficou linear. O(F). Abaixo os resultados:
Implementação • O(F*F) vsO(F)
Bibliografia • Zorin, D., P. Schröder, and W. Sweldens. “Interpolating Subdivision for Meshes with Arbitrary Topology.” Siggraph ‘96. pp. 189–192. • Dyn, N., J. A. Gregory, and D. A. Levin. “Butterfly Subdivision Scheme for Surface Interpolation with Tension Control.” ACM Transactions on Graphics. Vol. 9, No. 2 (April 1990): pp. 160–169. • DeRose, T., M. Kass, and T. Truong. “Subdivision Surfaces in Character Animation.” Siggraph ‘98. pp. 85–94. • Dyn, N., S. Hed, and D. Levin. “Subdivision Schemes for Surface Interpolation.” Workshop in Computational Geometry (1993), A. C. et al., Ed.,” World Scientific, pp. 97–118. • Zorin, D. “Stationary Subdivision and Multiresolution Surface Representations.” Ph.D. diss., California Institute of Technology, 1997. (Available at ftp://ftp.cs.caltech.edu/tr/cs-tr-97-32.ps.Z) • Catmull, E., and J. Clark. “Recursively Generated B-Spline Surfaces on Arbitrary Topological Meshes.” Computer Aided Design, 1978. • Halstead, M., M. Kass, and T. DeRose. “Efficient, Fair Interpolation Using Catmull-Clark Surfaces.” Siggraph ‘93. p. 35. • http://www.gamasutra.com/view/feature/3177/subdivision_surface_theory.php?page=2