Sistemes Grafics Interactius


Models de malles de triangles


Existeixen algorismes molt eficients per a la compressió de malles, que optimitzen el temps de transmissió a través de la xarxa (per exemple). Veure Pajarola'99

Tal com hem vist, una malla de triangles es representa habitualment amb dues llistes (o taules): una de triangles i una de vèrtexs. Cada triangle consta de tres punters a vèrtexs (a més d'altres informacions com color..), i cada vèrtex ve representat per les seves tres coordenades (x,y,z).

Un model de núvol de punts és simplement una taula o llista de punts. Cada punt pot tenir informació addicional a part de les seves coordenades, com pot ser el color, el seu vector normal, etc. La diferència bàsica amb una malla de triangles és que aqui no tenim informació sobre la connectivitat entre els punts.

Un model de volum (voxelització) és una taula que conté informació sobre una malla regular de N x N x N cel.les uniformes que divideixen un cub univers a l'espai. Aquesta malla  està formada per cel.les, totes elles del mateix tamany, que estan limitades per arestes i vèrtexs de la malla. Hi ha moltes variants de models de volum (codificació d'un o més objectes a través de la informació dins_objecte_k / fora als vèrtexs de la malla,  codificació d'un o més objectes a través de la informació dins_objecte_k / fora als vèrtexs de la malla i de la informació dels punts de tall i vectors normals entre la superficie dels objectes i les arestes de la malla, etc.). Aquí ens concretarem als models de volum que representen camps escalars i que guarden un valor escalar a cada un dels vèrtexs de la malla: taula [0..N, 0..N, 0..N] de float. Un cas particular dels models de volum que representen camps escalars són els camps de distàncies. En aquest cas, el valor que es guarda a cada vèrtex de la malla es el valor de la distància (amb signe o sense signe) a la superficie de l'objecte que estem representant. En canvi, direm que una voxelització és binaria si la informació a cada vèrtex és del tipus dins/fora.

Podem convertir una malla de triangles en un núvol de punts simplement eliminant la llista de triangles. En el cas de triangles massa grans, pot ser bó fer un mostreig més fí i generar punts dins de cada triangle.

Convertir en canvi un model de punts a una malla de triangles no és tant trivial. Es l'anomenat problema de la reconstrucció. Hi ha diverses solucions, com els algorismes dels Alpha Shapes (i derivats), els algorismes basats en la reducció d'una membrana discreta o els algorismes de Hornung i Kobbelt, basats el el càlcul del tall minimal  del camp de distàncies definit per una crosta discreta. Els núvols de punts es poden operar i visualitzar, vegeu per exemple el projecte PointShop: www.pointshop.com

El càlcul d'un model de volum (camp de distàncies) a partir d'una malla de triangles tampoc és complexe. El que cal és calcular la distància mínima desde cada punt de la malla als triangles de la malla. El càlcul es pot accelerar si es calcula primer la distància a la malla desde els vèrtexs de les cel.les de la malla que contenen triangles de la superficie, i després s'extenen aquests valors als altres vèrtexs de la malla.

Hi ha dos algorismes clàssics per passar d'un model de volum a una malla de triangles: l'algorisme de Marching Cubes i l'algorisme de Dual Contouring. Teniu més informació sobre aquests dos algorismes a l'apartat 2.5 del temari.

Els models de volum moltes vegades tenen interés com a model intermig per a certes operacions:

Algunes referències bibliogràfiques d'ampliació