index for meshes 3d

28
INDICI KD-T REE E OCTREE PER M ESH T ETRAED RICHE 1 ALBERTO MINETTI PAOLA MAIOLINO

Upload: alberto-minetti

Post on 19-Jan-2015

78 views

Category:

Technology


1 download

DESCRIPTION

Other autor: Paola Maiolino

TRANSCRIPT

Page 1: Index for meshes 3d

INDICI KD-TREE E

OCTREE

PER MESH TETR

AEDRICHE

1

ALBERTO MINETTI PAOLA MAIOLINO

Page 2: Index for meshes 3d

CASO 3D: MESH DI TETRAEDRI

2

Page 3: Index for meshes 3d

MESH DI TETRAEDRI● Campi scalari tridimensionali● Molti applicazioni: fisica, chimica, medicina• Analisi elementi finiti, struttura irregolare e dominio di forma

arbitraria• 3D GIS, derivano dalla discretizzazione di geometrie irregolari

● In ogni caso generalmente di grandi dimensioni● Indici spaziali necessari per query

Page 4: Index for meshes 3d

QUERY SU MESH IN 3D

Point location querytrovare il tetraedro t che contente un determinato punto, se il punto si trova su un vertice, un edge o una faccia condivisi da più tetraedri si restituisce solo uno di questi

Window querytrovare l'insieme di tetraedri che intersecano un parallelepipedo

Pochi lavori in letteratura su tecniche per eseguire query spaziali su mesh tetraedriche

4

Page 5: Index for meshes 3d

ALBERI TETRAEDRICI

Struttura dell'indice COME, QUANDO e COSA:●Come va suddiviso il dominio, ogni indice si può basare

indifferentemente su una di queste strutture:● Octree● Kd-tree

●Criteri di suddivisione, regole utilizzate per decidere quando suddividere un blocco

●Cosa memorizzare nelle foglie, cioè le informazioni sulle primitive che contengono

Il “quando” e il “cosa” sono caratterizzanti del singolo indice De Floriani, Fellegara, Magillo; Spatial Indexing on Tetrahedral Meshes; 2010

Page 6: Index for meshes 3d

OCTREE

Analogo del quadtree in tre dimensioni● Suddivisione ricorsiva dei blocchi in otto ottanti● Ogni nodo interno ha esattamente otto figli

Page 7: Index for meshes 3d

KD-TREE

Albero di ricerca binario per punti k-dimensionali● dividono ricorsivamente le regioni in due aree della stessa

grandezza attraverso un iperpiano passante per il centro del blocco● Ogni livello dell’albero è associato a una delle dimensioni

l'iperpiano sarà perpendicolare all'asse della dimensione considerata

Page 8: Index for meshes 3d

COSTRUZIONE DEL KD-TREE

Page 9: Index for meshes 3d

COSTRUZIONE DEL KD-TREE

Page 10: Index for meshes 3d

COSTRUZIONE DEL KD-TREE

Page 11: Index for meshes 3d

COSTRUZIONE DEL KD-TREE

Page 12: Index for meshes 3d

COSTRUZIONE DEL KD-TREE

Page 13: Index for meshes 3d

COSTRUZIONE DEL KD-TREE

Page 14: Index for meshes 3d

COSTRUZIONE DEL KD-TREE

Page 15: Index for meshes 3d

COSTRUZIONE DEL KD-TREE

Page 16: Index for meshes 3d

PR-TETRAHEDRAL TREEEstensione diretta del PR octree o PR kd-tree

suddivisione si basa sui vertici della mesh tetraedrica

I blocchi hanno una capacità massima kv di vertici

• Se il blocco contiene #vertici ≤ kv allora è una foglia• Altrimenti viene suddiviso ricorsivamente

• in due sottoblocchi con i kd-tree• In otto sottoblocchi con gli octree

Ogni nodo foglia memorizza• l'insieme di vertici che contiene• l'insieme di tetraedri che lo intersecano

Page 17: Index for meshes 3d

Suddivisione basata sui tetraedri, non sui verticiStruttura dipendente dall'ordine di inserimentoI blocchi hanno una capacità massima kt di tetraedri• Se il blocco interseca #tetraedri ≤ kt, allora b è una foglia• Altrimenti viene suddiviso una sola volta in 2 o 8

sottoblocchi

Ogni nodo foglia memorizza l'insieme di tetraedri che lo intersecanoal massimo d+kt tetraedri per ogni foglia

d è la profondità della foglia

PMR-TETRAHEDRAL TREE

Page 18: Index for meshes 3d

Suddivisione basata sul numero di vertici contenuti nel blocco b e dal numero di tetraedri che intersecano b

In questo caso abbiamo due valori massimi, kv e kt

1)Se b contiene #vertici ≤ kv e #tetraedri ≤ kt allora b è una foglia2) Se b contiente #vertici ≤ kv ma #tetraedri > kt , b è una foglia sse:

