Marching Cubes   Josué Machado    Erasmo ArturComputação Gráfica II
• Introdução• Motivação• Metodologia  –   Dados  –   Grade de dados  –   Classificação dos cubos  –   Interpolação  –   De...
• Desenvolvido por Lorensen e Cline in 1987• Aproxima uma isosuperfície pela subdivisão de uma  região do espaço numa grad...
• Permitir que um ou mais fenômenos ou  estruturas de interesse em um conjunto de  dados a ser isolado e renderizado• Rápi...
• Dados:  – Formatos suportados: “vol” e “raw”  – Geralmente no formato binário  – Valores armazenados como “unsigned char...
• Grade de dados  – Organiza os dados de forma a gerar voxels virtuais  – Resolução de acordo com o arquivo de dados,    g...
• Classificação dos voxels  – Baseado na implementação de Paul Bourke  – Verifica quais vértices do voxel é maior ou igual...
• Interpolação  – Interpolação linear simples     • p = p1 + (p2 - p1)/(p2.w - p1.w)*(value - p1.w)
• Triangulação  – Determinado a partir de tabela pré-definida  – Originalmente 256 casos  – Removendo-se casos de simetria...
• Triangulação  – A operação & (bitwise and) é realizada entre o    valor obtido pela tabela edgeTable (pelo    cubeIndex)...
– Exemplo:                               triTable[cubeIndex][0] =    0                               triTable[cubeIndex][1...
• Imprimindo  – O resultado do algoritmo é uma conjunto de    triângulos  – Estes podem ser renderizados por métodos    tr...
Name: Skull.volFileSize: 4.553 KBResolution: 68x256x256
• Renderização relativamente rápida• Consumo de memória alto, deve-se ter  cuidado no tratamento da mesma
Próximos SlideShares
Carregando em…5
×

Marching Cubes

272 visualizações

Publicada em

Publicada em: Educação
1 comentário
0 gostaram
Estatísticas
Notas
  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
272
No SlideShare
0
A partir de incorporações
0
Número de incorporações
3
Ações
Compartilhamentos
0
Downloads
1
Comentários
1
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Marching Cubes

  1. 1. Marching Cubes Josué Machado Erasmo ArturComputação Gráfica II
  2. 2. • Introdução• Motivação• Metodologia – Dados – Grade de dados – Classificação dos cubos – Interpolação – Definindo triângulos – Imprimindo• Conclusão
  3. 3. • Desenvolvido por Lorensen e Cline in 1987• Aproxima uma isosuperfície pela subdivisão de uma região do espaço numa grade tridimensional de voxels• O usuário define um limiar que determina a isosuperfície• Cada vértice dos voxels possui um peso• Cada vértice é classificado como maior ou menor que o limiar• Voxels que possuem vértices classificados como maiores e menores faz parte da isosuperfície• Geralmente renderiza uma superfície por vez.
  4. 4. • Permitir que um ou mais fenômenos ou estruturas de interesse em um conjunto de dados a ser isolado e renderizado• Rápida renderização, podendo ocorrer em hardware genéricos
  5. 5. • Dados: – Formatos suportados: “vol” e “raw” – Geralmente no formato binário – Valores armazenados como “unsigned char” – Faixa de valores entre [0, 255] – Armazenados em ordem x, y, z – Provenientes de: http://www.gris.uni- tuebingen.de/edu/areas/scivis/volren/datasets/da tasets.html e http://idav.ucdavis.edu/~okreylos/PhDStudies/Spr ing2000/ECS277/DataSets.html
  6. 6. • Grade de dados – Organiza os dados de forma a gerar voxels virtuais – Resolução de acordo com o arquivo de dados, geralmente 256x256x256 – Cada valor representa o vértice de um(alguns) voxel(s) – Consome considerável quantidade de memória
  7. 7. • Classificação dos voxels – Baseado na implementação de Paul Bourke – Verifica quais vértices do voxel é maior ou igual ao limiar – Utiliza um inteiro “cubeIndex” para armazenar o “estado” do voxel – Para cada vértice n que satisfaz realiza a operação: • cubeIndex |= (1 << n) 0000 0001 1001
  8. 8. • Interpolação – Interpolação linear simples • p = p1 + (p2 - p1)/(p2.w - p1.w)*(value - p1.w)
  9. 9. • Triangulação – Determinado a partir de tabela pré-definida – Originalmente 256 casos – Removendo-se casos de simetria de rotação e reflexão os casos se resumem a 14
  10. 10. • Triangulação – A operação & (bitwise and) é realizada entre o valor obtido pela tabela edgeTable (pelo cubeIndex) e os valores [1, 2, 4, 8,..., 2048] – Se o resultado for 1 a aresta deve ser interpolada • Ex: if(edgeTable[cubeIndex] & 32) intvtx[5] = interpolation(vtx[5], vtx[6], isovalue); – Por fim é utilizado a tabela triTable para definir os pontos(interpolados) de cada triângulo
  11. 11. – Exemplo: triTable[cubeIndex][0] = 0 triTable[cubeIndex][1] = 11 triTable[cubeIndex][2] = 2 triTable[cubeIndex][3] = 8 triTable[cubeIndex][4] = 11 triTable[cubeIndex][5] = 0 triTable[cubeIndex][6] = -1cubeIndex = 1001edgeTable[cubeIndex] = 100100000101
  12. 12. • Imprimindo – O resultado do algoritmo é uma conjunto de triângulos – Estes podem ser renderizados por métodos tradicionais – Utilizado OpenGL® – Normais calculadas a partir de produto vetorial
  13. 13. Name: Skull.volFileSize: 4.553 KBResolution: 68x256x256
  14. 14. • Renderização relativamente rápida• Consumo de memória alto, deve-se ter cuidado no tratamento da mesma

×