a) Tutti i tetraetri che intersecano b sono incidenti nello stesso vertice all’interno o su una faccia del blocco b

b) Tutti i tetraedri che intersecano b sono incidenti nello stesso edge che interseca o che appartiene ad una faccia del blocco

Ogni nodo foglia memorizza• l'insieme di vertici che contiene• l'insieme di tetraedri che lo intersecano

PM-TETRAHEDRAL TREE

Page 19: Index for meshes 3d

COSTI Mesh tetraedrali codificate attraverso due array

1) Vertici vi : x, y, z2) Tetraedri ti : v1, v2, v3, v4

NV #verticiNN #nodi NL #nodi fogliaNTL #Tot Tetraedri memorizzati nella lista dei nodi fogliaNc #puntatori ai figli, dipende se si utilizzano octree o kd-tree

Page 20: Index for meshes 3d

Dieci mesh tetraedrali con 3K a 300K vertici divise in:

• Mesh regolari

• Mesh semi-regolari con dominio cubico

• Mesh semi-regolari con dominio irregolare

• Mesh irregolari

ESPERIMENTI

Page 21: Index for meshes 3d

ESPERIMENTI

I parametri kv e k

t definiti attraverso analisi del PR-T tree

● Fissato kv, k

t = avg #tetraedri per foglia

Point location: 100 punti generati casualmente all'interno del bounding box della mesh

●Window query: tre insiemi di 100 finestre generate casualmente all'interno della bounding box, divise per dimensione del lato:

● = 5% dimensione massima boundig box● = 10% dimensione massima boundig box● = 25% dimensione massima boundig box

Page 22: Index for meshes 3d

KD-TREE VS OCTREE

Costo spazio kd-tree ≈ 90% octree ● #nodi kd-tree ≈ 70-80% #nodi octree● #foglie kd-tree ≈ 40-50% #foglie di octree

PMR-T > PR-T > PMT

● Profondità kd-tree ≈ 3 volte la profondità octree● #tetraedri per foglia kd-tree ≈ 175% #tetraedri per foglia octree

Point location query kd-tree ≈ 1.5 il tempo sull’octree● #nodi visitati kd-tree ≈ 70% #nodi visitati octree● #test geometrici kd-tree ≈ 1.5 volte #test geometrici octree

Window query kd-tree ≈ 1.3 il tempo sull’octree

Page 23: Index for meshes 3d

I risultati si riferiscono agli indici spaziali implementati con octree: utilizzo di spazio leggermente maggiore esecuzione di query più veloce

Mesh regolari con kv e kt fissati: stesso #vertici stesso #foglie stesso #tetraedri per foglia stessa altezza

I requisiti di spazio e tempo per creare gli indici sono però diversi

Risultati simili su mesh semiregolari con dominio cubico

ANALISI DEGLI ESPERIMENTI

Page 24: Index for meshes 3d

Mesh irregolari, PM-T tree Minor numero di tetraedri per foglia Maggior #nodi, maggior #foglie Maggiore altezza

Mesh semi-regolari con un dominio di irregolare comportamento compreso tra quello ottenuto su mesh semi-regolari e completamente irregolari

Tempi di costruzione: Il PM-T tree >> PR-T treedipende dalla configurazione della mesh

ANALISI DEGLI ESPERIMENTI

Page 25: Index for meshes 3d

ANALISI DEGLI ESPERIMENTI

PMR-T tree minor numero di test geometrici per window query, il più efficiente per finestre grandi

PR-T tree visita minor numero di nodi, maggior #test geometrici

Media nodi visitati

Numero medio di test geometrici

Tempo esecuzione

Point location 15-40 <150 0,5 millisecondi

Window queries 20-130 12 volte minore dimensione output

Qualche millisecondo

Page 26: Index for meshes 3d

INFLUENZA DELLA CAPACITÀSULLE PERFORMANCE PM-T TREEAv

g. n

odi v

isita

ti

Kv /#vertici

Aumentando la capacità delle foglie, la profondità dell'albero diminuisce, quindi visiteremo meno

nodi, ma avremo maggiori test geometrici da eseguire

Page 27: Index for meshes 3d

#tes

t geo

met

rici f

issa

to k

T

Kv /#vertici

INFLUENZA DELLA CAPACITÀSULLE PERFORMANCE PM-T TREE

Necessità di trovare un buon tradeoff tra

l'efficenza di attraversamento

dell'albero e il #test geometrici da eseguire

Page 28: Index for meshes 3d

CONCLUSIONI

Valutazione finale degli esperimenti rispetto a: Uso della memoria Performance query spaziali tempi di calcolo per la costruzione

PMR-T tree: ha in generale una migliore performance nelle query un moderato overhead di memoria

Nonostante sia insertion order dependent non si sono ottenuti alberi sbilanciati

Vengono preferiti gli octree rispetto ai kd-tree Notevole guadagno nelle performance Occupazione di poco maggiore